首页 文章

Windows store 8 app - 从NAS驱动器播放文件

提问于
浏览
0

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

我无法使用MediaElement Control从文件路径播放媒体 .

我使用c#和MVVM,我遇到的问题是,大多数示例向您展示如何选择文件并使用流播放它 . 这很好但是我不想让孩子(2岁和5岁)每次都这样做 .

试图避免这种情况并将文件位置存储在我的数据库中,即192.168.1.3 \ Movies \ Micky Mouse.mp4

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

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

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

有没有人使用URI(文件路径)在本地存储之外实现视频播放

谢谢你的任何指导

1 回答

  • 1

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

    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();
                    }
                }
    

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

    @即使你的评论想要没有效率,我也很感激你看看

相关问题