2017-06-02 79 views
0

我想在VideoView显示从我的仿真器MP4视频,并最终使用thumbnailUtils显示视频的缩略图,但我得到“无法播放此视频”。我假设我得到的路径错误的,因为我可以从资产文件夹播放视频:播放 - 安卓(Xamarin)

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 /上?

回答

0

我在做什么错,哪些是设置路径的正确方法,因为我知道我的视频在/ data/media/0 /上?

这可能是你的文件的路径是错误的,从你的代码中,我还以为你的文件保存在外部存储(SD卡),然后将该文件路径应该是,例如,像这样:

/storage/0/Movies/your file

但是你的文件路径/数据/媒体/ 0 /,它的内部存储Environment.DataDirectory,并且您的应用程序没有权限读取和系统的媒体,以书面的文件,我建议改变你的文件路径无论对外部存储Environment.ExternalStorageDirectory或您的应用程序的本地数据,例如FilesDir

根据您的问题的标题,你的文件应该放在例如这里: enter image description here

和代码,例如这样的:

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

感谢您的回复,我已经把我的文件你的建议和我现在的路径是:/storage/emulated/0/myVideo.mp4,但我仍然得到:“无法播放此视频”。我在我的清单文件上选择了读/写权限。任何想法现在有什么错误?并仔细检查,环境应该是Android.OS.Environment而不是System.Environment的权利? – slwjc

+0

原来,这是我的模拟器(API 23),它在API 22上运行良好 – slwjc