从Gallery Asset中检索AVPlayerItem

时间:2018-03-05 10:52:15

标签: c# ios xamarin.ios avasset avplayeritem

我尝试使用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实例调用中获取此网址:WriteVideoToSavedPhotosAlbum(url, (galleryPath, error) => { ... });

其中" galleryPath"是这样的:

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

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

2。)但是当我从图库中检索视频时,网址看起来不同:

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

在这种情况下我能够检索正常工作的AVAsset

我如何才能获得第2部分来创建可用于视频播放的工作AVAsset?我相信这适用于iOS 11之前的iOS版本。

1 个答案:

答案 0 :(得分:0)

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

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

无法使用资产库路径,也许我必须删除" assets-library:"部分?但是以" file://"开头的路径可用于。插件的问题是,网址的开头被切断了,没有"文件://"在开始。我手动添加这个字符串,它的工作原理!非常感谢!