首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有大量子层/动画的AVVideoCompositionCoreAnimationTool导出性能

具有大量子层/动画的AVVideoCompositionCoreAnimationTool导出性能
EN

Stack Overflow用户
提问于 2015-11-10 13:49:16
回答 1查看 1.8K关注 0票数 3

我正在开发一个应用程序,它使用AVMutableVideoCompositionAVVideoCompositionCoreAnimationTool (通过AVExportSession导出)在2-10秒的视频中导出AVMutableVideoComposition动画。

在每个构图中可以有数百个CAShapeLayers,每个构图上都会有动画。

代码语言:javascript
复制
let animationLayer = CALayer()
animationLayer.frame = CGRectMake(0, 0, size.width, size.height)
animationLayer.geometryFlipped = true

// Add a ton of CAShapeLayers with CABasicAnimation's to animation Layer

let parentLayer = CALayer()
let videoLayer = CALayer()
parentLayer.frame = CGRectMake(0, 0, size.width, size.height)
videoLayer.frame = CGRectMake(0, 0, size.width, size.height)
parentLayer.addSublayer(videoLayer)
parentLayer.addSublayer(animationLayer)

mainCompositionInst.animationTool = AVVideoCompositionCoreAnimationTool(postProcessingAsVideoLayer: videoLayer, inLayer: parentLayer)

let exporter = AVAssetExportSession(asset: mixComposition, presetName: AVAssetExportPresetHighestQuality)
exportSession.outputURL = finalUrl
exportSession.outputFileType = AVFileTypeQuickTimeMovie
exportSession.shouldOptimizeForNetworkUse = true
exportSession.videoComposition = mainCompositionInst
exportSession.exportAsynchronouslyWithCompletionHandler(...)

现在,这完全可行。但是,当动画数量众多时,组合输出可能非常缓慢(15-25秒可导出)。我对加快出口业绩的任何想法都感兴趣。

到目前为止,我的一个想法是进行多个组合/导出传递,并在每次传递中添加一个“合理”的动画层数。但我有种感觉只会让它变慢。

或者,可能会导出大量较小的视频,每个视频都包含“合理”数量的动画层,然后在最终导出中将它们组合在一起。

还有其他的想法吗?,慢只是生活中的一个事实吗?我很感激你的洞察力!我是AVFoundation的新手。

EN

回答 1

Stack Overflow用户

发布于 2015-11-12 00:29:57

我沿着视频合成路径走下去,不喜欢AVAssetExportSession执行的固定帧速率,所以我手动地将我的内容呈现到AVAssetReader的输出上,并将其编码为AVAssetWriter

如果你有很多内容,你可以把它翻译成OpenGL/Metal,并使用GPU快速地通过纹理缓存直接渲染到你的视频帧上。

我敢打赌GPU不会出汗,所以你会受到视频编码器速度的限制。我不知道那是什么- 4s过去做3倍的实时,这只能得到改善。

做我建议的事需要做很多花招。您可以通过使用OpenGL快速启动GPUImage路径,尽管金属版本非常酷。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33631538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档