gpt4 book ai didi

ffmpeg - 在流之间切换时调整 PTS

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

我的应用程序需要在输入的两个(或多个)流之间切换,而只有一个输出(您可以将其视为流多路复用器)。来自输入的帧被解码,然后由于覆盖的东西再次重新编码。

因此,为了安排 AVFrame PTS,我在编码帧之前计算了一个间隔。但问题是当我在 RTMP 流和 MP4 文件之间切换时,每次切换时视频都会延迟一点。因此,在第三次切换时,结果流不同步。

我不知道我是否遗漏了一些我必须在编码之前在框架上修改的东西。我也想为输出的帧创建一个独立的 PTS,但我不知道如何创建它。

输入流可能有不同的 FPS、时基或编解码器,应用程序必须能够处理所有这些。

最佳答案

我发现了根本原因。

问题是 MP4 文件。使用这种类型的文件(出于某种原因),视频和音频数据包以错误束的形式读取(即:20 个视频数据包,然后是 20 个音频数据包),而在 RTMP 流上更像是(2 个视频数据包,然后是 2 个音频数据包)。
所以问题是正在应用开关之前 读取所有数据包(即:20 个视频数据包和 10 个音频数据包),因此在此之后,无论您做什么,生成的流都不同步。

我实现的解决方案等到解码帧的类型与前一个不同。然后是我执行切换的时候。

关于ffmpeg - 在流之间切换时调整 PTS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46055623/

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