gpt4 book ai didi

ffmpeg 连接两个具有相同纵横比的视频文件,而 fps 仍然会丢失输出

转载 作者:行者123 更新时间:2023-12-04 22:59:17 24 4
gpt4 key购买 nike

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

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

最佳答案

问题

您的 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 替换了刻度过滤器修复纵横比差异,尽管差异不会停止 concat demuxer。
  • 如果您的帧速率实际上是相同的,但时间尺度不同,那么您可以使用 -c copy 重新混合。和 -video_track_timescale .在这个网站上有几个使用这个选项的例子。
  • 关于ffmpeg 连接两个具有相同纵横比的视频文件,而 fps 仍然会丢失输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54137228/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com