2017-02-21 4 views
1

Всякий раз, когда я запускаю проект, он поднимает видеоплеер, но видео не воспроизводится  (the code and error). Как это исправить? В случае, если код на картинке не достаточно ясна, вот код:Воспроизведение локального видео с помощью Avplayer/kit Проблема

import UIKit 
import AVKit 
import AVFoundation 


class ViewController: UIViewController { 

    let avPlayerViewController = AVPlayerViewController() 
    var avPlayer:AVPlayer? 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from nib. 

     let urlPathString = Bundle.main.path(forResource: "small", ofType: "mp4") 

     if urlPathString != nil { 

      let movieUrl = NSURL(fileURLWithPath: "/Users/kevingerman/Desktop/Pioneer News Season 2 Episode 1.mp4") 

      self.avPlayer = AVPlayer(url: movieUrl as URL) 
      self.avPlayerViewController.player = self.avPlayer 

     } 
    } 



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


    @IBAction func playButtonTapped(_ sender: AnyObject) { 
     //Trigger the video to play 
     self.present(self.avPlayerViewController, animated: true) {() -> Void in self.avPlayerViewController.player?.play() } 


    } 

}

+0

ли файл фильм включен в вашем проекте? Откройте Навигатор проекта (cmd - 1) Затем выберите корень проекта> Целевая задача> Фазы сборки> Скопируйте ресурсы пакета. Ваше видео ДОЛЖНО быть здесь. Если это не так, то вы должны добавить его с помощью кнопки плюс – cpatmulloy

+0

Почему вы проверяете строку 'urlPathString' за нуль, а затем добавляете еще один URL-адрес для AVPlayer? –

ответ

0

Убедитесь, что ваш urlPathString не равен нулю. я не знаю, что следующий код означает:.

let movieUrl = NSURL(fileURLWithPath: "/Users/kevingerman/Desktop/Pioneer News Season 2 Episode 1.mp4") 

Я думаю, что тренажер не может получить путь к файлу, который в вашем Маке (я не уверен, я не делал этого раньше) , Вы можете проверить целевое членство файла.

enter image description here

Код может работать следующим образом:

var urlPaht = Bundle.main.url(forResource: "small", withExtension:"mp4") 
if urlPaht == nil { 
     urlPaht = NSURL(fileURLWithPath: "/Users/kevingerman/Desktop/Pioneer News Season 2 Episode 1.mp4") 
} 
self.avPlayer = AVPlayer(url: movieUrl as URL) 
self.avPlayerViewController.player = self.avPlayer 
1

Решение предложило в комментариях, и один @Guan ответил оба правильны.

Ваш urlPathString фактически NIL здесь,

Чтобы заставить его работать -

1- Либо добавить Target членство, как это было предложено в комментарии и выше ответ или

Сделайте следующее

1.1- Удалить small.mp4 из комплекта, убедитесь, что вы move it to trash

2,1 - Перейти в корзину, и перетащить файл mp4 в проект еще раз, вы получите окно, как это - Window on drag and drop

При добавлении его обратно убедитесь, что вы -

Проверить projectTarget флажок, как на скриншоте ниже -

Checked box for app target

Убедитесь, что имя файла small.mp4

Смежные вопросы