2014-11-06 58 views
1

我是新来的,对Android开发很新鲜。这里是我的第一个问题。Android MediaCodec和MediaExtractor用于播放视频和音频

我使用MediaExtractorMediaCodec播放mp4文件,包含视频和音频。现在,我得到了一对视频提取器/编解码器和另一对用于音频的提取器/编解码器,实现了两个独立的线程。

我的问题是:我可以只用一个提取器和两个编解码器来同步播放视频和音频吗?

如果是,该怎么办?当我用extractor.selecttrack一个,其他将无法正常工作...

非常感谢。

感谢大家的回答。我已经弄明白了。我犯了一个错误,提取器只能选择一个轨道。实际上,您可以选择多个轨道,而extractor.advance()将随后一次读取每个轨道。

+0

为什么不使用MediaPlayer? http://developer.android.com/reference/android/media/MediaPlayer.html – 2014-11-06 10:38:58

+0

@KenWolf。 bcz我需要用MediaPlayer没有的更多功能来设计我自己的播放器。 – 2014-11-06 23:59:15

+0

在你的问题中,你说'extractor.selecttrack'不适用于其他曲目。你能否详细说明什么不起作用? – Ganesh 2014-11-07 00:19:31

回答

2

感谢大家的回答。我已经弄明白了。我犯了一个错误,提取器只能选择一个轨道。实际上,您可以选择多个轨道,而extractor.advance()将随后一次读取每个轨道。

1

是的,您应该只使用一个提取器,并且每个轨道只使用一个MediaCodec实例。

在这种情况下,您应该使用MediaExtractor.selectTrack,您应该只读取来自所有轨道的数据包,并且为每个返回的数据包选择将哪个MediaCodec传递给它。

+0

如何实现这样的球员?我的意思是同步播放视频和音频。谢谢。 – 2014-11-07 00:01:18

+0

我编辑了答案,以澄清你不应该在这种情况下使用selectTrack。 – mstorsjo 2014-11-07 06:31:16