我正在尝试通过使用MediaCodec来应用编码器.我使用的MediaFormat如下.
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);
该演示在虚拟机上运行良好.但是,当我在真实计算机(三星galaxy Tab GT3113)上对其进行测试时,它失败了.该演示程序在codec.configure(mediaFormat,null / * surface * /,null / * crypto * /,MediaCodec.CONfigURE_FLAG_ENCODE / *标志* /)处报告错误. codec.start();
日志说:
06-24 15:16:54.582: E/ACodec(3146): [OMX.TI.DUCATI1.VIDEO.MPEG4E] does
not support color format 19 06-24 15:16:54.582: E/ACodec(3146):
[OMX.TI.DUCATI1.VIDEO.MPEG4E] configureCodec returning error
-214748364806-24 15:16:54.582: E/MediaCodec(3146): Codec reported an error. (omx
error 0x80001001, internalError -2147483648)
我已经尝试了AndroID提供的所有KEY_color_FORMAT,但是它们都不起作用.
谁能帮我?谢谢!
解决方法:
可能是您尝试使用错误的编码器.在开始编码器之前,您应该使用某种方法“探测”现有的编码器:
HashMap<String, CodecCapabilitIEs> mEncoderInfos;voID initEncoderInfos(){ for(int i = MediaCodecList.getCodecCount() - 1; i >= 0; i--){ MediaCodecInfo codecInfo = MediaCodecList.getCodecInfoAt(i); if(codecInfo.isEncoder()){ for(String t : codecInfo.getSupportedTypes()){ try{ mEncoderInfos.put(t, codecInfo.getCapabilitIEsForType(t)); } catch(IllegalArgumentException e){ e.printstacktrace(); } } } }}
所有信息将收集在mEncoderInfos中.之后,您可以使用最合适的编码器.
换句话说:您不应该假定某些编码器(在您的情况下为“ vIDeo / mp4v-es”)确实支持某些颜色格式(在您的情况下为MediaCodecInfo.CodecCapabilitIEs.color_FormatYUV422PackedSemiPlanar).
总结以上是内存溢出为你收集整理的错误:OMX.TI.DUCATI1.VIDEO.MPEG4E不支持颜色格式[android]全部内容,希望文章能够帮你解决错误:OMX.TI.DUCATI1.VIDEO.MPEG4E不支持颜色格式[android]所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)