Использование Android MediaCodec для декодирования видеопотока MPEG2
Я пытаюсь использовать MediaCodec
API для декодирования и отображения MPEG2
закодированный поток. я использую MediaExtractor
извлечь поток из транспортного потока MPEG (TS
).
Я замечаю что configure()
сбой декодера на всех устройствах, которые я пробовал - Nexus7(2012), Nexus7(2013), Nexus10, с кодом ошибки 0x80001001.
Единственный параметр, который может ошибиться при использовании configure()
API является MediaFormat
Конфигурация предоставлена, и это получено от Android MediaExtractor
, Я не понимаю, что может пойти не так, что привело к тому, что эту проблему заметили.
Параметры конфигурации, присутствующие в MediaFormat
Объектом являются:
1. `CSD-0` - Containing Sequence header and sequence extension header.
Seq_Hdr - 00 00 01 B3 2D 01 E0 24 09 C4 23 80
Seq_extnsn - 00 00 01 B5 14 8A 00 01 00 80
2. Height - 480
3. Width - 720
4. KEY_MIME - `video/mpeg2`
Ошибка в некоторой степени похожа на все устройства, что может означать, что ошибка, возможно, происходит от общего объекта в MediaCodec
стек. Здесь ошибка от Nexus7 (2013). (0x80001001 - OMX_ErrorUndefined)
E/ACodec ( 6504): [OMX.qcom.video.decoder.mpeg2] configureCodec returning error -1010
E/MediaCodec( 6504): Codec reported an error. (omx error 0x80001001, internalError -1010)
Это поведение, потому что MPEG2
не является обязательным кодек для поддержки на платформах Android или я делаю что-то не так? Любая информация о поведении MPEG2
декодер будет с благодарностью.
1 ответ
На вашем устройстве посмотрите на /system/etc/media_codecs.xml
чтобы увидеть список.
Насколько я понимаю, на современных устройствах Nexus сжатие видео MPEG-2 не поддерживается.