2

我正在使用 Xamarin 编写 iOS 应用程序,但在将视频保存到我的照片库时遇到问题。我正在使用(下面WriteVideoToSavedPhotosAlbum的代码)的方法ALAssetsLibrary,但视频从未保存。我没有收到错误,但我也没有在完成块中收到资产 URL。

有谁知道这里会发生什么?

var url = NSUrl.FromFilename (this.FilePath);
ALAssetsLibrary library = new ALAssetsLibrary ();
library.WriteVideoToSavedPhotosAlbum (url, delegate(NSUrl u, NSError e)
    {
        if (e != null)
        {
            new UIAlertView ("Error", "Unable to save video to library", null, "Ok").Show();
        }
    });

需要注意的一点是,该FilePath值是存储在应用程序文档目录中的视频。

谢谢

4

1 回答 1

0

需要注意的一点是 FilePath 值是存储在应用程序文档目录中的视频吗?您到底在寻找什么?因为 WriteVideoToSavedPhotosAlbum 用于存储使用相机捕获的视频,因为我们无法直接获取其 url,因此我们必须先将使用相机捕获的视频或图像存储到设备,然后我们可以使用 ALAssetsLibrary 获取其 url 和其他信息

我已经这样做了,它对我有用,希望这可以帮助你:

ALAssetsLibrary library = new ALAssetsLibrary();
library.WriteImageToSavedPhotosAlbum(originalImage.CGImage, meta, (assetUrl, error) =>
{
    library.AssetForUrl(assetUrl, delegate (ALAsset asset)
    {
        ALAssetRepresentation representation = asset.DefaultRepresentation;
        if (representation != null)
        {
            string fileName = representation.Filename != null ? representation.Filename : string.Empty;
            var filePath = assetUrl.ToString();
            var extension = filePath.Split('.')[1].ToLower();
            var mimeData = string.Format("image/{0}", extension);
            var mimeType = mimeData.Split('?')[0].ToLower();
            var documentName = assetUrl.Path.ToString().Split('/')[1];

        }
    }, delegate (NSError err) {
        Console.WriteLine("User denied access to photo Library... {0}", err);
    });
});   
于 2019-07-06T11:14:34.453 回答