iOS7 AVMutableVideoCompositionLayerInstruction导致视频帧冻结

Eri*_*ner 5 objective-c ios ios6 ios7

我正在通过AVMutableVideoCompositionLayerInstructioniOS7 SDK 修改一些视频.

以下代码用于iOS 6.1.3,但在iOS7中,视频在第一帧被冻结(尽管我仍然可以听到音频确定).我摆脱了我申请的所有实际转换,以验证单独添加视频合成会导致问题.

AVURLAsset* videoAsset = [[AVURLAsset alloc] initWithURL:inputFileURL options:NULL];
AVAssetTrack *videoAssetTrack = [[videoAsset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0];

AVMutableVideoCompositionLayerInstruction *layerInstruction =
[AVMutableVideoCompositionLayerInstruction videoCompositionLayerInstructionWithAssetTrack:videoAssetTrack];

AVMutableVideoComposition *mainComposition = [AVMutableVideoComposition videoComposition];
AVMutableVideoCompositionInstruction *mainInstruction = [AVMutableVideoCompositionInstruction videoCompositionInstruction];
mainInstruction.layerInstructions = [NSArray arrayWithObject:layerInstruction];
mainInstruction.timeRange = CMTimeRangeMake(kCMTimeZero, videoAsset.duration);
mainComposition.instructions = [NSArray arrayWithObject:mainInstruction];
mainComposition.frameDuration = videoAsset.duration;
mainComposition.renderSize = CGSizeMake(320, 320);

...
exportSession.videoComposition = mainComposition;
Run Code Online (Sandbox Code Playgroud)

如果我没有设置videoComposition属性exportSession然后视频记录确定,但我不能应用任何转换.有人知道是什么原因引起的吗?

谢谢.

dam*_*ian 1

调试视频合成问题的一个好方法是使用[AVMutableVideoComposition videoCompositionWithPropertiesOfAsset:asset]. 返回的AVMutableVideoComposition应该可以正常工作。然后您可以将数组的内容instructions与您的指令进行比较。

为了增加混乱程度,asset还可以有一个AVComposition. 我认为AVFoundation团队在命名这些东西时并没有做得最好......