我已经设法用AVFoundation
将一帧又一帧电影的视频轨道加载到OpenGL
纹理中。我遵循了这里的答案中描述的步骤:iOS4: how do I use video file as an OpenGL texture?,并从WWDC2010
的GLVideoFrame
样例中提取了一些代码,可以从here下载。
如何同步播放电影的音轨和视频?我认为在一个单独的播放器中播放它不是一个好主意,而是使用同一个AVAsset
的音轨。
AVAssetTrack* audioTrack = [[asset tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0];
我通过CADisplayLink-callback检索一个视频帧和它的时间戳
CMSampleBufferRef sampleBuffer = [self.readerOutput copyNextSampleBuffer];
CMTime timestamp = CMSampleBufferGetPresentationTimeStamp( sampleBuffer );
其中readerOutput
的类型为AVAssetReaderTrackOutput*
如何获取对应的音频样本?那该怎么玩呢?
编辑:
我看了一下,我认为,最好的方法是通过这里描述的方法从AudioToolbox.framework
中使用AudioQueue
:AVAssetReader and Audio Queue streaming problem
在AVFoundation
中还有一个音频播放器:AVAudioPlayer
。但我不知道该如何将数据传递给期望NSData
的initWithData
-initializer。此外,我不认为这是我的最佳选择,因为据我所知,必须为每个新的音频样本块创建一个新的AVAudioPlayer
-instance。
还有其他建议吗?播放我从AVAssetReaderTrackOutput
获得的原始音频样本的最佳方式是什么
发布于 2012-04-11 03:57:18
https://stackoverflow.com/questions/7214074
复制相似问题