从 Gallery Asset 中检索 AVPlayerItem
Retrieving AVPlayerItem from Gallery Asset
我正在尝试使用 AVPlayer
和 AVPlayerItem
播放视频。
我正在使用以下代码:
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://" 。我手动添加了这个字符串并且它有效!非常感谢!
我正在尝试使用 AVPlayer
和 AVPlayerItem
播放视频。
我正在使用以下代码:
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://" 。我手动添加了这个字符串并且它有效!非常感谢!