1

我的应用是播放 h.264 视频的 AR 应用。我们通过 AVPlayer 创建了 SKVideoNode,并将 SKVideoNode 设置为 SKScene,然后创建 SCNNode 来涉及这个 SKScene。

- 示例代码

AVPlayer *avPlayer = [self getMoviePlayer:path];
SKVideoNode *videoNode = [[SKVideoNode alloc]initWithAVPlayer: avPlayer];

CGSize videoSize = CGSizeMake(100, 50);
videoNode.size = videoSize;

videoNode.position = CGPointMake(50, 50);

videoNode.yScale = -1.0;

SKScene *skScene = [[SKScene alloc] initWithSize:videoSize];
skScene.scaleMode = SKSceneScaleModeAspectFit;

[skScene addChild:videoNode];

SCNNode *planeNode = [[SCNNode alloc] init];
planeNode.geometry =  [[SCNPlane alloc] init];

SCNMaterial *material;
material = [[SCNMaterial alloc] init];

material.diffuse.contents = skScene;
planeNode.geometry.firstMaterial = material;

========================我们使用这个SCNNode来播放视频。

它在 iOS12.4 之前运行良好,但是当我在 iOS13-beta 设备上对其进行测试时,它在听到声音时显示黑屏。

4

2 回答 2

1

我有一个非常相似的问题。我还认为这可能是 iOS13 的错误。但我无法在隔离特定 SKVideNode 代码的测试项目中重现该问题。

事实证明,这个问题的根本原因是在我的 info.plist 文件中,我将 PrefersOpenGL 设置为 YES。将其更改为 NO(或删除它)解决了我的问题,即它没有在我的 SKVideoNode iOS 13 中显示视频。看起来该更改也适用于 iOS 12.4 和 11.4。

于 2019-11-17T23:48:35.150 回答
0

我有同样的问题。我用替换解决了它:

[myViewController.layer addSublayer:playerViewController.view.layer];

经过:

[myViewController addSubview:playerViewController.view];

如果它可以帮助你。

于 2019-09-13T12:18:08.403 回答