我想通过UIImagePickerController选择(或记录)一个视频的缩略图。在我的选取器的FinishedPickingMedia方法中,我得到了我认为是视频文件的路径,并用它将录制内容保存到相册中。新录制的视频确实出现在我的相册中。现在得到缩略图...如何从MonoTouch获取现有的视频缩略图图像?
我试过在几种方式中使用ALAssetsLibrary。首先,我列举了所有视频,并尝试从资产的UtiToUrlDictionary.Values [0]值中找到匹配项,从而显示其文件路径。没有条目匹配从FinishedPickingMedia方法的mediaUrlKey获得的路径。
我的第二次尝试是使用ALAssetsLibrary的AssetForUrl()方法。再次,我尝试了我的FinishedPickingMedia方法的mediaUrlKey,但没有匹配。
的的UIImagePickerController - > FinishedPickingMedia - > mediaUrlKey返回的路径:
file://localhost/private/var/mobile/Applications/73037738-C060-4DE6-A1CA-698E6BE083F2/tmp//trim.iRBwWw.MOV
痛苦的挖掘后,在我的图书馆检查每一个视频时,它从ALAssetsLibrary同一个视频的路径是:
assets-library://asset/asset.MOV?id=B073FCF6-83ED-436B-AFD8-42D0A6C70FC6&ext=MOV
为什么UIIMagePickerController和ALAssetsLibrary之间的视频路径不同?我怎样才能让ALAssetsLibrary返回从UIImagePickerController中选取的相同视频?
[为选择器代码]
public override void FinishedPickingMedia (UIImagePickerController picker, NSDictionary info)
{
var mediaUrlKey = new NSString("UIImagePickerControllerMediaURL");
var mediaPath = (NSUrl) info.ObjectForKey(mediaUrlKey);
if(recordView.RecordVideo)
{
if(mediaPath != null)
{
if(UIVideo.IsCompatibleWithSavedPhotosAlbum(mediaPath.Path))
{
UIVideo.SaveToPhotosAlbum(mediaPath.Path, SaveToPhotosAlbumResults);
}
else
{
using (var alert = new UIAlertView("Problem Encountered",
"Unable to save this recording.", null, "Ok!", null))
{
alert.Show();
}
}
}
}
else
{
recordView.VideoFileLocation = mediaPath;
//ALAssetsLibrary library = new ALAssetsLibrary();
//library.AssetForUrl(mediaPath, GetAssetResult, GetAssetError);
}
recordView.VideoFileLocation = mediaPath;
Console.WriteLine("***" + recordView.VideoFileLocation.ToString()+ "***");
recordView.ShowUploadButton();
recordView.SetThumbnailImage();
picker.DismissModalViewControllerAnimated(true);
}
谢谢