WebHU - Programozási kérdések és válaszok

Hiba: Az OMX.TI.DUCATI1.VIDEO.MPEG4E nem támogatja a színformátumot [android]

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!

27.06.2013

  • Ha videót/avc-t használ, nagy valószínűséggel a FormatYUV420Planar, a FormatYUV420PackedPlanar, a FormatYUV420SemiPlanar, a FormatYUV420PackedSemiPlanar és/vagy a TI_FormatYUV420PackedSemiPlanar valamelyike ​​fog működni. Az OMX.TI.DUCATI1 kodek esetében ez utóbbi lesz. A formátumok alul vannak megadva, de előfordulhat, hogy a memória elrendezése megegyezik a várttal. 10.07.2013

Válaszok:


1

Valószínűleg rossz kódolót akarsz használni. Mielőtt elindítaná a kódolót, "próbálja meg" a meglévő kódolókat valamilyen módon:

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();
                }
            }
        }
    }
}

Minden információ a mEncoderInfosban lesz összegyűjtve. És ezek után használhatja a legmegfelelőbb kódolót.

Más szóval: nem szabad feltételeznie, hogy egyes kódolók (az Ön esetében "video/mp4v-es") támogat bizonyos színformátumokat (az Ön esetében a MediaCodecInfo.CodecCapabilities.COLOR_FormatYUV422PackedSemiPlanar).

30.06.2013
  • Megjegyzés: A CodecCapabilities.colorFormats[] tartalmazza a kérdéses kodek által támogatott színformátumok listáját. 10.07.2013
  • Új anyagok

    A rádiógomb ellenőrzött eseményének használata a jQueryben
    Ebben a cikkben látni fogjuk, hogyan kell dolgozni a jquery választógombbal ellenőrzött eseményeivel. A választógombok HTML gombok, amelyek segítenek kiválasztani egyetlen értéket egy csoportból...

    Körkörös függőségek megoldása terraformban adatforrásokkal – lépésről lépésre
    Mi az a körkörös függőségek Dolgozzunk egy egyszerű eseten, amikor az SQS-sor és az S3-vödör közötti körkörös függőség problémája van egy egymástól függő címkeérték miatt. provider..

    Miért érdemes elkezdeni a kódolást 2023-ban?
    01100011 01101111 01100100 01100101 — beep boop beep boop Világunk folyamatosan fejlődik a technológia körül, és naponta fejlesztenek új technológiákat a valós problémák megoldására. Amint..

    🎙 Random Noise #2  – Örökbefogadás és hit
    az analitika íratlan világának gondozása Szeretné, hogy ezek a frissítések a postaládájába kerüljenek? Iratkozzon fel itt . "Ha önvezető autókat gyártanak, akkor mi miért ne..

    A legrosszabb politika és prediktív modellek májátültetésre jelöltek számára az Egyesült Államokban
    A máj (vagy óangolul lifer) az emberi test legnehezebb belső szervére utal, amely csendesen működik a nap 24 órájában. Mit csinál a máj? 500 feladatot hajt végre a szervezet egészségének..

    5 webhely, amely 2022-ben fejleszti front-end fejlesztői készségeit
    Frontendmentor.io A tényleges projektek létrehozásával a Frontendmentor.io segítséget nyújt a front-end kódolási képességeinek fejlesztésében. A kódolást azután kezdheti meg, hogy..

    Mikor kell használni a Type-t az interfészhez képest a TypeScriptben?
    A TypeScript a JavaScript gépelt szuperkészlete, amely statikus gépelést ad a nyelvhez. Ez megkönnyíti a robusztus és karbantartható kód írását azáltal, hogy a hibákat a fordítási időben..