是否可以连接多个文件,如果某些文件是带有音频的视频而有些只是音频。最终结果应如下所示:
--------------------------------------------------------
|###(v/a)### | ### (a) ### | ### (a) ### | ###(v/a)### |
--------------------------------------------------------
v/a: video + audio
a : audio only (blank screen)
我尝试使用以下命令执行此操作:
ffmpeg
-i chunk1.mp4
-i chunk2.m4a
-i chunk3.mp4
-filter_complex "[0:v:0] [0:a:0] [1:v:0] [1:a:0] [2:v:0] [2:a:0] concat=n=3:v=1:a=1 [v] [a]"
-map "[v]" -map "[a]" -strict -2 result.mp4
所以我尝试仅使用输入1([1:a:0]
)中的音轨,但不幸的是,我收到此错误消息:
Stream specifier ':v:0' in filtergraph description [0:v:0] [0:a:0] [1:v:0] [1:a:0] [2:v:0] [2:a:0] concat=n=3:v=1:a=1 [v] [a] matches no streams.
我认为这必须以某种方式实现,因为我还可以将大型音频文件和小型视频与ffmpeg结合使用。结果将是一个视频文件,其中最后一帧只是冻结但音频仍在播放。我想用冻结的最后一帧或简单的黑帧来获得相同的结果。这可能吗?
答案 0 :(得分:2)
对于Q中给出的命令,请使用
ffmpeg -i chunk1.mp4 -i chunk2.m4a -i chunk3.mp4 -filter_complex \
"color=black:s=WxH:r=N:d=T[1v]; \
[0:v:0] [0:a:0] [1v] [1:a:0] [2:v:0] [2:a:0] concat=n=3:v=1:a=1 [v] [a]"
-map "[v]" -map "[a]" -strict -2 result.mp4
其中WxH
是视频的分辨率,N
帧速率,T
音频文件的持续时间。