无法在SpriteKit Swift中使用SKVideoNode播放视频

时间:2015-10-02 17:11:40

标签: ios swift ios7 sprite-kit xcode7

以下是我播放视频的代码。如果我点击一个按钮,那么它会调用一个方法,该方法包含播放视频的代码段:

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中。

2 个答案:

答案 0 :(得分:1)

因此,当我试图找出答案时,我有几处错误……首先,我的URL不正确,因此我将检查以确保它是正确的(文件名错误)。其次,当我加载视频时,我使用的是.mov扩展名,该扩展名对我不起作用。我将其更改为.mp4,并加载了视频。第三,视频的显示与您将其放置在场景中的位置有很大关系。我不能从上述代码示例中了解到您的场景,但是确保使用正确的坐标和大小正确放置视频节点非常重要,否则它将不会显示。我会尝试将您的大小更改为(1,1),然后查看是否显示出来。

答案 1 :(得分:0)

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()
    }