iPhone simulator plays video, real device won'

2019-02-25 16:31发布

问题:

I am building an app in Swift on Xcode 7.2

I added a video to my ViewController. Here's the code:

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

I can play this video when running the app in the simulator, but it will not work on a real device. What am I missing here?

回答1:

I might be reading this wrong, but you appear to be using a file located on your computer?



回答2:

Thanks for all the hints. I created these:

let path = NSBundle.mainBundle().pathForResource("video", ofType:"m4v")

And called them in the button action:

@IBAction func playButtonPressed(sender: AnyObject) {

playerView = AVPlayer(URL: NSURL(fileURLWithPath: path!))
playerViewController.player = playerView

self.presentViewController(playerViewController, animated: true){
self.playerViewController.player?.play()}}

And it WORKS!!

Thanks!



回答3:

Because your path you was using is from simulator, on real device it changed. if you added this file to your project, you can get this url via:

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!

}


回答4:

Maybe the problem is that filenames are case-sensitive on the iPhone, but not in the simulator?