Kódolót próbálok alkalmazni a MediaCodec használatával. Az általam használt MediaFormat a következő.
MediaFormat mediaFormat = MediaFormat.createVideoFormat("video/mp4v-es", 640, 480);
mediaFormat.setInteger(MediaFormat.KEY_BIT_RATE, 125000);
mediaFormat.setInteger(MediaFormat.KEY_FRAME_RATE, 15);
mediaFormat.setInteger(MediaFormat.KEY_COLOR_FORMAT,MediaCodecInfo.CodecCapabilities.COLOR_FormatYUV422PackedSemiPlanar);
mediaFormat.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, 5);
A demó jól fut virtuális gépen. Ez azonban nem sikerül, amikor tesztelem a valódi gépen (Samsung Galaxy Tab GT3113). A demó hibákat jelent a codec.configure(mediaFormat, null /* surface */, null /* crypto */, MediaCodec.CONFIGURE_FLAG_ENCODE /* flags */); codec.start();
sorban A logcat ezt mondja:
06-24 15:16:54.582: E/ACodec(3146): [OMX.TI.DUCATI1.VIDEO.MPEG4E] nem támogatja a színformátumot 19 06-24 15:16:54.582: E/ACodec(3146): [ OMX.TI.DUCATI1.VIDEO.MPEG4E] configureCodec visszatérési hiba -2147483648
06-24 15:16:54.582: E/MediaCodec(3146): A Codec hibát jelentett. (omx hiba 0x80001001, belső hiba -2147483648)
Kipróbáltam az Android által biztosított összes KEY_COLOR_FORMAT-ot, de egyik sem működik. Tud valaki segíteni? Kösz!
CodecCapabilities.colorFormats[]
tartalmazza a kérdéses kodek által támogatott színformátumok listáját. 10.07.2013