从 Gallery Asset 中检索 AVPlayerItem

Retrieving AVPlayerItem from Gallery Asset

我正在尝试使用 AVPlayerAVPlayerItem 播放视频。

我正在使用以下代码:

asset = AVAsset.FromUrl(new NSUrl(GalleryURL));
playerItem = new AVPlayerItem(asset);
playerItem.AddObserver(this, (NSString)"status", NSKeyValueObservingOptions.OldNew, IntPtr.Zero);
player = new AVPlayer(playerItem);

属性 GalleryURL 是以下之一:

1.) 当将视频保存到图库 时,我从 ALAssetsLibrary 实例调用中得到这个 url:WriteVideoToSavedPhotosAlbum(url, (galleryPath, error) => { ... });

其中 "galleryPath" 是这样的:

file:///var/mobile/Containers/Data/Application/0D510365-4A63-425B-840C-A4E18BD870A8/Documents/...

这很好用,我可以通过添加的观察者创建 AVAsset 并检索 AVPlayerItemStatus,尤其是状态 "ReadyToPlay"。

2.) 但是 当我从图库中检索视频时 ,url 看起来不一样:

assets-library://asset/asset.MOV?id=EB9FC214...

在这种情况下,我不能 能够检索到可用的 AVAsset

如何获取第 2 部分来创建可用于视频播放的有效 AVAsset?我相信这适用于 iOS 11.

之前的 iOS 版本

Landu Lu - MSFT 帮我找到了答案:

他告诉我,我从 UIImagePickerController 收到了 2 条路径:

无法使用 asset-library 路径,也许我必须删除 "assets-library:" 部分?但可以使用以 "file://" 开头的路径。插件的问题是, url 的开头被截断了,开头没有 "file://" 。我手动添加了这个字符串并且它有效!非常感谢!