gpt4 book ai didi

video - ffmpeg concat 产生 DTS 乱序错误

转载 作者:行者123 更新时间:2023-11-28 21:39:38 30 4
gpt4 key购买 nike

我正在关注有关如何 concatenate 的文档ffmpeg 文件,但在此过程中我看到很多警告,输出视频在第一个 block 后停止,但音频继续播放。

这是我用来连接文件的命令:

ffmpeg -f concat -i mylist.txt -c copy output.webm

这是我看到的警告:

[concat @ 0x7fee11822a00] DTS 0 < 2500 out of order
[webm @ 0x7fee11011000] Non-monotonous DTS in output stream 0:0; previous: 2500, current: 0; changing to 2500. This may result in incorrect timestamps in the output file.

视频文件来自外部来源。我目前的解决方案是将每个文件分别重新编码为 mp4,然后将它们连接在一起,然后将整个文件重新编码回 webm。这当然会花费大量时间,但我找不到其他解决方案。

最佳答案

FFMPEG concatenate 的所有视频都应该有匹配的编码、fps 等,否则你会得到意想不到的结果。我想,如果您的视频来自不同的来源,那么不重新编码就很难过关。我不得不查看很多解决方案,有效的解决方案会建议将您的视频转换为相同的中间格式,然后运行您的 concat 命令。

虽然这种方法确实有效,但并不能解释哪里出了问题。 Gyan's comment answers it .

首先,使用 ffprobe 测试你的输入文件:ffprobe video1.mp4

你会得到这样的输出。

视频1.mp4:

Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 1556 kb/s, 24 fps, 24 tbr, 12288 tbn, 48 tbc (default)

视频2.mp4:

Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 6454 kb/s, 24 fps, 24 tbr, 90k tbn, 48 tbc (default)

尽管我的 FPS 和其他参数相同,但我得到了 58 秒的 3.1 fps 视频,而不是预期的 8 秒 @24fps 视频。这里的重要参数是时基 tbn ,即 12288 tbn90k tbn。Concatenate 不会重新编码输入视频,只会使用第一个输入视频的时基来打乱所有后续视频。

更改第一个文件的时基:

ffmpeg -i video1.mp4 -video_track_timescale 90000 video1_fixed.mp4

现在连接产生正确的结果:

( echo file 'video2.mp4' & echo file 'video1_fixed.mp4' ) | ffmpeg -y -protocol_whitelist file,pipe -f concat -safe 0 -i pipe: -c copy output.mp4

关于video - ffmpeg concat 产生 DTS 乱序错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31691943/

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