我正在尝试向我们TagLib-Sharp读取mp4视频中的元数据但获取UnauthorizedAccessException。我正在使用FileOpenPicker并做了正确的声明。
有什么想法吗?提前谢谢。
错误: “类型'System.UnauthorizedAccessException'的例外情况发生在taglib-sharp.DLL中,但未在用户代码中处理
其他信息:拒绝访问路径'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.";
}
}
答案 0 :(得分:0)
确保您具有对视频库的写入权限(打开资源管理器,右键单击存储视频的文件夹(而不是视频库图标!)并取消选择只读。
希望有所帮助。
答案 1 :(得分:0)
应用程序只能直接访问其安装和应用程序数据目录中的文件系统。它无权从音乐库中读取。
要访问其他地方的文件,您需要使用从文件选择器(或通过合同)返回的StorageFile对象。
此对象提供对文件的代理访问:代理具有用户的完全访问权限,可以读取用户有权阅读的任何文件。代理代表您的应用程序使用此访问权限,通过StorageFile对象提供包含文件内容的流。
希望这有帮助。
答案 2 :(得分:0)
所以请使用:VideoProperties class
比taglib容易得多。