2014-05-15 4 views
3

MPEG2 인코딩 된 스트림을 디코딩하고 표시하려면 MediaCodec API를 사용하려고합니다. 나는 MediaExtractor을 사용하여 MPEG 전송 스트림 (TS)에서 스트림을 추출합니다.MPEG2 비디오 스트림을 디코딩하는 Android MediaCodec 사용

Nexus7 (2012), Nexus7 (2013), Nexus10 및 오류 코드 0x80001001을 사용하여 모든 기기에서 디코더의 configure()이 작동하지 않는 것으로 나타났습니다.

configure() API를 사용할 때 잘못 될 수있는 유일한 매개 변수는 MediaFormat 구성이며 이는 MediaExtractor에서 가져옵니다. 나는이 문제가 주목 받게 된 결과가 잘못 될 수 있다는 것을 이해하지 못합니다. MediaFormat Object에

구성 파라미터는 :

  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)의 오류입니다. MPEG2이 안드로이드 플랫폼에서 지원되는 필수 코덱이 없거나 내가 뭔가 잘못하고있는 중이 야하기 때문에 - (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 디코더의 동작에 대한 모든 정보는 크게 감사하겠습니다.

+0

Android 4.4 이상 버전 인 경우 MPEG2는 MediaCodec API에서 지원되지 않습니다. MXPlayer의 HW + logcat 출력을 보면 MXPlayer가 MediaCodec API가 아닌 libstagefright (또는 C++ API)를 직접 사용하는 것으로 나타납니다. –

+0

또한 ACodec.cpp : SetComponentRole()을 보면 Android가 mime 유형을 확인하는 것과 같고 mime이 목록에 없으면 반환되지 않는 오류 (-1010)가 반환됩니다. (힌트 : mpeg2가 목록에 없음) –

+0

나는 같은 문제가 있는데, 나는 그것이'csd'와 관련이 있다고 생각한다. 문제는 MPEG2의 코덱이 '시퀀스 헤더'와 '시퀀스 확장'을 'CSD-0'으로 기대한다는 것입니다. MPEG2 코덱에 'CSD'를 설정하는 방법에 대한 정보를 찾지 못했습니다. – Mine

답변

1

장치에서 /system/etc/media_codecs.xml을보고 목록을 확인하십시오.

현재 Nexus 기기에서 MPEG-2 동영상 압축은 지원되지 않습니다.

+0

코덱 목록을보고이 목록에 MPEG-2가 있습니다. 사실 MX 플레이어는이 장치에서 HW + 모드를 MPEG-2 클립으로 지원합니다.이 장치는 하드웨어 가속 MPEG-2 디코딩을 지원합니다. –

+0

목록 항목의 모양은 무엇입니까? 어느 장치에요? – fadden

+0

아, Nexus 7 (2013)의 ''섹션에 있습니다. 나는 N5 나 N10에서 그것을 보지 못한다. – fadden

관련 문제