繁体   English   中英

在VideoView上从模拟器SD卡播放视频-Android(Xamarin)

[英]Play video from emulator sd card on VideoView - Android (Xamarin)

我试图在VideoView上显示来自模拟器的mp4视频,并最终使用thumbnailUtils显示视频的缩略图,但出现“无法播放此视频”。 我假设路径错误,因为我可以使用以下方法播放Assets文件夹中的视频:

Android.Net.Uri vid = Android.Net.Uri.Parse("android.resource://" + PackageName + "/" + Resource.Drawable.SampleVideo1) 

使用设备监视器,我可以看到我的视频在/data/media/0/SampleVideo1.mp4上,即使我将视频拖放到Genymotion上时也说该文件已复制到sdcard / Download上。 从其他线程,我看到人们给出了这样的路径:

static string path = global::Android.OS.Environment.ExternalStorageDirectory.AbsolutePath;
string file = System.IO.Path.Combine(path.ToString(), "SampleVideo1.mp4");

我也尝试过这种方式:

var vidPath = "/data/media/0/SampleVideo1.mp4";
videoview.SetVideoPath(vidPath);

我在做错什么,并且因为我知道我的视频在/ data / media / 0 /上,所以这是设置路径的正确方法吗?

我在做错什么,并且因为我知道我的视频在/ data / media / 0 /上,所以这是设置路径的正确方法吗?

您的文件路径有可能是错误的,从您认为我的文件已保存在外部存储(SD卡)中的代码来看,那么文件路径应如下所示:

/storage/0/Movies/your file

但是您的文件路径是/ data / media / 0 /,它是内部存储Environment.DataDirectory ,并且您的应用没有权限在系统媒体下读写文件,我建议将文件路径更改为外部存储Environment.ExternalStorageDirectory或应用程序的本地数据,例如到FilesDir

根据问题的标题,您的文件应放在此处,例如: 在此处输入图片说明

并举例说明如下:

var filename = "one.mp4";
var path = System.IO.Path.Combine(Environment.ExternalStorageDirectory.AbsoluteFile.ToString(), filename);
videoView.SetVideoPath(path);
videoView.Start();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM