我正在使用AVAssetReader和AVAssetWriter制作多轨道电影。 所以我使用[AVAssetReaderAudioMixOutput copyNextSampleBuffer]和[AVAssetWriterInput appendSampleBuffer]完成了它。
但我一直收到错误:[AVAssetReaderTrackOutput copyNextSampleBuffer]无法复制下一个样本缓冲区,除非资产阅读器处于“读取”状态。 如何解决这个问题。
答案 0 :(得分:2)
MPMediaQuery *meidaQuery = [[[MPMediaQuery alloc] init] autorelease];
MPMediaItem *mediaItem = [[meidaQuery items] objectAtIndex:0];
AVURLAsset *urlAsset = [AVURLAsset URLAssetWithURL:[mediaItem valueForProperty:MPMediaItemPropertyAssetURL] options:nil];
AVAssetReader *assetReader = [AVAssetReader assetReaderWithAsset:urlAsset error:nil];
AVAssetTrack *assetTrack = [[urlAsset tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0];
AVAssetReaderTrackOutput *assetReaderTrackOutput = [AVAssetReaderTrackOutput assetReaderTrackOutputWithTrack:assetTrack outputSettings:NULL];
[assetReader addOutput:assetReaderTrackOutput];
[assetReader startReading];
CMSampleBufferRef sampleBufferRef = [assetReaderTrackOutput copyNextSampleBuffer];