2017-09-05 52 views
0

我的应用程序需要切换之间的两个(或更多个)在输入流,同时只有一个输出(你能想到作为流多路复用器)。来自输入的帧将被解码,然后由于覆盖物而再次重新编码。调整PTS之间切换时流

所以安排AVFrame PTS我编码帧之前计算的间隔。但是,当我在RTMP流和MP4文件之间切换时,每次切换时视频都会延迟一点。所以,在第三个交换机上,结果流不同步。

如果我失去了一些东西我有编码之前修改框架上,我不知道。我也是关于在输出中为帧创建一个独立的PTS,但我不知道如何创建它。

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

回答

0

我发现根本原因。

问题是MP4文件。使用这种类型的文件(出于某种原因),视频和音频数据包以bug串(即:20个视频数据包,然后20个音频数据包)读取,而在RTMP流上更像(2个视频,然后是2个音频数据包)。 所以问题阅读完所有的一堆前的开关被应用于(即:20个视频包和10个音频数据包),因此该点产生的数据流是不同步的,无论你以后做什么了。

溶液我实现等待直到解码的帧的类型是比前一个不同。然后是当我执行开关。