0

我正在尝试使用 TagLib-Sharp 从 mp4 视频中读取元数据,但得到 UnauthorizedAccessException。我正在使用 FileOpenPicker 并做出了正确的声明。

有任何想法吗?提前致谢。

错误: “在 taglib-sharp.DLL 中发生‘System.UnauthorizedAccessException’类型的异常,但未在用户代码中处理

附加信息:对路径“C:\Users\user\Videos\VideoName.mp4”的访问被拒绝。”

代码:

     private async void Button_Click(object sender, RoutedEventArgs e)
        {

      FileOpenPicker openPicker = new FileOpenPicker();
      openPicker.ViewMode = PickerViewMode.Thumbnail;
      openPicker.SuggestedStartLocation = PickerLocationId.VideosLibrary;
      openPicker.FileTypeFilter.Add(".mp4");
      StorageFile selection = await openPicker.PickSingleFileAsync();
      var selectionstring = selection.Path.ToString();

        if (selection != null) 
        {
            //TagLib.File file = TagLib.File.Create(selectionstring);  //<-Exception thrown here
            //TagLib.Tag Tag = file.GetTag(TagLib.TagTypes.Id3v2);
            //var frame = file.Tag.Comment.ToString();

            OutputTextBlock.Text = selectionstring;

            var stream = await selection.OpenAsync(Windows.Storage.FileAccessMode.Read);                
            videoWindow.SetSource(stream, selection.ContentType);
            videoWindow.Play(); //The video will play just fine so I know I have read access.
            } 
            else 
            { 
                OutputTextBlock.Text = "Operation cancelled."; 
            }       
   }
4

3 回答 3

0

确保您对视频库具有写入权限(打开资源管理器,右键单击存储视频的文件夹(不是视频库图标!)并取消选择只读。

希望有帮助。

于 2013-12-22T13:23:00.833 回答
0

应用程序只能直接访问其安装和应用程序数据目录中的文件系统。它没有从音乐库中读取的权限。

要访问其他地方的文件,您需要使用从文件选择器(或通过合约)返回的 StorageFile 对象。

此对象提供对文件的代理访问:代理具有用户的完全访问权限,并且可以读取用户有权读取的任何文件。代理代表您的应用程序使用此访问权限,通过 StorageFile 对象提供包含文件内容的流。

希望这可以帮助。

Windows 应用商店应用程序中的文件访问和权限

于 2013-12-22T14:58:45.627 回答
0

所以使用它:VideoProperties 类

比 taglib 容易得多。

于 2014-01-21T22:49:08.000 回答