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) 个答案