我想对AVVideoComposition by function应用过滤器:
init(asset: AVAsset, applyingCIFiltersWithHandler: (AVAsynchronousCIImageFilteringRequest) -> Void)
其中,asset为AVComposition。当AVPlayerItem使用videoComposition播放此组合时,应用程序崩溃并出现错误:
reason: '*** -[AVCoreImageFilterCustomVideoCompositor startVideoCompositionRequest:] Expecting video composition to contain only AVCoreImageFilterVideoCompositionInstruction'
我想知道如何修复崩溃。
PS:我在组合中有两个videoTracks,每个timeRange都有它的指令
发布于 2017-11-16 20:51:16
我猜您正在尝试将AVVideoCompositionLayerInstruction添加到AVVideoComposition中。
首先尝试简单的方法,看看是否需要进行任何更改:
AVURLAsset *asset = [AVURLAsset assetWithURL:videoURL];
CIFilter *filter = [CIFilter filterWithName:@"CIHueAdjust"]; // the filter you want to add: https://developer.apple.com/library/content/documentation/GraphicsImaging/Reference/CoreImageFilterReference/index.html#//apple_ref/doc/filter/ci/
AVMutableVideoComposition *videoComposition = [AVMutableVideoComposition videoCompositionWithAsset:asset applyingCIFiltersWithHandler:^(AVAsynchronousCIImageFilteringRequest * _Nonnull request) {
// set filter input image
[filter setDefaults];
[filter setValue:sourceImage forKey:kCIInputImageKey];
// hue
NSNumber *angle = [NSNumber numberWithFloat:0.8];
[filter setValue:angle forKey:kCIInputAngleKey];
CIImage *outputImage = filter.outputImage;
[request finishWithImage:outputImage context:nil];
}];
AVAssetExportSession *exportSession = [[AVAssetExportSession alloc] initWithAsset:asset presetName:AVAssetExportPreset1920x1080];
exportSession.outputFileType = AVFileTypeQuickTimeMovie;
exportSession.outputURL = outputURL;
exportSession.videoComposition = videoComposition;
// export the session async
[exportSession exportAsynchronouslyWithCompletionHandler:^{
switch (exportSession.status) {
case AVAssetExportSessionStatusCompleted:
NSLog(@"Yeah!");
break;
default:
NSLog(@"Nooo!");
break;
}
}];发布于 2019-01-31 10:26:05
您不能同时使用AVVideoCompositionLayerInstruction和applyingCIFiltersWithHandler。
因此,您需要在过滤器中直接应用变换。
这可以通过将其应用于源图像来完成。
request.sourceImage.transformed(by: transform)
发布于 2018-06-11 15:54:07
https://stackoverflow.com/questions/46972399
复制相似问题