FFmpeg连接视频,最终输出没有音频

4
我在ffmpeg中有以下命令可以在视频开头添加1秒的黑色帧,但是输出视频中会丢失原始视频的音频。如何调整命令以确保原始音频与最终输出保持一致,或者更好地说,在开头有1秒的“空白”音频,以匹配新的输出视频。
ffmpeg -i originalvideo -f lavfi -i color=c=black:s=1920x1080:r=25:sar=1/1 -filter_complex "[0:v] setpts=PTS-STARTPTS [main]; [1:v] trim=end=1,setpts=PTS-STARTPTS [pre]; [pre][main] concat=n=2:v=1:a=0 [out]" -map "[out]" finaloutputvideo.mp4
1个回答

2

您需要生成或添加音频以与黑色视频相关联,因为每个连接的部分都需要相同数量的视频和音频流。

ffmpeg \
-i originalvideo \
-f lavfi -i color=c=black:s=1920x1080:r=25:sar=1/1:d=1 \
-t 1 -f lavfi -i anullsrc=channel_layout=stereo:sample_rate=44100 \
-filter_complex \
"[0:v]setpts=PTS-STARTPTS[mainv]; \
 [0:a]asetpts=PTS-STARTPTS[maina]; \
 [1:v][2:a][mainv][maina]concat=n=2:v=1:a=1[v][a]" \
-map "[v]" -map "[a]" -movflags +faststart output.mp4
  • 由于它们的时间戳从0开始,因此您可以消除(a)setpts过滤器对颜色和anullsrc源过滤器的影响。

  • 您可以避免使用trim过滤器,因为您可以为每个过滤器设置持续时间。

  • 对于anullsrc持续时间的-t值只需要小于或等于黑色视频的持续时间:concat过滤器将自动用静音填充其余部分。

  • 使用anullsrc时,请确保匹配主视频的正确通道布局和音频采样率;否则,concat可能会自动选择一个“常见”的布局和速率,这可能不是您想要的。


1
说句实话,我发现将空音频添加到我的文件中并进行简单的concat比打出这样的东西要容易得多。 - Hendy
2
@Hendy 这也是一种有效的方法,特别是如果不需要过滤并且用户只想使用concat demuxer进行连接并避免重新编码。但是,如果所有片段都需要额外的过滤,则需要重新编码,并且可以使用concat filter在一个命令中完成所有操作。这只取决于用户需求。该网站上有许多使用两种方法的示例。 - llogan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接