AVPlayerLayer как SCNMaterial не отображается, звук воспроизводится нормально

Я пытаюсь использовать AVPlayerLayer в качестве SCNMaterial, который будет назначен SCNSphere.

На основе:

Я создаю игрока, создаю слой игрока и пробовал с backgroundLayer и без него, чтобы назначить его в качестве материала для моей SCNSphere.

Проблема в том, что я получаю тот же результат, что и здесь: SCNMaterialProperty не отображает слой

Аудио воспроизводится, видео вообще не отображается!

Часть кода довольно проста:

    // 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 в качестве подслоя дает тот же результат.

Любая помощь приветствуется


person David Homes    schedule 29.10.2015    source источник
comment
Удалось ли вам это решить?   -  person Guig    schedule 16.09.2016
comment
Также есть эта проблема   -  person Byron Coetsee    schedule 20.09.2016


Ответы (2)


@Guig @Byron, взгляните на SKVideoNode. Мне пришлось использовать sprikeKit + SceneKit, чтобы получить то, что я хотел.

person David Homes    schedule 20.09.2016

В последних версиях SceneKit использование SKScene и SKVideoNode не требуется. Вы можете напрямую установить AVPlayer как содержимое экземпляра SCNMaterialProperty.

person mnuages    schedule 22.04.2018