Windows store 8应用程序-从NAS驱动器播放文件

本文关键字:NAS 驱动器 播放 文件 store 应用程序 Windows | 更新日期: 2023-09-27 18:07:15

我为家里的孩子们创建了一个小应用程序,它可以连接到我的Drobo上,我有大约1000部电影。该应用程序获取这些电影的所有信息,并将信息存储在SQLite数据库中。

使用MediaElement控件从文件路径播放媒体时遇到问题。

我使用c#与MVVM,我的问题是,大多数的例子告诉你如何选择一个文件,并使用流播放它。这很好,但我不希望孩子们(2岁和5岁)每次都这样做。

为了避免这种情况,我将文件位置存储在我的数据库ie中192.168.1.3 '电影'米奇Mouse.mp4

已经创建了使用URI设置源的代码,并将控件源(xaml)绑定到属性。你可以猜到媒体没有播放。

如果我把媒体放入本地存储,它可以正常播放,所以我知道这个问题与访问权限直接相关。我发现的是,如果我选择文件夹位置并播放电影说5分钟后它会播放,但是如果我在第二天尝试这个视频不播放。

对我来说,似乎有一个定时访问令牌到NAS驱动器。

这里有人使用URI (filepath)在本地存储之外实现视频播放吗

感谢您的指导

Windows store 8应用程序-从NAS驱动器播放文件

文件/文件夹选择器需要授予初始权限,一旦授予,将文件添加到将来的访问列表中。

private async void ChooseFile()
    {
        FileOpenPicker openPicker = new FileOpenPicker();
        openPicker.ViewMode = PickerViewMode.Thumbnail;
        openPicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
        openPicker.FileTypeFilter.Add(".wmv");
        openPicker.FileTypeFilter.Add(".jpeg");
        openPicker.FileTypeFilter.Add(".png");
        StorageFile file = await openPicker.PickSingleFileAsync();
        if (file != null)
        {
            Windows.Storage.AccessCache.StorageApplicationPermissions.FutureAccessList.Add(file, "Test");
        }
        else
        {
            // The file picker was dismissed with no file selected to save
        }

}

如何获取文件并播放媒体

foreach (AccessListEntry itm in StorageApplicationPermissions.FutureAccessList.Entries)
            {
                if (itm.Metadata == "Test")
                {
                    StorageFile actualFile = await StorageApplicationPermissions.FutureAccessList.GetFileAsync(itm.Token);
                    var stream = await actualFile.OpenAsync(FileAccessMode.Read);
                    mediaPlayer.SetSource(stream, actualFile.ContentType);
                    mediaPlayer.Play();
                }
            }

这是一个令人头痛的问题,我相信很多人会喜欢这个解决方案:)

尽管你的评论没有什么意义,但我还是很感谢你的评论