Video 如何连接ffmpeg中具有不同属性的视频?

Video 如何连接ffmpeg中具有不同属性的视频?,video,ffmpeg,concatenation,Video,Ffmpeg,Concatenation,我正在尝试合并一些视频,但时间戳错误 我试图让它们在相同的尺寸、帧速率、采样率下都相等,并且在没有音轨的情况下添加一个音轨 ffmpeg -i input1.mp4 -y -i audio1.mp3 -c:v copy -c:a aac -shortest output1.mp4 ffmpeg -i input2.mp4 -y -i audio2.mp3 -c:v copy -c:a aac -shortest output2.mp4 ffmpeg -y -safe 0 -f concat -i

我正在尝试合并一些视频,但时间戳错误

我试图让它们在相同的尺寸、帧速率、采样率下都相等,并且在没有音轨的情况下添加一个音轨

ffmpeg -i input1.mp4 -y -i audio1.mp3 -c:v copy -c:a aac -shortest output1.mp4
ffmpeg -i input2.mp4 -y -i audio2.mp3 -c:v copy -c:a aac -shortest output2.mp4
ffmpeg -y -safe 0 -f concat -i list.txt -c copy output.mp4
错误消息:

Non-monotonous DTS in output stream 0:0; previous: 8052684, current: 4127401; changing to 8052685. This may result in incorrect timestamps in the output file.

因为我假设您的输入是任意的,所以我建议使用而不是,因为您无论如何都需要执行过滤,以将所有内容整合到一组公共参数中,并且您可以在一个命令中完成所有操作

制作所有视频1280x720,1:1合成孔径,每秒30帧,yuv420p 使用宽度x高度/分辨率、纵横比、帧速率、色度子采样和串联/连接滤波器

ffmpeg-i1.mp4-i2.mp4-i3.mp4-filter_complex\ [0:v]比例=1280:720:force_original_aspect_ratio=减少,pad=1280:720:-1:-1,setsar=1,fps=30,格式=yuv420p[v0]; [1:v]比例=1280:720:force_original_aspect_ratio=减少,pad=1280:720:-1:-1,setsar=1,fps=30,格式=yuv420p[v1]; [2:v]比例=1280:720:原力\纵横比=减小,pad=1280:720:-1:-1,设定值=1,fps=30,格式=yuv420p[v2]; [v0][0:a][v1][1:a][v2][2:a]concat=n=3:v=1:a=1[v][a]\ -map[v]-map[a]-c:v libx264-c:a aac-movflags+faststart output.mp4 如上所述,但也以48000采样率处理立体声音频 添加了采样率和通道布局过滤器

ffmpeg-i1.mp4-i2.mp4-i3.mp4-filter_complex\ [0:v]比例=1280:720:force_original_aspect_ratio=减少,pad=1280:720:-1:-1,setsar=1,fps=30,格式=yuv420p[v0]; [1:v]比例=1280:720:force_original_aspect_ratio=减少,pad=1280:720:-1:-1,setsar=1,fps=30,格式=yuv420p[v1]; [2:v]比例=1280:720:原力\纵横比=减小,pad=1280:720:-1:-1,设定值=1,fps=30,格式=yuv420p[v2]; [0:a]a格式=采样率=48000:频道布局=立体声[a0]; [1:a]a格式=采样率=48000:频道布局=立体声[a1]; [2:a]a格式=采样率=48000:频道布局=立体声[a2]; [v0][a0][v1][a1][v2][a2]浓度=n=3:v=1:a=1[v][a]\ -map[v]-map[a]-c:v libx264-c:a aac-movflags+faststart output.mp4 带水印 ffmpeg-i1.mp4-i2.mp4-i3.mp4-ilogo.png-filter_complex\ [0:v]比例=1280:720:force_original_aspect_ratio=减少,pad=1280:720:-1:-1,setsar=1,fps=30,格式=yuv420p[v0]; [1:v]比例=1280:720:force_original_aspect_ratio=减少,pad=1280:720:-1:-1,setsar=1,fps=30,格式=yuv420p[v1]; [2:v]比例=1280:720:原力\纵横比=减小,pad=1280:720:-1:-1,设定值=1,fps=30,格式=yuv420p[v2]; [0:a]a格式=采样率=48000:频道布局=立体声[a0]; [1:a]a格式=采样率=48000:频道布局=立体声[a1]; [2:a]a格式=采样率=48000:频道布局=立体声[a2]; [v0][a0][v1][a1][v2][a2]浓度=n=3:v=1:a=1[vid][a];[vid][3]叠加=W-W-5:H-H-5[v]\ -map[v]-map[a]-c:v libx264-c:a aac-movflags+faststart output.mp4 有关更多信息,请参阅和

