ffmpeg-concat滤波器正在丢弃第二个视频的前一秒



con.txt

file one.mp4
file two.mp4

命令

ffmpeg -f concat -safe 0 -i con.txt out.mp4

生成不包含CCD_ 2的第一秒的视频。

ffprobe two.mp4

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'two.mp4':
Metadata:
major_brand     : isom
minor_version   : 512
compatible_brands: isomiso2avc1mp41
Duration: 00:00:15.20, start: 0.000000, bitrate: 1644 kb/s
Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 428x640, 1644 kb/s, 10 fps, 10 tbr, 10240 tbn, 20 tbc (default)
Metadata:
handler_name    : VideoHandler
vendor_id       : [0][0][0][0]

我在尝试另一种串联方法时遇到了一个有趣的错误(两个视频都没有音频btw(

ffmpeg -i one.mp4 -i two.mp4 -filter_complex "[0:v] [1:v] concat=n=2:v=1:a=0 [v]" -map "[v]" out.mp4

0:v0参数(大小428x640,SAR 0:1(中的输入链路与0:v0的参数(428x640、SAR 1576:1575(中的相应输出链路不匹配

如何在不丢失任何帧的情况下将这两个视频依次连接在一起?

concat过滤器希望串连的流具有相同的属性(大小、样本纵横比(SAR(、pix_fmt等(。错误消息表示SAR不匹配。您可以在concat过滤器的上游插入setsar过滤器来解决此问题。假设这些视频有正方形像素(1576:1575非常接近1:1(,我们可以这样做:

ffmpeg -i one.mp4 -i two.mp4 
-filter_complex "[0:v]setsar=1:1[L0]; 
[1:v]setsar=1:1,fps=30[L1]; 
[L0][L1]concat=n=2:v=1:a=0 [v] " 
-map "[v]" out.mp4

如果你遇到其他错误,你需要准备更多的过滤器来调节你的流,使其相互匹配。

编辑:在第二个视频(每秒10帧(中添加fps滤镜,以匹配第一个(每秒30帧(

最新更新