Audio ffmpeg:concat视频和音频文件

Audio ffmpeg:concat视频和音频文件,audio,video,ffmpeg,Audio,Video,Ffmpeg,如果某些文件是带音频的视频文件,而某些文件是仅音频文件,是否可以连接多个文件。最终结果应如下所示: -------------------------------------------------------- |###(v/a)### | ### (a) ### | ### (a) ### | ###(v/a)### | -------------------------------------------------------- v/a: video + audio a : audi

如果某些文件是带音频的视频文件,而某些文件是仅音频文件,是否可以连接多个文件。最终结果应如下所示:

--------------------------------------------------------
|###(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结合起来。结果将是一个视频文件,其中最后一帧刚刚冻结,但音频仍在播放。我想达到相同的结果,无论是冻结最后一帧或只是一个黑色的帧。这可能吗

对于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
是音频文件的持续时间。

视频的分辨率和帧率是多少?@Mulvya我不知道分辨率。所有视频块肯定都会有相同的块,但任务之间可能会有所不同。帧率也是如此。所以我想,我希望ffmpeg只采用其他视频块所拥有的任何内容。如果这是不可能的,并且我需要明确指定帧率和/或分辨率,我确信我可以通过ffprobe手动读取这些参数。顺便说一下,我发现帧率和持续时间似乎都不重要。无论如何,ffmpeg将拉伸视频以适应音频的长度。那么,如果每次只指定r=20:d=1,会有什么负面影响吗?