Eri*_*sen 10 iphone cocoa-touch objective-c avfoundation avassetreader
你如何通过AVAssetReader读取样本?我找到了使用AVAssetReader进行复制或混合的示例,但这些循环始终由AVAssetWriter循环控制.是否可以只创建一个AVAssetReader并通读它,获取每个样本?
谢谢.
dam*_*ian 25
从您的问题不清楚您是在谈论视频样本还是音频样本.要阅读视频样本,您需要执行以下操作:
构造AVAssetReader:
asset_reader = [[AVAssetReader alloc] initWithAsset:asset error:&error];
(error checking goes here)
从您的资产中获取视频曲目:
NSArray* video_tracks = [asset tracksWithMediaType:AVMediaTypeVideo];
AVAssetTrack* video_track = [video_tracks objectAtIndex:0];
设置所需的视频帧格式:
NSMutableDictionary* dictionary = [[NSMutableDictionary alloc] init]; [dictionary setObject:[NSNumber numberWithInt:<format code from CVPixelBuffer.h>] forKey:(NSString*)kCVPixelBufferPixelFormatTypeKey];
请注意,某些视频格式无法正常工作,如果您正在进行实时操作,某些视频格式的效果会优于其他视频格式(例如,BGRA比ARGB更快).
构造实际轨道输出并将其添加到资产阅读器:
AVAssetReaderTrackOutput* asset_reader_output = [[AVAssetReaderTrackOutput alloc] initWithTrack:video_track outputSettings:dictionary]; [asset_reader addOutput:asset_reader_output];
启动资产读者:
[asset_reader startReading];
读取样本:
CMSampleBufferRef buffer;
while ( [asset_reader status]==AVAssetReaderStatusReading )
buffer = [asset_reader_output copyNextSampleBuffer];
| 归档时间: |
|
| 查看次数: |
16184 次 |
| 最近记录: |