为没有音频的输入添加静音虚拟音频 如果其中一个输入不包含音频,则过滤器用于提供静音虚拟音频。这可能是必需的,因为要连接的所有段必须具有相同数量和类型的流。换句话说,你不能把没有音频的视频转换成有音频的视频。因此,可以添加无声音频,如本例所示:

ffmpeg-i1.mp4-i2.mp4-i3.mp4-t0.1-f lavfi-i anullsrc=channel\u layout=stereor:sample\u rate=48000-filter\u complex\ [0:v]比例=1280:720:force_original_aspect_ratio=减少,pad=1280:720:-1:-1,setsar=1,fps=30,格式=yuv420p[v0]; [1:v]比例=1280:720:force_original_aspect_ratio=减少,pad=1280:720:-1:-1,setsar=1,fps=30,格式=yuv420p[v1]; [2:v]比例=1280:720:force_original_aspect_ratio=减少,pad=1280:720::-1:-1:-1,setsar=1,fps=30,格式=yuv420p[v2]; [0:a]a格式=采样率=48000:频道布局=立体声[a0]; [2:a]a格式=采样率=48000:频道布局=立体声[a2]; [v0][a0][v1][3:a][v2][a2]concat=n=3:v=1:a=1[v][a]\ -map[v]-map[a]-c:v libx264-c:a aac-movflags+faststart output.mp4
注意:保持-t 0.1不变:anullsrc的持续时间只需要短于相关视频输入的持续时间。concat过滤器将自动扩展静音音频,以匹配相关视频输入的长度。

因为我假设您的输入是任意的,所以我建议使用,而不是,因为您无论如何都需要执行过滤,以将所有内容整合到一组通用参数中,并且您可以这样做一切都在一个命令中

制作所有视频1280x720,1:1合成孔径,每秒30帧,yuv420p 使用宽度x高度/分辨率、纵横比、帧速率、色度子采样和串联/连接滤波器

ffmpeg-i1.mp4-i2.mp4-i3.mp4-filter_complex\ [0:v]比例=1280:720:force_original_aspect_ratio=减少,pad=1280:720:-1:-1,setsar=1,fps=30,格式=yuv420p[v0]; [1:v]比例=1280:720:force_original_aspect_ratio=减少,pad=1280:720:-1:-1,setsar=1,fps=30,格式=yuv420p[v1]; [2:v]比例=1280:720:force_original_aspect_ratio=减小,pad=12 80:720:-1:-1,setsar=1,fps=30,format=yuv420p[v2]; [v0][0:a][v1][1:a][v2][2:a]concat=n=3:v=1:a=1[v][a]\ -map[v]-map[a]-c:v libx264-c:a aac-movflags+faststart output.mp4 如上所述,但也以48000采样率处理立体声音频 添加了采样率和通道布局过滤器

