FFmpeg常用命令

作为一个图像算法工程师,有时候也要处理视频。再经过算法处理之前,可能要对视频进行抽帧、格式转换、裁剪、合并等操作,虽然网络上有很多视频处理软件,但是要么是要收费、要么是不好用。其实作为程序员,可以用鼎鼎大名的开源工具FFmpeg来做视频的编辑处理。

在我看来,FFmpeg是最强大的视频编辑处理开源工具,没有之一。其官网是http://ffmpeg.org/,在官网可以下载FFmpeg的源码,也可以下载编译好的、直接运行的可执行文件,大多数人只需要用它就行了,这里是windows 64位可执行文件下载地址。

下载将得到一个压缩包,目录结构如下:

1576120598946520.png

bin里面有三个可执行文件,分别是ffmpeg.exe、ffplay.exe和ffprobe.exe,doc目录是html文档,打开其中的ffmpeg.html就可以查看ffmpeg.exe的使用方法。ffmpeg的功能非常多,本文列举一些常用的命令。执行命令的方法是:以windows为例,进入到上图的bin目录中,按住Shift键,点击鼠标右键,选择“在此处打开命令窗口”,然后输入命令,回车,即可执行。

1. 格式转换

命令:ffmpeg -i testfile.mp4 -codec copy testfile.flv

命令解析:

-i,指定输入视频路径;

-codec copy,填上该参数可以省去解码和编码的过程,使视频格式转换更快,如果加上这个参数时有报错,可以把这个参数去掉;

testfile.flv,是输出视频路径;

2. 视频裁剪

命令:ffmpeg -i testfile.mp4 -ss 00:01:10 -t 10 testfile_v2.mp4

命令解析:

-i,指定输入视频路径;

-ss,表示拖动到某一个时间位置,格式为:时:分:秒;

-t,表示限制从输入文件读取数据的时长,单位为 s;

testfile_v2.mp4,输出视频路径;

3. 视频合并

命令:ffmpeg -f concat -i input.txt testmerge.mp4

命令解析:

-f,指定输入或输出的file format,concat是format的其中一种,表示合并

-i,指定数据的数据源,input.txt 指定了两个文件的路径,格式为 file absolutefilepath,如下所示:

file D: estfile_1.mp4

file D: estfile_2.mp4

testmerge.mp4,输出视频路径;

常见问题解决

(1)视频格式转换时,报错Too many packets buffered for output stream

原因是有些视频数据有问题,导致视频处理过快,容器封装时队列溢出,解决办法是增加容器封装队列大小,比如在命令之后增加一个参数

-max_muxing_queue_size 1024

作者:ModelArts大赛

原文地址:https://www.cnblogs.com/2020-zhy-jzoj/p/13165086.html