【问题标题】:ffmpeg concatenate two video files with same aspect ratio and fps still gives missed up outputffmpeg 连接两个具有相同纵横比的视频文件,而 fps 仍然会丢失输出
【发布时间】:2019-01-10 21:33:56
【问题描述】:

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

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

【问题讨论】:

    标签: ffmpeg encode


    【解决方案1】:

    问题

    您的timebase 因输入而异,但时基必须相同才能连接。第二个输入的帧速率为 24000/1001。 (很遗憾控制台输出显示的是四舍五入的值,不过你可以参考ffprobe -v error -show_streams input.mp4)。但是,您将另一个视频重新编码为 23.98 的帧速率。这导致了 19184 tbn 与 48k tbn 的时间尺度差异。

    解决方案

    使用-r 24000/1001(或alias-r ntsc-film):

    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
    
    • 我用setsar 替换了缩放过滤器以修复纵横比差异,尽管差异不会停止连接分离器。

    • 如果您的帧速率实际上是相同的,但时间尺度不同,那么您可以使用 -c copy-video_track_timescale 重新混合。在这个网站上有几个使用这个选项的例子。

    【讨论】:

      猜你喜欢
      • 2023-04-08
      • 2020-02-19
      • 2014-06-20
      • 1970-01-01
      • 2021-06-20
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      相关资源
      最近更新 更多