如何连接两个视频?

如何连接两个视频?

我有 2 个视频,它们的分辨率、编解码器等可能都不同。

第一个是原始视频,第二个是结尾。

我需要使用 linux cli 命令将它们连接在一起。

我尝试这样做:

ffmpeg -safe 0 -f concat -segment_time_metadata 1 -i test.txt -vf select=concatdec_select -af aselect=concatdec_select,aresample=async=1 out.mp4

但是,只有当我将结尾放在文本文件的开头时,它才能正常工作,否则会出现几秒钟的黑屏而不是结尾。

答案1

确保两个都视频有音频:

ffmpeg \
-i "original video.mp4" \
-i "outro.mov" \
-filter_complex "\
[0:v]scale=1280:720[scaled_v0]; \
[1:v]scale=1280:720[scaled_v1]; \
[scaled_v0][0:a][scaled_v1][1:a]\
concat=n=2:v=1:a=1[v][a]" \
-map "[v]" -map "[a]" -c:v libx264 -c:a aac concatenated.mp4

如果一个视频(例如“outro.mov”)没有音频流,ffmpeg 将抛出错误 Stream specifier ':a' in filtergraph description matches no streams.

如果你对处理音频等的更高级方法感兴趣,请查看我的详细说明

答案2

如果您想以大多数播放器可以播放的方式连接两个不同分辨率和/或编解码器的视频,则必须将其重新编码为通用分辨率和编解码器。

我建议您分别对它们进行重新编码,然后使用该concat格式将它们合并,但您也可以一次性连接并重新编码。在这种情况下,您需要将编解码器(-c:v-c:a)添加到命令行,并根据需要添加(与编解码器相关的)参数。

相关内容