Доступ к видео с помощью localIdentifier, swift

Я хочу открыть видео, для которого у меня есть localIdentifier. Я знаю, что могу создать такой AVPlayer,

let player = AVPlayer(URL: NSURL(fileURLWithPath: path))

Можно ли открыть видео, указав его localIdentifier?

Я использую видео в качестве PHAsset для получения его localIdentifier. Можно использовать PHFetchOptions и fetchAssetCollectionsWithLocalIdentifiers, однако это будет похоже на запрос. Есть ли более прямой способ доступа к видео или изображению, если у меня есть его localIdentifier?

1 ответ

Решение

Если вы собираетесь представить видео актив в AVPlayerЛучшее, что можно попросить у Фото для предоставления игроку, это AVPlayerItem, Предположим, у вас есть localIdentifier для видео актива в библиотеке фотографий, вам нужно сначала найти PHAsset представляя этот актив:

let assets = PHAsset.fetchAssetsWithLocalIdentifiers([identifier], options: nil)
guard let asset = assets.firstObject as? PHAsset
    else { fatalError("no asset") }

Когда у вас есть PHAsset ты можешь использовать PHImageManager для получения видео контента актива (в форме AVPlayerItem):

let options = PHVideoRequestOptions()
options.networkAccessAllowed = true
let requestID = PHImageManager.defaultManager().requestPlayerItemForVideo(asset, 
    options: options, 
    resultHandler: { playerItem, info in
        guard let item = playerItem
            else { fatalError("can't get player item: \(info)") }

        // send the item to whatever you're playing AV content with, e.g.
        myAVPlayerViewController.player = AVPlayer(playerItem: item)
    }
)
Другие вопросы по тегам