ffmpeg将两个具有相同纵横比的视频文件连接在一起,fps仍然会提供丢失的输出

ffmpeg将两个具有相同纵横比的视频文件连接在一起,fps仍然会提供丢失的输出,ffmpeg,encode,Ffmpeg,Encode,我需要连接两个具有以下编码的剪辑 Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 320x240 [SAR 4:3 DAR 16:9], 100 kb/s, 23.98 fps, 23.98 tbr, 19184 tbn, 47.96 tbc (default) Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1

我需要连接两个具有以下编码的剪辑

Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 320x240 [SAR 4:3 DAR 16:9], 100 kb/s, 23.98 fps, 23.98 tbr, 19184 tbn, 47.96 tbc (default)

Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 320x240 [SAR 1:1 DAR 4:3], 261 kb/s, 23.98 fps, 23.98 tbr, 48k tbn, 47.95 tbc (default)
使用普通的
concat
方法会破坏第二个剪辑视频流

ffmpeg -y -f concat -safe 0 -i filesname.txt -vcodec copy -acodec copy 1.mp4
我需要对第一个剪辑应用什么样的编码才能使它容易地和第一个剪辑连接

注: 第一个剪辑的规格如下,我使用以下命令对其进行编码,以匹配第二个剪辑的规格

Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 320x240 [SAR 4:3 DAR 16:9], 61 kb/s, 23.98 fps, 23.98 tbr, 19184 tbn, 47.96 tbc (default)

ffmpeg -i 1_original.mp4 -c:v libx264 -preset slow -profile:v baseline -vf scale=320x240 -r 23.98 -c:a aac -ar 44100 1.mp4
问题 您的输入不同,但要连接,时基必须相同。第二个输入的帧速率为24000/1001。(不幸的是,控制台输出显示了一个舍入值,但您可以参考
ffprobe-v error-show_streams input.mp4
)。但是,您将另一个视频重新编码为23.98的帧速率。这导致时间刻度差异为19184 tbn与48k tbn

解决方案 使用
-r 24000/1001
(或
-r ntsc胶片
):

  • 我用替换了缩放过滤器以修复纵横比差异,尽管这种差异不会停止concat解复用器

  • 如果您的帧速率实际上相同,但时间刻度不同,那么您可以使用
    -c copy
    -video\u track\u timescale
    来替代remux。在本网站上有几个使用此选项的示例

ffmpeg -i 1_original.mp4 -c:v libx264 -preset slow -profile:v baseline -vf setsar=1 -r 24000/1001 -c:a aac -ar 44100 1.mp4