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
디코더의 동작에 대한 모든 정보는 크게 감사하겠습니다.
Android 4.4 이상 버전 인 경우 MPEG2는 MediaCodec API에서 지원되지 않습니다. MXPlayer의 HW + logcat 출력을 보면 MXPlayer가 MediaCodec API가 아닌 libstagefright (또는 C++ API)를 직접 사용하는 것으로 나타납니다. –
또한 ACodec.cpp : SetComponentRole()을 보면 Android가 mime 유형을 확인하는 것과 같고 mime이 목록에 없으면 반환되지 않는 오류 (-1010)가 반환됩니다. (힌트 : mpeg2가 목록에 없음) –
나는 같은 문제가 있는데, 나는 그것이'csd'와 관련이 있다고 생각한다. 문제는 MPEG2의 코덱이 '시퀀스 헤더'와 '시퀀스 확장'을 'CSD-0'으로 기대한다는 것입니다. MPEG2 코덱에 'CSD'를 설정하는 방법에 대한 정보를 찾지 못했습니다. – Mine