当需要合并两个视频而又不希望重新编码时,可以使用 FFmpeg 的 concat
协议。这种方法适用于格式完全相同的视频文件,比如帧率、分辨率以及编码格式等都需要相同。
步骤如下:
-
准备视频文件
首先确保两个视频文件格式完全一致。可以使用ffprobe
命令查看视频信息。 -
创建文件列表
在一个文本文件中列出所有要合并的视频文件的路径,每个路径占一行,并以file
关键字开头。例如,创建一个名为filelist.txt
的文件,内容如下:shellfile 'video1.mp4' file 'video2.mp4'
-
使用 FFmpeg 进行合并
执行下面的命令来合并视频:bashffmpeg -f concat -safe 0 -i filelist.txt -c copy output.mp4
这里
-f concat
指定使用 concat 协议,-safe 0
允许使用绝对路径或非常规字符,-i filelist.txt
指定输入文件列表,-c copy
用于指示 FFmpeg 在合并过程中复制原始数据流而不进行重新编码。
示例:
假设您有两个视频 clips,clip1.mp4
和 clip2.mp4
,都是相同的 H.264 编码,720p 分辨率。你可以按照以下步骤进行:
-
检查格式
ffprobe clip1.mp4
和ffprobe clip2.mp4
-
创建文件列表
编辑filelist.txt
,加入:shellfile 'clip1.mp4' file 'clip2.mp4'
-
执行 FFmpeg 命令
在命令行中输入:bashffmpeg -f concat -safe 0 -i filelist.txt -c copy merged_video.mp4
这样,merged_video.mp4
将是合并后的视频,且不涉及重新编码,保持了原有视频质量。这种方法的优点是处理速度快,不会降低视频质量。但缺点是所有视频文件必须在编码、容器格式、帧率等方面完全匹配。如果存在不匹配,可能需要先转换为相同格式。
2024年6月29日 12:07 回复