FFmpeg主要由三个部分构成。
第一部分是四个不同作用的工具软件,分别是:
ffmpeg.exe:音视频转码器;
ffplay.exe:简单的音视频播放器;
ffserver.exe:流媒体服务器;
ffprobe.exe:简单的多媒体码流分析器。
第二部分是为各个不同平台编译完成的库,开发者可以根据自己的需求使用这些库开发自己的应用程序。
libavcodec:包含音视频编码器和解码器;
libavutil:包含多媒体应用常用的简化编程的工具,如随机数生成器、数据结构、数学函数等。
libavformat:包含多种多媒体容器格式的封装、解封装工具;
libavfilter:包含多媒体处理常用的滤镜功能;
libavdevice:用于音视频数据采集和渲染等功能的设备相关;
libswscale:用于图像缩放、色彩空间、像素格式转换等功能;
libswresample:用于音频重采样和格式转换等功能。
第三部分是整个工程的源代码,无论是编译好的可执行程序还是SDK,都是使用这些源代码进行编译的。FFmpeg的源代码由C语言实现,主要在Linux平台进行开发
常用参数
通用参数
-f fmt: 指定格式(音频或者视频格式)。
-i filename: 指定输入文件名。
-y: 覆盖已有文件。
-t duration: 指定时长。
-fs limit_size: 设置文件大小的上限。
-ss limit_size: 从指定的时间(单位为秒)开始,也支持[-]hh:mm:ss[.xxx]格式
-re: 代表按照帧率发送。在作为推流工具的时候一定要加入该参数,否则ffmpeg会按照最高速率向流媒体服务器不停地发送数据。
-map: 指定输出文件的流映射关系。如果没有-map选项,则ffmpeg采用默认的映射关系。
视频参数
-b: 指定比特率(bit/s),ffmpeg是自动使用VBR的,若指定了该参数则使用平均比特率。
-bitexact: 使用标准比特率。
-vb: 指定视频比特率(bit/s).
-r rate: 帧速率(fps)。
-s size: 指定分辨率(320 * 320)
-aspect aspect: 设置视频长宽比(4:3,16:9或者1.3333,1.7777)。
-croptop size: 设置顶部切除尺寸(in pixels)。
-cropbottom size: 设置顶底切除尺寸(in pixels)。
-cropleft size: 设置左切除尺寸(in pixels)。
-cropright size: 设置右切除尺寸(in pixels)。
-padtop size: 设置顶部补齐尺寸(in pixels)。
-padbottom size: 设置底部补齐尺寸(in pixels)。
-padleft size:设置左补齐尺寸(in pixels)。
-padright size:设置右补齐尺寸(in pixels)。
-padcolor color: 补齐带颜色(000000-FFFFFF)。
-vn: 取消视频的输出。
-vcode codec: 强制使用codec编解码方式('copy'代表不进行重新编码)。
音频参数
-ab: 设置比特率(单位为bit/s)。
-aq quality: 设置音频质量(指定编码)。
-ar rate: 设置音频采样率(单位为Hz)。
-ac channels: 设置声道数。1就是单声道,2就是立体声。
-an: 取消音频轨。
-acodec codec: 指定音频编码('copy'代表不做音频转码)。
-vol volume: 设置录制音量大小(默认256)<百分比>。