【问题标题】:Error when trying to play video in Xcode 7 / Swift 2尝试在 Xcode 7 / Swift 2 中播放视频时出错
【发布时间】:2015-07-30 15:31:55
【问题描述】:

当我进入视图控制器时,我试图在视图控制器中播放视频,但出现错误,如下所列。对视频播放不太熟悉,所以它应该在视图控制器中,我该如何解决错误?视频存储在 xcode 中。谢谢。

import UIKit
import MediaPlayer
import AVFoundation

class AuroraViewController: UIViewController {



@IBOutlet var AuroraViewController: UIView!

var moviePlayer: AVPlayer?


private func playVideo() {
    if let path = NSBundle.mainBundle().pathForResource("Aurora", ofType:"mp4") {
        let url = NSURL(fileURLWithPath: path)

下面的行是我得到错误的地方:表达式类型不明确,没有更多上下文

        moviePlayer = AVPlayer(contentURL: url) {
            self.moviePlayer = moviePlayer
            moviePlayer.AuroraViewController.frame = self.AuroraViewController.bounds
            moviePlayer.prepareToPlay()
            moviePlayer.scalingMode = .AspectFill
            self.AuroraViewController.addSubview(moviePlayer.view)
        }
    } else {
        debugPrint("Ops, something wrong when playing video.m4v")
    }
}

override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.
    playVideo()
}




override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}



}

更新正确代码:

import UIKit 
import AVFoundation 
import AVKit 

class AuroraViewController: AVPlayerViewController { 
private func playVideo() { 
    if let path = NSBundle.mainBundle().pathForResource("Aurora", ofType: "mp4") { 
        let url = NSURL(fileURLWithPath: path) 
        player = AVPlayer(URL: url) 
    } 
    else { 
        println("Oops, could not find resource Aurora.mp4") 
    } 
} 

override func viewDidAppear(animated: Bool) { 
    super.viewDidAppear(animated) 
    playVideo() 
} 
}

【问题讨论】:

    标签: ios xcode swift swift2 xcode7


    【解决方案1】:

    这是一次“完全重写”。

    以下人员完成了这项工作:

    将“AVKit.framework”添加到项目设置中的“Build Phases”->“Link Binary With Libraries”中。

    在 Storyboard 中,将 UIViewController 的标识更改为 AuroraViewController。

    生成的代码就是所需要的:

    import UIKit 
    import AVFoundation 
    import AVKit 
    
    class AuroraViewController: AVPlayerViewController { 
        private func playVideo() { 
            if let path = NSBundle.mainBundle().pathForResource("Aurora", ofType: "mp4") { 
                let url = NSURL(fileURLWithPath: path) 
                player = AVPlayer(URL: url) 
            } 
            else { 
                println("Oops, could not find resource Aurora.mp4") 
            } 
        } 
    
        override func viewDidAppear(animated: Bool) { 
            super.viewDidAppear(animated) 
            playVideo() 
        } 
    }
    

    【讨论】:

    • 看到上面引用的大括号{}了吗?从您的代码中删除它们。如果您事后感到困惑,请使用自动缩进。编译并快乐。
    • 我没有收到任何错误,但是当我在模拟器中打开视图控制器时,它只是一个白屏
    • 嗯?您刚刚在您的问题中给出了一个编译器错误:“表达式类型不明确,没有更多上下文”
    • 您修复了错误,但现在视频不会显示...只是一个白屏
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-05
    • 2011-11-05
    相关资源
    最近更新 更多