iOS解码视频文件
本文主要介绍iOS解码视频常用的接口,并贴上相应的代码片段。本文仅供参考。如果文章有错误之处,欢迎大家指正。
视频文件解码
- 创建AVAsset
//创建AVAsset
AVAsset *asset =[[AVURLAsset alloc] initWithURL:assetURL options:nil];
//获取音视频轨道
AVAssetTrack *videoTrack = [[self.asset tracksWithMediaType:AVMediaTypeVideo] firstObject];
NSArray *audioTracks = [self.asset tracksWithMediaType:AVMediaTypeAudio];
- 创建AVAssetReader并添加输出轨道
//create AVAssetReader
NSError *error = nil;
AVAssetReader *assetReader = [AVAssetReader assetReaderWithAsset:self.asset error:&error];
//set the output video to YUV420 format
NSMutableDictionary *outputSettings = [NSMutableDictionary dictionary];
[outputSettings setObject:@(kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange) forKey:(id)kCVPixelBufferPixelFormatTypeKey];
//create video output track
AVAssetReaderTrackOutput *readerVideoTrackOutput = [AVAssetReaderTrackOutput assetReaderTrackOutputWithTrack:videoTrack outputSettings:outputSettings];
//add track to assetReader
if ([assetReader canAddOutput:readerVideoTrackOutput]) {
[assetReader addOutput:readerVideoTrackOutput];
}
[...] //audio part
- 获取某帧数据
CMSampleBufferRef sampleBufferRef = [readerVideoTrackOutput copyNextSampleBuffer];