문제

저는 화상회의 프로젝트를 진행하고 있습니다.우리는 낮은 해상도(최대 320p)에서도 잘 작동하는 비디오 프레임의 인코딩 및 디코딩을 위해 소프트웨어 코덱을 사용하고 있었습니다.우리는 최대 720p의 더 높은 해상도에 대한 애플리케이션을 지원할 계획이었습니다.나는 하드웨어 가속이 이 작업을 상당히 잘 수행할 것이라는 것을 알게 되었습니다.

하드웨어 코덱 api 미디어 코덱은 Jelly Bean부터 사용할 수 있으므로 인코딩 및 디코딩에 사용했으며 잘 작동합니다.하지만 내 애플리케이션은 2.3부터 지원됩니다.따라서 30fps에서 720p의 H.264 프레임에 대한 하드웨어 가속 비디오 디코딩이 필요합니다.

연구에서 무대 공포증 프레임워크를 수정하여 OMX 코덱을 사용하는 아이디어를 발견했습니다. H.264용 하드웨어 디코더는 2.1부터 사용할 수 있고 인코더는 3.0부터 사용할 수 있다는 것을 읽었습니다.나는 이 사이트에 제공된 많은 기사와 질문을 검토하고 계속할 수 있음을 확인했습니다.

나는 무대 공포증 건축에 대해 읽었습니다. 여기 - 아키텍처 그리고 여기- 무대공포증 작동 원리

그리고 OMX 코덱에 대해 읽었습니다. 여기-Android-하드웨어-디코더-with-omxcodec-in-ndk를 사용하세요..

시작하는 데 문제가 있고 구현에 혼란이 있습니다. 이에 대한 정보를 알고 싶습니다.

  1. 내 코드에서 OMX 코덱을 사용하려면 전체 Android 소스 트리로 프로젝트를 빌드해야 하나요? 아니면 AOSP 소스에서 일부 파일을 추가하여 수행할 수 있나요(예인 경우 모두).
  2. 그것을 달성하기 위해 처음부터 따라야 할 단계는 무엇입니까?

누군가 나에게 이것에 대한 지침을 줄 수 있습니까?

감사해요...

도움이 되었습니까?

해결책

통합을 설명하는 가장 좋은 예 OMXCodec 기본 레이어에는 명령줄 유틸리티가 있습니다. stagefright 관찰할 수 있듯이 여기 ~에 GingerBread 그 자체.이 예는 OMXCodec 생성됩니다.

참고할 사항:

  1. 에 대한 입력 OMXCodec 으로 모델링되어야 한다. MediaSource 따라서 애플리케이션이 이 요구 사항을 처리하는지 확인해야 합니다.생성 예 MediaSource 기반 소스는 다음에서 찾을 수 있습니다. record 유틸리티 파일 DummySource.

  2. 디코더에 대한 입력, 즉 MediaSource 를 통해 데이터를 제공해야 한다. read 따라서 애플리케이션은 모든 프레임에 대해 개별 프레임을 제공해야 합니다. read 부르다.

  3. 디코더는 다음과 같이 생성될 수 있습니다. NativeWindow 출력 버퍼 할당을 위해.이 경우 CPU에서 버퍼에 액세스하려면 다음을 참조해야 합니다. 이 쿼리 상세 사항은.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top