我想把视频的帧大小修改为正方形,即100 x 100。以下是代码:
- (void) changeSize :(NSURL *) url
{
//Create audio/video Settings
NSDictionary *videoSettings = [NSDictionary dictionaryWithObjectsAndKeys:
AVVideoCodecH264, AVVideoCodecKey,
[NSNumber numberWithInt: 100], AVVideoWidthKey,
[NSNumber numberWithInt:100], AVVideoHeightKey,
nil];
NSDictionary * audioSettings = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithFloat: 44100.0], AVSampleRateKey,
[NSNumber numberWithInt: 2], AVNumberOfChannelsKey,
[NSNumber numberWithInt: kAudioFormatAppleLossless], AVFormatIDKey,
[NSData data], AVChannelLayoutKey, nil];
//Read Asset
AVURLAsset *myAsset = [AVURLAsset URLAssetWithURL:url options:nil];
NSArray *videoTracks = [myAsset tracksWithMediaType:AVMediaTypeVideo];
AVAssetTrack *audioTrack = [[myAsset tracksWithMediaType:AVMediaTypeAudio]objectAtIndex:0];
AVAssetReader *assetReader = [[AVAssetReader alloc]initWithAsset:myAsset error:nil];
AVAssetReaderOutput *videoOutput = [AVAssetReaderVideoCompositionOutput assetReaderVideoCompositionOutputWithVideoTracks:videoTracks videoSettings:nil];
AVAssetReaderOutput *audioOutput = [AVAssetReaderTrackOutput assetReaderTrackOutputWithTrack:audioTrack outputSettings:nil];
[assetReader addOutput:videoOutput];
[assetReader addOutput:audioOutput];
//Create writer and set its properties
AVAssetWriterInput* writerInputVideo = [[AVAssetWriterInput assetWriterInputWithMediaType:AVMediaTypeVideo
outputSettings:videoSettings] retain];
AVAssetWriterInput* writerInputAudio = [[AVAssetWriterInput assetWriterInputWithMediaType:AVMediaTypeAudio
outputSettings:nil] retain];
NSError *error = nil;
AVAssetWriter *writer = [[AVAssetWriter alloc]initWithURL:[NSURL fileURLWithPath:fullPath] fileType:AVFileTypeQuickTimeMovie error:&error];
[writer addInput:writerInputVideo];
[writer addInput:writerInputAudio];
//start reading/writting
[writer startWriting];
[assetReader startReading];
}
现在的问题是当它到达 [assetReader startReading] 时,会抛出一个异常,提示“需要设置 AVAssetReaderVideoCompositionOutput.videoComposition”。
请问有人能给予指导吗?
TIA