无法播放此视频Xamarin.Android

问题描述 投票:0回答:1

我需要在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"

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

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

它有效,但如果有人知道如何在sdCard上获得正确的文件夹路径?

c# xamarin.android mediacontroller
1个回答
0
投票

最后我明白了。问题是我的手机卡在路径/ storage / xxxx-xxxx /我的研究显示,dir的名字来自卷序列号(其中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;

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

© www.soinside.com 2019 - 2024. All rights reserved.