我想连接两个 MP4 文件而无需重新编码。两个文件具有相同的特征。
根据一些论坛的建议,我使用以下命令:
"C:\Program Files\ffmpeg\bin\ffmpeg.exe" -hide_banner -loglevel info -f concat -safe 0 -i "R:\VTS_01_1.mp4" -c copy "R:\JointVideoFile.mp4"
这里我稍微修改了一下。论坛建议创建一个临时文件,其中包含要连接的文件的名称列表。我只有两个文件,不想创建临时文件,所以我通过直接指定文件名稍微修改了这个命令。
所以我希望 FFMPEG 采取一个现有的JointVideoFile.mp4
并将一个现有的附加VTS_01_1.mp4
到其末尾。
执行上述命令会出现错误:
[concat @ 00000000004b08c0] 第 4 行:未知关键字“ftypisom”
R:\VTS_01_1.mp4:处理输入时发现无效数据
ftypisom
是我的 MP4 文件中的第一个文本标签。
FFMPEG 在使用时需要一个文本列表文件concat
,并将 MP4 文件中的字符解释为文本。
在没有列表的情况下如何使其工作?
答案1
如果两个视频确实具有相同的特征(例如帧宽度、高度、速率),则类似这样的方法应该有效:
ffmpeg -safe 0 -f concat list.txt -c:v copy -c:a copy output.mp4
其中 list.txt 应如下所示:
file 'video_1.mp4"
file 'video_2.mp4"
使用一行代码:
echo file 'JointVideoFile.mp4'>>List.txt&echo file 'VTS_01_1.mp4'>>List.txt& ffmpeg -safe 0 -f concat -i List.txt -c copy output.mp4& del /q List.txt