2017-08-31 158 views
0

我有一組位圖的,需要被編碼爲H264視頻,位圖轉換爲RGBA字節[]發送給MediaCodec,但以下除外:java.nio.BufferOverflowException確實的Android MediaCodec支持RGBA編碼

我想知道Android MediaCodec是否支持RBGA編碼?

有誰知道如何解決這個問題?

或另一種解決方案,以實現編碼到H.264?

謝謝!

+0

在這個問題的第一評論https://stackoverflow.com/questions/26463556/why-doesnt-the-decoder-of-mediacodec-output-a-unified-yuv-formatlike- yuv420p提到:「你可以使用glReadPixels()從輸出表面提取RGB像素」也許它回答你的問題。 – ziMtyth

+0

謝謝,我不能使用Surface,所以它不工作 –

回答

0

您可以將其加載到OpenGL ES的紋理和渲染到編碼器的輸入表面MediaCodecInfo類。 (也許這將有助於:https://github.com/google/grafika

另一種選擇是轉換爲編碼器支持的顏色格式。 (使用libyuv爲例)

-1

see在Android開發者頁面支持RGBA 32位,看看這個類,如果它可以幫助:)

+0

謝謝,MediaCodecInfo.CodecCapabilities.COLOR_Format32bitABGR8888是這種顏色格式,但有些手機硬件不支持這種顏色格式 –