Получение видео из каталога активов с использованием ресурсов по запросу


Я приписал своему видео. mp4 тег "tokyo", например, и установил его как установленный во время установки приложения.

Теперь, прежде чем я использовал путь, чтобы получить его из моих ресурсов, теперь он отличается, потому что он расположен в каталоге активов.

После того, как я нашел документы, я попробовал что-то вроде:

NSBundleResourceRequest(tags: ["tokyo"]).beginAccessingResourcesWithCompletionHandler { (error) -> Void in
let tokyoVideo = NSDataAsset(name: "tokyo")

Так что я могу сделать: tokyoVideo.данные для доступа к NSData, но я использую AVPlayer, который принимает параметр NSURL, а не данные.

Так что же вы можете предложить мне для получить NSURL моего видео ? Является ли каталог активов только для данных ? Значит, я не могу установить там свое видео ?

3 3

3 ответа:

Я думаю, что его можно использовать каталог активов для видео вещей, его упростить управление изображениями. Используйте для этого NSDataAsset. Просмотрите последнюю строку в таблице ниже.

Обратитесь к этой ссылке для получения дополнительной информации

В следующей таблице перечислены типы ресурсов, которые могут быть помечены как ресурсы по требованию.

Введите описание изображения здесь

Проблема заключается в том, чтобы поместить mp4 в каталог активов. Ресурсы не обязательно должны быть в каталоге активов, чтобы получить доступ к ним как к ресурсам по требованию.

Переместите свои активы из каталога в рабочую область и пометьте их, а затем используйте свойство bundle NSBundleResourceRequest

import UIKit

class ViewController: UIViewController {
    var bundleRequest = NSBundleResourceRequest(tags: [])

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        let tags: Set<String>  = ["odr"]
        bundleRequest = NSBundleResourceRequest(tags: tags)

        bundleRequest.beginAccessingResourcesWithCompletionHandler { (error:NSError?) -> Void in
            if let e = error {
                print(e)
                return
            }
            NSOperationQueue.mainQueue().addOperationWithBlock({ () -> Void in
                if let url = self.bundleRequest.bundle.URLForResource("tokyo", withExtension: "mp4") {
                    //use the url to play the video with avplayer
                }

            })
        }
    }

}

Конечно, фильм будет в конечном итоге храниться в файле данных.

NSDataAsset