ffmpeg-i1.mp4-i2.mp4-i3.mp4-filter_complex\ [0:v]比例=1280:720:force_original_aspect_ratio=减少,pad=1280:720:-1:-1,setsar=1,fps=30,格式=yuv420p[v0]; [1:v]比例=1280:720:force_original_aspect_ratio=减少,pad=1280:720:-1:-1,setsar=1,fps=30,格式=yuv420p[v1]; [2:v]比例=1280:720:原力\纵横比=减小,pad=1280:720:-1:-1,设定值=1,fps=30,格式=yuv420p[v2]; [0:a]a格式=采样率=48000:频道布局=立体声[a0]; [1:a]a格式=采样率=48000:频道布局=立体声[a1]; [2:a]a格式=采样率=48000:频道布局=立体声[a2]; [v0][a0][v1][a1][v2][a2]浓度=n=3:v=1:a=1[v][a]\ -map[v]-map[a]-c:v libx264-c:a aac-movflags+faststart output.mp4 带水印 ffmpeg-i1.mp4-i2.mp4-i3.mp4-ilogo.png-filter_complex\ [0:v]比例=1280:720:force_original_aspect_ratio=减少,pad=1280:720:-1:-1,setsar=1,fps=30,格式=yuv420p[v0]; [1:v]比例=1280:720:force_original_aspect_ratio=减少,pad=1280:720:-1:-1,setsar=1,fps=30,格式=yuv420p[v1]; [2:v]比例=1280:720:原力\纵横比=减小,pad=1280:720:-1:-1,设定值=1,fps=30,格式=yuv420p[v2]; [0:a]a格式=采样率=48000:频道布局=立体声[a0]; [1:a]a格式=采样率=48000:频道布局=立体声[a1]; [2:a]a格式=采样率=48000:频道布局=立体声[a2]; [v0][a0][v1][a1][v2][a2]浓度=n=3:v=1:a=1[vid][a];[vid][3]叠加=W-W-5:H-H-5[v]\ -map[v]-map[a]-c:v libx264-c:a aac-movflags+faststart output.mp4 有关更多信息,请参阅和

为没有音频的输入添加静音虚拟音频 如果其中一个输入不包含音频,则过滤器用于提供静音虚拟音频。这可能是必需的,因为要连接的所有段必须具有相同数量和类型的流。换句话说,你不能把没有音频的视频转换成有音频的视频。因此,可以添加无声音频,如本例所示:

ffmpeg-i1.mp4-i2.mp4-i3.mp4-t0.1-f lavfi-i anullsrc=channel\u layout=stereor:sample\u rate=48000-filter\u complex\ [0:v]比例=1280:720:force_original_aspect_ratio=减少,pad=1280:720:-1:-1,setsar=1,fps=30,格式=yuv420p[v0]; [1:v]比例=1280:720:force_original_aspect_ratio=减少,pad=1280:720:-1:-1,setsar=1,fps=30,格式=yuv420p[v1]; [2:v]比例=1280:720:force_original_aspect_ratio=减少,pad=1280:720::-1:-1:-1,setsar=1,fps=30,格式=yuv420p[v2]; [0:a]a格式=采样率=48000:频道布局=立体声[a0]; [2:a]a格式=采样率=48000:频道布局=立体声[a2]; [v0][a0][v1][3:a][v2][a2]concat=n=3:v=1:a=1[v][a]\ -map[v]-map[a]-c:v libx264-c:a aac-movflags+faststart output.mp4
注意:保持-t 0.1不变:anullsrc的持续时间只需要短于相关视频输入的持续时间。concat过滤器将自动扩展静音音频以匹配相关视频输入的长度。

请不要使用指向外部站点的链接。把所有相关信息都放在问题本身!请不要使用指向外部站点的链接。把所有相关信息都放在问题本身!嗨@llogan,如果我需要在上面添加第四个视频,[v0][a0][v1][a1][v2][a2]concat=n=3:v=1:a=1[v][a]会有什么变化?非常感谢@Philban[v0][a0][v1][a1][v2][a2][v3][a3]concat=n=4:v=1:a=1[v][a]谢谢您的帮助!我现在得到一个关于不匹配流的错误。我将打开一个单独的问题,以便粘贴到命令和错误日志中。嗨@llogan,如果我需要在上面添加第四个视频,那么[v0][a0][v1][a1][v2][a2]concat=n=3:v=1:a=1[v][a]会有什么变化?非常感谢@Philban[v0][a0][v1][a1][v2][a2][v3][a3]concat=n=4:v=1:a=1[v][a]谢谢您的帮助!我现在得到一个关于不匹配流的错误。我将打开一个单独的问题,以便粘贴到命令和错误日志中。