使用 localIdentifier 访问视频,swift

Access video using localIdentifier, swift

我想打开一个视频,我有本地标识符。我知道我可以像这样创建一个 AVPlayer,

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

是否可以通过提供本地标识符来打开视频?

我将视频用作 PHAsset 来获取其本地标识符。可以使用 PHFetchOptions 和 fetchAssetCollectionsWithLocalIdentifiers,但是,它就像一个查询。如果我有 localIdentifier,是否有更直接的方法来访问视频或图像?

如果您要在 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)
    }
)