SceneKit - AVPlayer材质崩溃

问题描述 投票:1回答:1

我正在使用视频作为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 swift avfoundation scenekit ios11
1个回答
0
投票

我认为这是iPhone 5s的硬件问题。尝试使用SKVideoNode作为解决方法。对于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)
}()

希望这可以帮助。

© www.soinside.com 2019 - 2024. All rights reserved.