视频转码最简单的命令就是
ffmpeg -i ${infile} -vcodec ${outcodec} ${outfile}
其中 -vcodec 后面是编码格式,可以用 ffmpeg -codecs 来查看
ffmpeg -codecs
输出结果参见:/d/file/computer/soft/others/2025-06-13/d48bf8d4c9a740f4cbd11d9fa238bea8.txt
注意第三行 .E.... = Encoding supported,说明带有 E 标志的才是支持转出的编码格式。
我们也可以通过一些附加选项指定转换规则:
比如:
ffmpeg -i 01.mp4 -s 640x480 -b:v 500k -vcodec h264 -r 29.97 -ab 48k -ac 2 out.mp4
视频剪切可以认为是一种特殊的视频转换过程,不过它不需要经过 decode 再 encode 的过程,而是可以直接进行流拷贝。
使用ffmpeg进行流拷贝可以通过 -c copy 参数来进行。
既然是视频剪切当然就需要指定剪切的开始位置和结束位置了,可以使用 -ss 参数指定开始位置,使用 -t 参数指定截取时间长度,或者使用 -to 参数指定截取的结束位置
比如下面命令截取从30秒开始,持续10秒钟的内容
ffmpeg -i input.wmv -ss 00:00:30.0 -c copy -t 10 output.wmv
视频合并要求被合并的文件格式是一样的,否则需要先将它们转换成统一的中间格式。然后将将所有要合并的视频,每个视频一行,将视频文件的路径存在一个列表文件中,然后执行
ffmpeg -f concat -i ${listfile} -c copy ${outfile}
通过设置 video filter 来实现,比如
加速四倍:
ffmpeg -i TheOrigin.mp4 -vf "setpts=0.25*PTS" UpTheOrigin.mp4
四倍慢速:
ffmpeg -i TheOrigin.mp4 -vf "setpts=4*PTS" DownTheOrigin.mp4
