我正在尝试将AVPlayerLayer用作SCNMaterial分配给SCNSphere。
我创建一个玩家,创建一个玩家图层并尝试使用和不使用backgroundLayer作为我的SCNSphere的材料
问题是,我得到的报告结果相同: SCNMaterialProperty not rendering layer
音频播放,视频根本无法呈现!
代码很简单:
// video player
let path = NSBundle.mainBundle().pathForResource("tb", ofType: "mp4")
let url = NSURL(fileURLWithPath: path!)
let player = AVPlayer(URL: url) // AVPlayer
player.actionAtItemEnd = .None
player.play()
let frame = CGRectMake(0, 0, 300, 300)
let playerLayer = AVPlayerLayer()
playerLayer.videoGravity = AVLayerVideoGravityResizeAspectFill
playerLayer.frame = frame
playerLayer.player = player
sceneMaterial = SCNMaterial()
sceneMaterial.specular.contents = UIColor.whiteColor()
sceneMaterial.shininess = 0.5
sceneMaterial.diffuse.contents = playerLayer
sphere.materials = [sceneMaterial]
如上所述,我是否使用backgroundLayer:CALayer并将playerLayer添加为子图层会产生相同的结果。
感谢任何帮助
答案 0 :(得分:1)
@Guig @Byron,看看SKVideoNode。我不得不使用sprikeKit + SceneKit来获得我想要的东西
答案 1 :(得分:1)
在最新版本的SceneKit中,使用SKScene
和SKVideoNode
不是必需的。您可以直接将AVPlayer
设置为SCNMaterialProperty
实例的内容。