关于ffmpeg的知识点

来源:互联网 发布:手机装windows系统上网 编辑:程序博客网 时间:2024/05/22 00:47

公司最近App需要有短视频录制拍摄的功能,因为不是一个纯视频的App,所以涉及到视频的录制还有播放,也都是引用的第三方框架,视频拍摄使用的Vcamera的开源框架,使用这个框架一方面不收费(嗯,是的,不收费,老板就很开心啊~)另一方面,视频拍摄最重要的就是压缩解码速度一定要快,拍个3分钟的视频让用户等上个几分钟后,你自己能忍吗?你会想用吗?如果回答no,那用户估计卸载一次你的产品就不会再装第二次了,毕竟现在同类竞品的App太多了。视频播放呢,使用的是B站开放的SDK-ijkPlayer,大家都知道啊,B站本来就是做视频起家的,B站不仅给各位小伙伴带来各种福利,二次元童鞋的命根子啊,而且还给广大程序员带来福音--免费提供视频SDK,免费!!!干程序员的都知道,即使是开放的SDK,也不可能让你拿来直接用滴,当然你必须对原有的东西再进行封装:UI啊、工具类啊....接下来的博客我会再写我对它们的封装(哈哈,我就是这么任性)

说了这么多相声桥段,步入正题吧。今天跟大家交流下跟视频相关的ffmpeg相关的一些知识点(PS:如有不正确的地方,可以在下方留言,可以使劲喷,但是别说脏话,暴露了自己的素质就不好喽,毕竟我们是有高素质的农民工)

FFmpeg

FFmpeg是一套可以用来纪录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的(向这帮程序员哥哥致敬奋斗)。
多媒体视频处理工具FFmpeg有非常强大的功能包括视频采集功能、视频格式转换、视频抓图、给视频加水印等。

项目组成

libavcodec:用于各种类型声音/图像编解码 libavutil:包含一些公共的工具函数libavformat:包含多种多媒体容器格式的封装、解封装工具libswscale:用于视频场景比例缩放、色彩映射转换libpostproc:用于后期效果处理libavdevice:用于音视频数据采集和渲染等功能的设备相关ibswresample:用于音频重采样和格式转换等功能libavfilter:包含多媒体处理常用的滤镜功能
FFmpeg的官方网站:http://ffmpeg.com
编译好的windows可用版本的下载地址: http://ffmpeg.zeranoe.com/builds/
该网站中的FFmpeg分为3个版本:Static、Shared、Dev 
前两个版本可以直接在命令行中使用,他们的区别在于:Static里面只有3个应用程序:ffmpeg.exe,ffplay.exe,ffprobe.exe,每个exe的体积很大,相关的Dll已经被编译到exe里面去了。Shared里面除了3个应用程序:ffmpeg.exe,ffplay.exe,ffprobe.exe之外,还有一些Dell,比如说avcodec-54.dell之类的。Shared里面的exe体积很小,他们在运行的时候,到相应的Dell中调用功能。Dev版本是用于开发的,里面包含了库文件xxx.lib以及头文件xxx.h,这个版本不包含exe文件。
打开系统命令行界面,切换到ffempeg所在的目录,就可以使用这3个应用程序了。
ffmpeg:该项目提供的一个工具,可用于格式转换、解码或电视卡即时编码等。
ffprobe:ffprobe是用于查看文件格式的应用程序。
ffplay:是一个简单的播放器,使用ffmpeg库解析和解码,通过SDL显示。
ffsever:一个HTTP多媒体即时广播串流服务器。

命令集

ffmpeg 命令集举例
1、获取视频的信息
ffmpeg -i video.avi
2、将图片序列合成视频
ffmpeg -f image2 -i image%d.jpg video.mpg
上面的命令会把当前目录下的图片(名字如:image1.jpg、image2.jpg.等...)合并成video.mpg
3、将视频分解成图片序列
ffmpeg -i video.mpg image%d.jpg
上面的命令会生成image1.jpg、image2.jpg...支持的图片格式有:PGM、PPM、PAM、PGMYUV、JPEG、GIF、PNG、TIFF、SGI
4、为视频重新编码以适合ipod/iphone上播放
ffmpeg -i source_video.avi input -avcodec aac -ab 128kb -vcodec mpeg4 -b 1200kb -mbd 2 -flags +4mv+trell -aic 2 -cmp 2 -subcmp2 -s 320*180 -title X final_video.mp4
说明:
* 源视频:source_video.avi
* 音频编码:aac
* 音频位率:128kb/s
* 音频编码:mpeg4
* 视频位率:1200kb/s
* 视频尺寸:320*180
* 生成的视频:final_video.mp4
5、从视频抽出声音,并保存为MP3
ffmpeg -i source_video.avi -vn -ar 44100 -ac 2 -ab 192 -f mp3 sound.mp3
说明:
* 源视频:source_video.avi
* 音频位率:192kb/s
* 输出格式:mp3
* 生成的声音:sound.mp3
6、将wav文件转成Mp3
ffmpeg -i son_origine.avi -vn -ar 44100 -ac 2 -ab 192 -f mp3 son_final.mp3
7、将.avi视频转成.mpg
ffmpeg -i video_origine.avi video_finale.mpg
8、将.mpg转成.avi 
ffmpeg -i video_origine.mpg video_finale.avi
9、将.avi转成gif动画(未压缩) 
ffmpeg -i video_origine.avi gif_anime.gif
10、合成视频和音频 
ffmpeg -i son.wav -i video_origine.avi video_finale.mpg
11、将.avi转成.flv 
ffmpeg -i video_origine.avi -ab 56 -ar 44100 -b 200 -r 15 -s 320x240 -f flv video_finale.flv
12、将.avi转成dv 
ffmpeg -i video_origine.avi -s pal -r pal -aspect 4:3 -ar 48000 -ac 2 video_finale.dv 
或者: 
ffmpeg -i video_origine.avi -target pal-dv video_finale.dv
13.将.avi压缩成divx 
ffmpeg -i video_origine.avi -s 320x240 -vcodec msmpeg4v2 video_finale.avi
14.将Ogg Theora压缩成Mpeg dvd 
ffmpeg -i film_sortie_cinelerra.ogm -s 720x576 -vcodec mpeg2video -acodec mp3 film_terminate.mpg
15.将.avi压缩成SVCD mpeg2 
NTSC格式: 
ffmpeg -i video_origine.avi -target ntsc-svcd video_finale.mpg 
PAL格式: 
ffmpeg -i video_origine.avi -target pal-svcd video_finale.mpg
16、将.avi压缩成VCD mpeg2 
NTSC格式: 
ffmpeg -i video_origine.avi -target ntsc-vcd video_finale.mpg 
PAL格式: 
ffmpeg -i video_origine.avi -target pal-vcd video_finale.mpg
17、多通道编码 
ffmpeg -i fichierentree -pass 2 -passlogfile ffmpeg2pass fichiersortie-2
18、从flv提取mp3 
ffmpeg -i source.flv -ab 128k dest.mp3

原创粉丝点击