2012-06-22 3 views
0

:오른쪽 선택은 오디오 및 비디오 콘텐츠를 재생하기 위해 내가하고있어

내가 예를 들어 아이폰/아이 패드에 애플에 의해 지원 포함의 나 MKV/MKA 파일이 아닌 오디오 및 비디오 파일을 재생해야 여러 오디오 채널.

저는 미디어 파일에서 오디오 및 비디오 스트림을 찾으려면 libffmpeg를 사용하고 있습니다. 비디오 avcodec_decode_audio3 반환 값은 각각의 기능에 따르고으로 avcodec_decode_video2 오디오 디코딩되고

  • avcodec_decode_video2은 다음합니다 - pakcage에서 비디오 비디오 프레임에 대한 정보를 요약 AVFrame 구조를 반환 구체적이고 data 필드가 이것은 그림/채널 평면에 대한 포인터입니다.
  • avcodec_decode_audio3 - 반환 samples 형 int16_t의 *하는 것 같아요 원시 오디오 데이터

그래서 기본적으로 나는이 모든 일을했고 성공적으로 미디어 콘텐츠를 디코딩합니다.

내가해야 할 일 : 사과 서비스를 사용하여 오디오 및 비디오를 재생해야합니다. 수행해야하는 재생은 동영상을 재생하는 동안 오디오 채널의 믹싱을 지원해야합니다. 즉, mkv 파일에 두 개의 오디오 채널과 비디오 채널이 포함되어 있어야합니다. 그래서 어떤 서비스가 나에게 적합한 선택인지 알고 싶습니까? 필자의 연구에 따르면 AudioQueue 서비스는 유용한 오디오 재생이 될 수 있으며 비디오 용 AVFoundation 일 수도 있습니다.

내 케이스의 올바른 기술 즉, 오디오 재생이 가능한 오디오 재생 및 비디오 재생 + 오디오 재생을 도와주세요.

답변

2

올바른 경로에 있습니다. 오디오 만 재생하는 경우 (전혀 녹음하지 않음) AudioQueues를 사용합니다. 그것은 당신을 위해 믹싱을 할 것입니다. 녹음하는 경우 AudioUnits를 사용해야합니다. Apple의 MixerHost 예제 프로젝트를 살펴보십시오. 비디오의 경우 OpenGL을 사용하는 것이 좋습니다. 이미지 버퍼가 YUV420에 있다고 가정하면 간단한 2 패스 셰이더 설정을 사용하여 이미지 버퍼를 렌더링 할 수 있습니다. 나는 이것을 수행하는 방법을 보여주는 Apple 예제 프로젝트가 있다고 생각한다. 어떤 경우 든 OpenGL과 셰이더를 사용하여 픽셀 형식을 렌더링하여 픽셀 형식을 RGBA로 변환 할 수 있습니다. 희망이 도움이됩니다.

+0

스티브에 대한 답변 주셔서 감사합니다. 기본적으로 내 앱은 오디오 트랙을 믹싱하고 동영상을 재생하는 등의 모든 작업을 수행합니다. 그래서 당신의 답장에서 내가 선택한 것을 이해해야합니다. 1. Audio Queue : 오디오 믹싱 및 재생 2. AudioUnits : 오디오 녹음 3. OpenGL : 비디오 보여주기. 나는 그것을 올바르게 얻었 느냐? – deimus

+0

동시에 녹음 및 재생하는 경우 AudioUnits를 모두 권장합니다. 이 경우 음성 처리 IO 장치를 사용해야합니다. 그렇지 않으면 녹음 내용에 스피커의 출력이 포함됩니다. VP IO 장치는 Acoustic Echo Cancellation을 사용합니다. 예 OpenGL이 더 우수한 성능을 발휘합니다. 다른 API도 먼저 테스트 해 볼 수 있는지 (예 : CoreImage 또는 CoreGraphics) 확인하십시오. –