2016-05-16 62 views
5

我對如何在Android中播放和錄製視頻/音頻感到困惑。我真的不明白在什麼情況下應該使用這些類:我什麼時候有MediaRecorder VS MediaCodec + MediaMuxermediacodec vs mediaplayer and mediarecorder

- 要玩:MediaPlayer的VS MediaExtractor + MediaCodec

- 要記錄使用一個還是其他? 對不起,如果這是一個重複的問題,我認爲這應該是一個普遍的問題,但我還沒有找到任何。

回答

5

如果高級接口(MediaPlayer,MediaRecorder)可以做你想做的事(從系統支持的顯示格式或從攝像機錄製視頻到視頻文件中播放視頻),你應該只使用他們,這將會簡單得多。

如果你想做更多的自定義事項,當你注意到你想要修改的鏈條的部分隱藏在高級類中時,你會想要轉到較低級別的類。例如。適用於MediaExtractor;如果您只想從文件中提取數據包但不解碼並立即顯示/播放它們,則需要使用MediaExtractor。如果您想接收來自系統本身不支持的其他來源的數據包,則您需要使用不帶MediaExtractor的MediaCodec。同樣,如果您想錄制除照相機以外的其他內容,或者將輸出寫入MediaRecorder支持的文件以外的位置,則需要直接使用MediaCodec而不是MediaRecorder。

另請注意,高級別類還可以通過更新的API版本進行改進並獲得更大的靈活性,從而允許您執行以前需要您手動使用較低級別類的內容。例如。在Android 5.0中,MediaRecorder具有從自定義Surface進行錄製的功能,可讓您錄製自己渲染的視頻,而不僅僅是相機。從4.3開始,這可以通過使用較低級別的類來實現。