当前位置: 首页 > 知识库问答 >
问题:

错误:OMX。TI。公爵1。视频MPEG4E不支持颜色格式[android]

佟高澹
2023-03-14

我正在尝试使用MediaCodec应用编码器。我使用的媒体格式如下。

 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)。演示程序在编解码器行报告错误。配置(mediaFormat、null/*surface*/、null/*crypto*/、MediaCodec.configure_FLAG_ENCODE/*flags*/);编解码器。开始() 日志显示:

06-24 15:16:54.582: E/ACodec(3146):[OMX. TI. DUCATI1. VIDEO. MPEG4E]不支持颜色格式19 06-24 15:16:54.582: E/ACodec(3146):[OMX. TI. DUCATI1. VIDEO. MPEG4E]configureCodec返回错误-2147483648

06-24 15:16:54.582:E/MediaCodec(3146):编解码器报告了一个错误。(omx错误0x80001001,内部错误-2147483648)

我尝试了Android系统提供的所有按键颜色格式,但没有一种有效。有人能帮我吗?谢谢


共有1个答案

穆英飙
2023-03-14

可能您试图使用错误的编码器。在启动编码器之前,您应该使用某种方式“探测”现有编码器:

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”)确实支持某种颜色格式(在你的例子中是MediaCodeInfo.CodeCapabilities.color_FormatYuv42PackedSemiPlanar)。

 类似资料:
  • 我试图对我的图像进行预处理,以便最终从预处理后的图像中找到轮廓。 它给了我一个错误说明:OpenCV错误:cvStartFindContours中不支持的格式或格式组合([Start]FindContours在模式下仅支持CV_8UC1图像!=CV_RETR_FLOODFILL,否则仅支持CV_32SC1图像) 我用的是opencv3.0

  • 问题内容: 我正在尝试执行查询以通过Python使用MySQL搜索数据库中的3个表。每次我尝试执行以下字符串作为查询时,都会给我关于字符串串联的错误。 这是它给我的错误: 如果删除要求的字符,则还必须删除%,这将阻止查询实际正常运行。由于我是Python的新手,我该怎么做才能解决此问题。 谢谢,克里斯 问题答案: 看起来python会将%解释为类似printf的格式字符。尝试使用%%?

  • Three.js有一系列导入外部文件的辅助函数,是在three.js之外的,使用前需要额外下载,在https://github.com/mrdoob/three.js/tree/master/examples/js/loaders可以找到。 *.obj是最常用的模型格式,导入*.obj文件需要OBJLoader.js;导入带*.mtl材质的*.obj文件需要MTLLoader.js以及OBJMTL

  • 我试图制作我的第一个应用程序(hello world),并在手机上运行它,但当我单击run时,gradle返回了这个错误(我在这里研究了stackoverflow并试图关闭即时运行,但在我的情况下似乎不起作用): 后来编辑2:我想通了,我的电脑上安装了一个旧的jdk版本和最新的android studio,谢谢你的帮助。我只需要安装最新的jdk版本(8)

  • 支持的颜色名称列表 基础颜色关键词: 颜色名 十六进制RGB值 black(黑) #000000 silver(银) #C0C0C0 gray(灰) #808080 white(白) #FFFFFF maroon(褐紫红) #800000 red(红) #FF0000 purple(紫) #800080 fuchsia(晚樱) #FF00FF green(绿) #008000 lime(石灰) #

  • 我想用haar cascade数数汽车。 我将图像正确地转换为灰度,并成功地在框架上画了一条线。问题是我得到了这个错误 错误:OpenCV(3.4.2)C:\build\3\u 4\u winpack-bindings-win32-vc14-static\OpenCV\modules\imgproc\src\contours。cpp:199:错误:(-210:不支持的格式或格式组合)[Start]