[英]What is the fastest and most efficient way on iOS to downscale a HD video to SD?
[英]What is the most efficient way to render a streamed video in SceneKit iOS?
我正在开发一个显示流式视频的 SceneKit 应用程序。 在其中我创建了一个平面,将 UIImage 附加到它,然后保存 CALayer。 后来我得到一个压缩视频stream,我把它解压成一个CGImage。 然后我用新的 CGImage 更新 CALayer 的内容。 这一切都有效,但是帧速率非常慢,而且似乎不是流式传输或解压缩问题。
我的问题是:有没有更快、更有效的方法来做到这一点? 我已经对 SCNPlane 进行了旋转和偏移转换。 但是,这些应该只是矩阵更新,不应更改渲染时间,因为您必须通过相同的矩阵 go 以在其原始坐标中渲染 SCNPlane。
转换为UIImage
或CGImageRef
是一项昂贵的操作。 它以非最佳格式创建图像的 CPU 表示,然后需要再次转换为 GPU 表示 ( MTLTexture
)。 SceneKit 支持将AVPlayer
实例作为材质属性的contents
。 它应该是最简单和最有效的方法,将一个视频放到一个平面上。
更新:如果您的应用程序管道是围绕CVImageBufferRef
(又名CVPixelBufferRef
)构建的,那么CVMetalTextureCache
和CVMetalTextureCacheCreateTextureFromImage
是您应该利用的 API 来有效地生成MTLTexture
实例以设置为材质属性的contents
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.