无法播放此视频Xamarin.Android

时间:2019-04-07 11:03:28

标签: c# xamarin.android mediacontroller

我需要在VideoView上播放sdcard中的视频,并且总是收到“无法播放此视频消息”的信息。我正在物理设备上进行测试。文件位于外部存储设备上,可以通过内置的电话应用程序正常播放。

我之前已经阅读了一些主题,并尝试更改文件格式和分辨率无效。

第二个猜测是文件的路径,因此尝试使用Android.OS.Environment.ExternalStorageDirectory.AbsolutePath在许多变体中对其进行多次更改,创建File变量并从File.Path获取路径。

每次我放置路径的位置TextView总是正确的。

我不知道为什么它不起作用。

代码:

Java.IO.File file = new Java.IO.File (Android.OS.Environment.ExternalStorageDirectory.AbsolutePath + "/myimage/", "video.mp4");

tView.Text = file.Path;

MediaController mediaController = new MediaController(context: this);
vView.SetMediaController(mediaController);
mediaController.SetAnchorView(vView);
vView.SetVideoPath(file.Path);
vView.Start();

File.Path值:

"/storage/emulated/0/myimage/video.mp4"

编辑:我在资源放置文件中创建了“原始”文件夹,然后使用以下路径:

vView.SetVideoPath("android.resource://" + PackageName + "/" + Resource.Raw.video);

它可以工作,但是如果有人知道如何获取sdCard上文件夹的正确路径?

1 个答案:

答案 0 :(得分:0)

最后我明白了。问题是我的手机安装卡位于/ storage / xxxx-xxxx /路径,我的研究发现该目录的名称来自卷序列号(Android自动安装卡),ExternalStorageDirectory指向每个Android设备中的其他位置。有时是内部存储,有时是USB大容量存储。

无论如何,没有找到任何方法返回以下方法创建的路径:

string GetCardMountPoint()
    {
        string[] listOfDirs = Directory.GetDirectories("/storage/");
        string path = null;

        foreach ( string dir in listOfDirs)
        {
            if(dir.Contains('-'))
            {
                path = dir;
            }
        }

        return path;

这不是复杂的解决方案,但它现在可以使用。