Iphone 使用Avassetrader播放声音
我使用Avassetrader从视频文件中获取单个帧(请参见下面的代码)。我想知道如何同时播放视频中的音频 我试图将音频分离成一个新文件,并使用AVAudioPlayer播放,但如果我同时使用Avassetrader,则会崩溃Iphone 使用Avassetrader播放声音,iphone,ios,avfoundation,Iphone,Ios,Avfoundation,我使用Avassetrader从视频文件中获取单个帧(请参见下面的代码)。我想知道如何同时播放视频中的音频 我试图将音频分离成一个新文件,并使用AVAudioPlayer播放,但如果我同时使用Avassetrader,则会崩溃 NSAutoreleasePool *pool = [NSAutoreleasePool new]; NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomai
NSAutoreleasePool *pool = [NSAutoreleasePool new];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString* fullPath = [[documentsDirectory stringByAppendingPathComponent:@"sample_video.mp4"] retain];
NSString *urlAddress = fullPath;
NSURL *url = [NSURL fileURLWithPath:urlAddress];
AVURLAsset *urlAsset = [[AVURLAsset alloc] initWithURL:url options:nil];
NSArray *tracks = [urlAsset tracksWithMediaType:AVMediaTypeVideo];
AVAssetTrack *track = [tracks objectAtIndex:0];
NSDictionary* trackDictionary = [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:kCVPixelFormatType_32BGRA]
forKey:(id)kCVPixelBufferPixelFormatTypeKey];
AVAssetReaderTrackOutput *asset_reader_output = [[AVAssetReaderTrackOutput alloc] initWithTrack:track outputSettings:trackDictionary];
AVAssetReader *asset_reader = [[AVAssetReader alloc] initWithAsset:urlAsset error:nil];
[asset_reader addOutput:asset_reader_output];
[asset_reader startReading];
while (asset_reader.status == AVAssetReaderStatusReading){
CMSampleBufferRef sampleBufferRef = [asset_reader_output copyNextSampleBuffer];
if (sampleBufferRef){
[self performSelectorOnMainThread:@selector(processFrame) withObject:nil waitUntilDone:YES];
}
CMSampleBufferInvalidate(sampleBufferRef);
CFRelease(sampleBufferRef);
}
[pool release];