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

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

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

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

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

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

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

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

Другие вопросы по тегам