有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何将传输流PTS与MediaSync一起使用?

我正在尝试使用Android将录制的DVB传输流呈现给Android TV(索尼)。用于同步的媒体类和MediaSync。这里不使用ExoPlayer

传输流包含几个音频和视频基本流,但我正在过滤一个视频流(MPEG-2)和一个音频流(MPEG-L2音频)。由于视频和音频都呈现良好,因此编解码器似乎配置正确

目前,只有当我将PTS 0传递给MediaCodec.queueInputBuffer时,这才有效,但随后视频和音频不同步

如果我通过相应的PES PTS(转换为µs),则视频和音频会出现口吃。当我关闭视频并传递音频PTS而不是0时,也会发生这种情况。(视频PTS前进了-7200、3600、14400步,音频PTS前进了8640步。)

只要PTS不变,有效负载数据就会填充到输入缓冲区中。然后将缓冲区排队,并获取下一个可用缓冲区。输出缓冲区的处理与MediaSync示例中的描述完全相同

MediaSync对象是在找到第一个音频PES数据包时创建的。这里,设置了音轨,并在1.0开始播放。稍后,当找到第一个视频I帧时,将创建视频编解码器,并将SurfaceView的曲面传递给MediaSync对象

因此,我的问题是如何使用PTS和媒体编解码器a)平滑地呈现两个流,并可能b)进行a/V同步

非常感谢 Gee72


共 (0) 个答案