音视频日记 - ffmpeg 命令行

ffmpeg 是一个基于 ffmpeg 库的经典转码程序,几乎被所有的知名系统、软件工具、服务器后台等静默使用,通过命令行启动转码,这里主要以命令行语法讲解为主。

查看 ffmpeg 帮助命令

在学习任何一个命令行程序前,首先要知道如何查看对应命令的帮助,在一般情况下,linux 平台下程序的帮助信息是通过 程序名 -h 的方式进行输出,ffmpeg 亦是如此。

精简帮助命令:ffmpeg –h 更多帮助命令:ffmpeg –h long 完整帮助命令:ffmpeg –h full

ffmpeg 的语法格式

ffmpeg 的语法格式如下所示

ffmpeg [输入源参数] -i [输入 URL] [输出参数] [输出 URL]

其中 [输入源参数] 和 [输出参数] 的语法格式为:
[options] [value(可以省略)] ... ...

示例 1:

ffmpeg -f mpegts -i "http://AVTestFile/AVNormal/52" -vcodec x264Encoder -r 15 -b:v 256000 -vf scale=800:600 -an -copyts -y "51.avi"
* 输入源使用 mpegts 容器 http 协议的 URL
* -vcodec x264Encoder 使用 x264Encoder 视频编码器
* -r 15 视频帧率 15 fps
* -b:v 256000 视频编码码率 265Kbps
* -vf scale=800:600 使用视频滤器 scale 进行缩放到 800x600 尺寸
* -an 禁用音频
* -copyts 时间戳拷贝
* -y 覆盖输出文件
* 输出 URL 默认使用 file 协议,输出到文件 51.avi

示例 2:

ffmpeg -i BaiCaoYuan.mp4 -ss 00:00:19 -t 00:06:48 -dcodec copy -b:v 4000K -y cut.mp4
* 输入源使用 file 协议,为 BaiCaoYuan.mp4 文件
* -dcodec copy 使用与源视频一致的编解码器
* -b:v 4000K 视频编码码率 4000Kbps
* -y 覆盖输出文件
* 输出 URL 默认使用 file 协议,输出到文件 cut.mp4

常用参数

参数 示例 说明
-t duration -t 00:06:48 设置处理时间,格式为hh:mm:ss
-ss position -ss 00:00:19 设置起始时间,格式为hh:mm:ss
-b:v bitrate -b:v 256000 设置视频码率
-b:a bitrate -b:a 320000 设置音频码率
-r fps -r 25 设置帧率
-s wxh -s 800x600 设置帧大小,格式为WxH
-c:v codec -c:v h264 设置视频编码器
-c:a codec -c:a aac 设置音频编码器
-ar freq -ar 44100 设置音频采样率

参考资料

  • [1] 基于 FFmpeg + SDL 的视频播放器的制作 -- 雷霄骅
  • [2] 多媒体编程开发之 FFmpeg 基础库