MediaCodec API를 사용하여 비디오 샘플을 디코딩하려고합니다. 나는 렌더링 된 샘플을 보여주기 위해 surfaceView를 사용하고있다. 홈 버튼을 누르면 앱이 일시 중지 상태가되고 표면이 파괴됩니다. 다시 상태로 돌아 오면 새로운 surfaceView 참조가 생성되지만 디코더는 surfaceView에서 샘플을 펌핑 할 수 없습니다. 화면이 검은 색으로 표시됩니다. 비디오 구성 : videoDecoder.configure (format, surface, null, 0); 그래서 위의 명령문에서 videoDecoder를 재구성 할 수 있습니다. 다음 문제와 유사합니다. How to keep decoding alive during screen orientation?비디오 디코더 MediaCodec을 사용하여 구성
0
A
답변
1
MediaCodec
API는 현재 출력 (Surface
)을 대체하는 방법 (API 19)을 제공하지 않습니다.
다른 질문에서와 같이이 문제를 처리하는 방법은보기 계층 구조에 묶이지 않은 Surface
으로 디코딩하는 것입니다 (따라서 Activity
이 파괴되었습니다).
MediaCodec
의 출력을 SurfaceTexture
으로 지정하면이 텍스처를 SurfaceView
에 렌더링 할 수 있습니다. GLES 코드가 약간 필요합니다. Grafika sources에서 필요한 조각을 찾을 수는 있지만 현재 원하는대로 완벽하게 구현되지는 않습니다 (예 : PlayMovieActivity
은 SurfaceTexture
으로 비디오를 디코딩하지만 해당 ST는 분해 될 TextureView
의 일부 임).
추가 렌더링 단계를 수행하면 GPU로드가 증가하고 DRM으로 보호 된 비디오에서는 작동하지 않습니다. 대부분의 기기 및 앱의 경우 이는 중요하지 않습니다.
bigflake examples도 참조하십시오.
업데이트 : 나는 이것을 Grafika에 추가했습니다. "이중 디코드"예제를 참조하십시오. 출력은 TextureView
과 연결된 SurfaceTexture
으로 출력됩니다. 화면이 회전 된 경우 (또는 현재 전원 버튼을 눌러 비워진 경우) 디코딩이 계속됩니다. "뒤로"또는 "집"버튼을 사용하여 활동을 나가면 디코딩이 중지됩니다. SurfaceTexture
을 그대로두고 새로운 TextureView
에 연결하여 작동합니다.
관련 문제
- 1. MediaCodec을 사용하여 디코더 출력을 인코더 입력에 공급할 수 없습니다.
- 2. 비디오 디코더 최적화를위한 제안
- 3. Cuda ffmpeg의 비디오 디코더
- 4. mediacodec을 사용하여 비디오 프레임 속도 및 오디오 샘플을 결정하십시오.
- 5. Android : 비디오 디코더 용 OMX 구성 요소 만들기
- 6. mediacodec을 사용하여 PCM에서 AAC로 변환
- 7. mediaCodec을 사용하여 비디오를 만드는 방법은 무엇입니까?
- 8. 동영상을 디코딩 할 수 있습니까? Android MediaCodec을 사용하는 avc1 비디오?
- 9. Android MediaCodec 디코더 : 비디오 재생 속도 느림
- 10. AVS 비디오 디코더 DirectShow 필터 또는 MFT
- 11. APE (원숭이의 AUDO)는 FFmpeg의 디코더 구성
- 12. MediaCodec을 사용하는 Compresson
- 13. mediacodec을 사용하여 H264 IP 카메라 스트림을 가져옵니다.
- 14. MediaCodec을 사용하여 Buffer에서 얻은 색상 유형은 무엇입니까?
- 15. DiVX AIR 용 디코더
- 16. VP6 디코더 SDK
- 17. MediaCodec을 사용하여 RTSP 서버에서 데이터를 디코딩하는 방법은 무엇입니까?
- 18. MediaCodec API를 사용하여 맞춤 디코더 호출하기
- 19. Microsoft DTV-DVD 비디오 디코더를 사용하여 H264 비디오 재생
- 20. .mp4에서 가져온 H.264 디코더 구성 레코드 형식
- 21. H264 디코더 소스 코드
- 22. lync 2010 api 사용자 지정 비디오 인코더/디코더
- 23. 디코더 내 DirectShow를 소스 필터
- 24. MediaCodec을 사용하여 비디오에서 비트 맵 (프레임)을 가져 오는 방법
- 25. QuickTime 비디오 코덱 구성
- 26. SL_E_LICENSE_FILE_NOT_INSTALLED (0xC004F011) MPEG2 디코더
- 27. delphi 2010의 비디오 구성 요소
- 28. VLC 및 MJPEG 디코더 스트리밍 (잘못된 헤더)
- 29. 메모리에서 가져온 IWICImagingFactory 디코더
- 30. MediaCodec을 사용하여 비트 맵을 비디오로 인코딩하는 방법은 무엇입니까?
답장을 보내 주셔서 감사합니다. 몇 가지 예제 코드를 제공 할 수 있습니까? – saa
다음 몇 주 안에 bigflake/grafika를 업데이트하지 않겠습니다. BTW, H.264를 스트리밍하는 대신 MediaExtractor를 사용하여 파일에서 비디오를 가져 오는 경우 활동이 다시 시작된 후 추출기/디코더를 다시 생성하고 중단 한 위치로 검색하면됩니다. 시간 오프셋은 프리젠 테이션 타임 스탬프로부터 결정될 수있다. – fadden
감사합니다. 나는 당신의 제안에 따라 코드를 바꿀 것이다. – saa