首發:成功解決MediaCodec中decoder超過720出錯的問題

  吾有兩個安卓代碼,用於安卓MediaCodec測試,非常完善:

  • MediaCodec。對安卓的MediaCodec進行了封裝,使用非常簡單。
  • CodecTest。自編自解。可以任意改變分辨率。

  然而,有一個怪事,解碼超過720時即卡死。今天網上查找範例,找到了一個能夠在720解碼的範例:

https://github.com/pingu342/android-app-mediacodectest

  區別在哪裏?吾將decoder部分分離出來,發現多了一個csd0參數。吾將此參數打印出來,然後整合到自己的代碼中,終於能夠正確運行了。大體代碼如下:

    private final byte[] csd0 = 
        {
            0x0, 0x0, 0x0, 0x1, 0x67, 0x42, 0x0, 0x29, (byte)0x8d, (byte)0x8d, 0x40, 0x28, 0x2, (byte)0xdd, 0x0, (byte)0xf0, (byte)0x88, 0x45, 0x38,
            0x0, 0x0, 0x0, 0x1, 0x68, (byte)0xca, 0x43, (byte)0xc8 
        };


    decoder = MediaCodec.createDecoderByType("video/avc");
    MediaFormat format = MediaFormat.createVideoFormat("video/avc", Width, Height);
    format.setByteBuffer("csd-0", ByteBuffer.wrap(csd0));
    decoder.configure(
                    format,
                    mSurface,
                    null,
                    0
                    );
    decoder.start();

 

  吾有完整的代碼運行範例,需要的朋友自行參考:

https://github.com/quantum6/Android-Mediacodec

https://github.com/quantum6/Android-CodecTest

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章