使用FFmpeg进行合并、转码、录制

应用实践 | 📅 2020-09-20 | ffmpeg

FFmpeg

A complete, cross-platform solution to record, convert and stream audio and video.

主页:https://ffmpeg.org/

Github: https://github.com/FFmpeg/FFmpeg

下述一些简单操作,如果需要比较精细的配置或者其他操作,请自行参阅文档:https://ffmpeg.org/documentation.html

合并音视频

若源文件数量较少,则直接使用命令进行合并

ffmpeg -i "concat:file1.mp4|file2.mp4|..." -c copy output.mp4

这样使用单行命令进行合并,将在当前工作目录产生 output.mp4 文件


如果有非常大量的音频或者视频文件,则可以使用这个方法:

首先,将待合并的文件路径写入文本文件,比如说,

创建 filelist.txt 文件,内容格式如下:

file '/path/to/file1.mp4'
file '/path/to/file2.mp4'
file '/path/to/file3.mp4'

然后使用下述命令进行合并:

ffmpeg -f concat -i filelist.txt -c copy output.mp4

需要注意的是,上述文件内若使用相对路径,则应是相对于 filelist.txt 文件的路径,而非相对于 ffmpeg

转码

转码的话,很简单:

ffmpeg -i source.ts output.mp4

录制直播

如果直播有 rtmp 地址,那么可以简单的使用下述命令:

ffmpeg -i rtmp://xxx.xxx.xxxx/ -c copy output.ts

将直播流输出到 output.ts 。这个命令会一直运行直到直播结束。

结束后,会获得从录制开始之时到直播结束的完整视频。

需要注意的是,这个命令可以中断,将会获得一个没有文件尾的输出文件。但是输出文件依然可以被 ffmpeg 转码,但是会获得一个警告。