iphone - SceneKit - AVPlayer 材质崩溃
问题描述
我正在使用视频作为 SCNNode 的材料:
geo.materials.first?.diffuse.contents = AVPlayer(url: url)
这在大多数 iOS 设备上运行良好,但在较旧的 iPhone 5s 上崩溃并出现以下错误:
-[MTLTextureDescriptorInternal validateWithDevice:], line 781: error 'MTLTextureDescriptor has invalid pixelFormat (520).'
-[MTLTextureDescriptorInternal validateWithDevice:]:781: failed assertion `MTLTextureDescriptor has invalid pixelFormat (520).'
是否有解决此问题的方法/解决方法?
解决方案
我认为这是 iPhone 5s 的硬件问题。尝试使用 aSKVideoNode
作为解决方法。对于 iPhone 5s,SpriteKit 的对象要“轻”得多。
var videoNode: SKVideoNode? = {
guard let urlString = Bundle.main.path(forResource: "file",
ofType: "m4v") else {
return nil
}
let url = URL(fileURLWithPath: urlString)
let item = AVPlayerItem(url: url)
let player = AVPlayer(playerItem: item)
return SKVideoNode(avPlayer: player)
}()
希望这可以帮助。
推荐阅读
- php - 如何在 laravel 代码中转换 MySql 代码?
- esp8266 - 如何将 esp.flash_read() 转换为字符串
- dto - 如何在 api-platform 中为 Dto 模型提供自定义名称?
- azure - 使用 DataTools 实用程序提取 Azure SQL 数据库
- c++ - 继承构造函数的 C++ 可见性
- qt - QT的新风格铸造
- typescript - 如何在子类中更改扩展父类的属性类型
- javascript - 如何使用 minimist 打印使用帮助?
- python - 使用 cx_Freeze 从 Python 文件创建 exe 文件
- kubernetes - 为什么 Kubernetes v1.12 不再需要升级延迟?