2012-11-16 36 views
4

我想使用MediaCodec來編碼來自相機的數據(原因是:它比較低級,因此希望比使用MediaRecorder更快)。使用Camera.PreviewCallBack,我將來自攝像機的數據捕獲到字節緩衝區中,以便將其傳遞到MediaCodec對象。Mime類型的Android相機PreviewFormat

要做到這一點,我需要填寫一個MediaFormat對象,如果我知道來自攝像頭的數據的MIME代碼,這將非常容易。我可以使用setPreviewFormat()選擇這種格式,選擇te ImageFormat -class中聲明的常量之一。

因此,我的問題是:由於ImageFormat類提供了不同的選項來設置相機預覽格式,相應的MIME類型代碼是什麼?

非常感謝。

+1

這在Android 4.3中變得更容易。請參閱http://bigflake.com/mediacodec/#CameraToMpegTest – fadden

+0

順便說一下,使用低級別API可能會帶來更好的性能,這是一種迷信。相反的情況很可能是這樣的:不是發送像素,而是使用MediaRecorder將相機硬件「短路」到編碼器硬件。 –

+0

糾正我,如果我錯了。 Aegonis提到:「我想使用MediaCodec對來自相機的數據進行編碼(原因是:它比低級別的MediaPlayer更加低級,所以希望能比使用MediaRecorder更快)。」但是我有一個印象,Camera Preview的fps比原始相機輸出原始數據。 – user1914692

回答

6

請參閱https://gist.github.com/3990442的示例。您應該設置您想要從編碼器中獲得的MIME類型,即「video/avc」

+0

感謝這個例子,他們很難找到。那麼MediaCodec如何確定offerEncoder參數的格式? (即在我的情況下來自相機的數據) – gleerman

+0

我還有一些問題。它似乎更適合創建一個單獨的主題:http://stackoverflow.com/questions/13458289/encoding-h-264-from-camera-with-android-mediacodec。你介意看看它嗎?謝謝 – gleerman