不能在SpriteKit Swift中使用SKVideoNode播放视频



下面是播放视频的代码I代码。如果我点击一个按钮,它就会调用一个方法其中包含以下用于播放视频的代码片段:

if let urlStr = NSBundle.mainBundle().pathForResource("into_main_v3", ofType: "mp4")
    {
        let url = NSURL(fileURLWithPath: urlStr)
        print(url)
        player = AVPlayer(URL: url)
        videoNode = SKVideoNode(AVPlayer: player!)
        videoNode?.position = CGPointMake(frame.size.width/2, frame.size.height/2)
        videoNode?.size = CGSize(width: self.size.width, height: self.size.height)
        videoNode?.zPosition = 1
        addChild(videoNode!)
        videoNode!.play()
    }

我得到这样的消息打印在我的控制台::调用-display没有效果。

当我单击按钮时,它会转到这个方法,但永远不会超出urlStr变量。我三次检查和资源是可用的在我的项目的mp4视频,但它仍然不会运行!它不在任何文件夹中,路径是正确的。它以前工作,但突然不工作,不知道为什么!

编辑:

问题解决:问题是在构建阶段复制mp4文件以确保其复制到iPad中

所以,当我试图弄清楚这一点时,我有几件事错了…首先,我的URL不正确,所以我要检查它是否正确(文件名错误)。其次,当我加载视频时,我使用的是。mov扩展名,这对我不起作用。我把它改成。mp4,视频就加载了。第三,视频的显示与你在场景中的位置有很大关系。我不能从上面的代码示例中告诉你太多关于你的场景,但重要的是要确保你使用正确的坐标和大小正确地放置视频节点,否则它将不会显示。我试着把尺寸改成(1,1)看看能不能显示出来。

Swift 5的更新,因为CGPointMake和其他一些已经过时了:

if let urlStr = Bundle.main.path(forResource: "into_main_v3", ofType: "mp4")
    {
        let url = NSURL(fileURLWithPath: urlStr)
        print(url)
        let player = AVPlayer(url: url as URL)
        let videoNode = SKVideoNode(avPlayer: player)
        videoNode.position = CGPoint(x: frame.size.width/2, y: frame.size.height/2)
        videoNode.size = CGSize(width: self.size.width, height: self.size.height)
        videoNode.zPosition = 123
        addChild(videoNode)
        videoNode.play()
    }

最新更新