gpt4 book ai didi

iphone - 需要使用 iPhone SDK 的 AVMutableVideoComposition 的提示

转载 作者:行者123 更新时间:2023-12-03 20:00:57 27 4
gpt4 key购买 nike

AVFoundation 框架提供了 AVMutableVideoComposition 类(AVVideoComposition 的可变变体)。看起来您可以直接将 CoreAnimations 渲染到此类的实例来创建视频,但我真的不知道如何将合成保存到文件或如何使用它。从 UIViewController 调用的以下代码似乎可以用于创建合成和动画,但是,我对如何使用合成感到困惑。非常感谢任何帮助或指导。

static AVMutableVideoComposition *videoComposition = nil;
- (void)animationDidStop:(CAAnimation *)animation finished:(BOOL)flag {
//Do something with videoComposition here... how to save it to a file?
NSLog(@"videoComposition: %@", videoComposition);
[videoComposition release]; videoComposition = nil;
}

- (IBAction)createVideoComposition:(id)sender {
AVVideoCompositionCoreAnimationTool *videoCompositionCoreAnimationTool = [AVVideoCompositionCoreAnimationTool videoCompositionCoreAnimationToolWithPostProcessingAsVideoLayer:self.view.layer inLayer:self.view.layer];
videoComposition = [[AVMutableVideoComposition videoComposition] retain];
[videoComposition setRenderSize:CGSizeMake(320.0, 480.0)];
[videoComposition setRenderScale:1.0];
[videoComposition setFrameDuration:CMTimeMake(1, 10)];
[videoComposition setAnimationTool:videoCompositionCoreAnimationTool];
//add a basic animation to shake the controller's view
CAKeyframeAnimation *shakeAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"];
shakeAnimation.delegate = self;
shakeAnimation.removedOnCompletion = YES;
shakeAnimation.duration = 0.5;
CGMutablePathRef path = CGPathCreateMutable();
CGFloat midX = self.view.center.x;
CGFloat midY = self.view.center.y;
CGPathMoveToPoint(path, nil, midX, midY);
CGPathAddLineToPoint(path, nil, midX + 10.0, midY);
CGPathAddLineToPoint(path, nil, midX - 20.0, midY);
CGPathAddLineToPoint(path, nil, midX + 15.0, midY);
CGPathAddLineToPoint(path, nil, midX - 5.0, midY);
CGPathAddLineToPoint(path, nil, midX, midY);
shakeAnimation.path = path;
CFRelease(path);
[self.view.layer addAnimation:shakeAnimation forKey:@"shakeAnimation"];
}

谢谢,乔恩

最佳答案

不确定是否有帮助。

    AVAssetExportSession *session = [[AVAssetExportSession alloc] initWithAsset:composition presetName:AVAssetExportPresetHighestQuality];
session.videoComposition = videoComposition;
session.outputURL = outputURL;
session.outputFileType = AVFileTypeQuickTimeMovie;
[session exportAsynchronouslyWithCompletionHandler:
^(void )
{
NSLog(@"TADA!")
}];

关于iphone - 需要使用 iPhone SDK 的 AVMutableVideoComposition 的提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3401313/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com