2014-11-06 60 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