ios opengl-es ios4 avaudioplayer avfoundation

ios - AVFoundation: Video to OpenGL texture working-¿Cómo reproducir y sincronizar audio?



opengl-es ios4 (1)

He logrado cargar una pista de video de una película fotograma a fotograma en una textura OpenGL con AVFoundation . Seguí los pasos descritos en la respuesta aquí: iOS4: ¿cómo uso el archivo de video como una textura OpenGL? y tomó algo de código de la muestra WWDC2010 de WWDC2010 que se puede descargar here .

¿Cómo reproduzco la pista de audio de la película de forma sincronizada con el video? Creo que no sería una buena idea reproducirlo en un reproductor separado, sino utilizar la pista de audio del mismo AVAsset .

AVAssetTrack* audioTrack = [[asset tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0];

Recupero un videoframe y su marca de tiempo en CADisplayLink-callback a través de

CMSampleBufferRef sampleBuffer = [self.readerOutput copyNextSampleBuffer]; CMTime timestamp = CMSampleBufferGetPresentationTimeStamp( sampleBuffer );

donde readerOutput es del tipo AVAssetReaderTrackOutput*

¿Cómo obtener las correspondientes muestras de audio? ¿Y cómo jugarlos?

Editar:

He AudioQueue alrededor y creo que lo mejor sería usar AudioQueue de AudioQueue utilizando el enfoque descrito aquí: AVAssetReader y Audio Queue streaming problem

También hay un reproductor de audio en AVFoundation : AVAudioPlayer . Pero no sé exactamente cómo debo pasar los datos a su initWithData que espera NSData . Además, no creo que sea la mejor opción para mi caso porque se AVAudioPlayer crear una nueva AVAudioPlayer AVAudioPlayer para cada nuevo fragmento de muestras de audio, tal como lo entiendo.

¿Cualquier otra sugerencia? ¿Cuál es la mejor manera de reproducir las muestras de audio sin procesar que obtengo de AVAssetReaderTrackOutput ?