【问题标题】:AVPlayerLayer as SCNMaterial not rendered, audio playing fineAVPlayerLayer 作为 SCNMaterial 未渲染,音频播放正常
【发布时间】:2023-03-30 22:43:01
【问题描述】:

我正在尝试使用 AVPlayerLayer 作为要分配给 SCNSphere 的 SCNMaterial。

基于: https://developer.apple.com/library/mac/samplecode/SceneKit_Slides_WWDC2013/Listings/Scene_Kit_Session_WWDC_2013_Sources_Slides_ASCSlideMaterialLayer_m.html

我创建了一个播放器,创建了一个播放器层,并尝试使用和不使用 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 添加为子层都会得到相同的结果。

感谢任何帮助

【问题讨论】:

  • 你能解决这个问题吗?
  • 也有这个问题

标签: avfoundation calayer avplayer scenekit avplayerlayer


【解决方案1】:

@Guig @Byron,看看 SKVideoNode。我必须使用 sprikeKit + SceneKit 来完成我想做的事情

【讨论】:

    【解决方案2】:

    在最新版本的 SceneKit 中,不需要使用 SKSceneSKVideoNode。您可以直接将AVPlayer 设置为SCNMaterialProperty 实例的内容。

    【讨论】:

      猜你喜欢
      • 2023-04-01
      • 2017-06-29
      • 1970-01-01
      • 1970-01-01
      • 2017-12-28
      • 2023-03-14
      • 1970-01-01
      • 2012-03-29
      • 2021-09-23
      相关资源
      最近更新 更多