Симулятор iPhone воспроизводит видео, реальное устройство не будет

Я создаю приложение в Swift на Xcode 7.2.

Я добавил видео в свой 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()
}

Я могу воспроизвести это видео при запуске приложения в симуляторе, но оно не будет работать на реальном устройстве. Что мне здесь не хватает?


person Koen Mariën    schedule 14.12.2015    source источник


Ответы (4)


Возможно, я неправильно понимаю, но вы, кажется, используете файл, расположенный на вашем компьютере?

person caseynolan    schedule 14.12.2015

Спасибо за все подсказки. Я создал их:

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

И назвал их в действии кнопки:

@IBAction func playButtonPressed(sender: AnyObject) {

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

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

И это РАБОТАЕТ!!

Спасибо!

person Koen Mariën    schedule 14.12.2015

Поскольку ваш путь, который вы использовали, взят из симулятора, на реальном устройстве он изменился. если вы добавили этот файл в свой проект, вы можете получить этот 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!

}
person Cong Tran    schedule 14.12.2015

Может проблема в том, что имена файлов на айфоне чувствительны к регистру, а в симуляторе нет?

person Reinhard Männer    schedule 14.12.2015
comment
это путь ... кажется, он использует файл на своем компьютере, лол - person Tj3n; 14.12.2015
comment
Да, он есть. Он новичок! - person Koen Mariën; 14.12.2015