Как воспроизвести видео с помощью файлаURL - PullRequest
0 голосов
/ 31 октября 2018

Я могу получить выходной файл URL, как показано ниже, используя пользовательский видеомагнитофон.

file:///var/mobile/Containers/Data/Application/5EB769B8-193F-4C9F-982A-48892333A8F0/Documents/2018-Oct-31%2012:16:54output.mov

Мне нужно воспроизвести это видео, используя AVPlayerViewController. Я использую приведенный ниже код для воспроизведения видео в моем viewcontroller. Но это не работает. Может ли кто-нибудь направить меня к этой задаче?

func pathVideo()

{


 if let path = Bundle.main.path(forResource: "file:///var/mobile/Containers/Data/Application/5EB769B8-193F-4C9F-982A-48892333A8F0/Documents/2018-Oct-31%2012:16:54output.mov", ofType: "mov", inDirectory: "file:///var/mobile/Containers/Data/Application/5EB769B8-193F-4C9F-982A-48892333A8F0/Documents/2018-Oct-31%2012:16:54output.mov")

 {


    let video  = AVPlayer(url: URL(fileURLWithPath: path))



    let playerViewController = AVPlayerViewController()


    playerViewController.player = video

    present(playerViewController, animated: true, completion:
    {

        video.play()

    })

    }

}

Ответы [ 2 ]

0 голосов
/ 31 октября 2018

Попробуйте объявить let playerViewController = AVPlayerViewController() в области видимости класса вне области метода. Я думаю, это освобождается.

И снова точка зрения Камаршада верна. Вы должны получить URL из fileManager, а не из пакета приложений

0 голосов
/ 31 октября 2018

Здесь пара вещей не так с вашим кодом. Как вы упомянули, у вас есть видео, помещенное в каталог документов приложения (путем просмотра пути к видеофайлу), поэтому вы не можете получить путь, вызвав метод Bundle.main.path. Он используется для получения пути к ресурсам локального пакета приложения (файлы, которые вы поместили перед сборкой приложения). Подробнее о комплект класс

Итак, вам нужно получить доступ к каталогу документов примерно так.

let documentsPath = FileManager.default.urls(for: .cachesDirectory, in: .userDomainMask).first! //This piece of code will return path of document directory."
let videoPath = documentsPath.appendPathComponent("2018-Oct-31%2012:16:54output.mov").path //Append your video name so that complete path could be prepared and access path property.

Теперь вы можете использовать этот путь к видео и перейти к URL

let video  = AVPlayer(url: URL(fileURLWithPath: videoPath))

Я думаю, вы поняли мою точку зрения и надеюсь, что это поможет вам исправить код.

Примечание: Написанный мною фрагмент кода совместим со Swift 4.0, поэтому вам может потребоваться внести некоторые изменения в первые две строки.

...