2017-06-02 49 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