iPhone模拟器播放video,真正的设备不会
我正在Xcode 7.2上的Swift中构build一个应用程序
我添加了一个video到我的ViewController。 代码如下:
import UIKit import AVKit import AVFoundation class GymViewController: UIViewController { var playerViewController = AVPlayerViewController() var playerView = AVPlayer() let fileFemaleURL = NSURL(fileURLWithPath:"/Users/marienkoen/Documents/AppDevelopment/ROZsport/ROZsport/GymFemale-2434.m4v") override func viewDidLoad() { super.viewDidLoad() } @IBAction func playButtonPressed(sender: AnyObject) { playerView = AVPlayer(URL: fileFemaleURL) playerViewController.player = playerView self.presentViewController(playerViewController, animated: true){ self.playerViewController.player?.play() }
在模拟器中运行应用程序时,我可以播放此video,但在真实设备上无法运行。 我在这里错过了什么?
我可能会读这个错误,但你似乎正在使用位于您的计算机上的文件?
感谢所有的提示。 我创造了这些:
let path = NSBundle.mainBundle().pathForResource("video", ofType:"m4v")
并在button动作中调用它们:
@IBAction func playButtonPressed(sender: AnyObject) { playerView = AVPlayer(URL: NSURL(fileURLWithPath: path!)) playerViewController.player = playerView self.presentViewController(playerViewController, animated: true){ self.playerViewController.player?.play()}}
它的工作原理!
谢谢!
因为你使用的path来自模拟器,所以在真实的设备上它改变了。 如果您将此文件添加到您的项目中,则可以通过以下方式获取此URL:
func getDocumentsURL() -> NSURL { let documentsURL = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0] return documentsURL } func fileInDocumentsDirectory(filename: String) -> String { let fileURL = getDocumentsURL().URLByAppendingPathComponent(filename) return fileURL.path! }
也许问题是iPhone上的文件名是区分大小写的,但不是在模拟器中?