2013-01-03 85 views
1

所以我從外部存儲(SD卡)播放視頻,我遇到問題在播放視頻時,這是我的代碼:Intent.ACTION_VIEW視頻:外部存儲視頻「對不起,這個視頻無法播放」,但在普通的Android播放器中,它是可播放的

Uri uri = Uri.parse(url); 
intent = new Intent(Intent.ACTION_VIEW); 
intent.setDataAndType(uri, "video/*"); 

它會提示「抱歉,該視頻無法播放」,但在標準Android播放器,它是可玩的。我打印的網址是這樣的:

VideoPlayer url: file:///mnt/sdcard/foldername/video-2012-12-26-21-26--44.mp4 

這是uri的問題嗎?如果不是的話,你能否指點我正確的方向。另外,如果我嘗試一個有點(。)的文件夾名稱,我會遇到問題嗎?

url = file:///mnt/sdcard/Android/data/com.example.project/video-2012-12-26-21-26--44.mp4 

謝謝。

編輯:由於我的真正的問題並沒有解決,沒有人希望再回答,我打開了一個新的問題: Android: Video is playable from gallery but when I play it using Intent.ACTION_VIEW type video, cannot play

部分回答我的問題:

發生的原因問題的命名約定。我認爲玩家不接受其中包含「 - 」的文件名。所以我通過更改文件名格式來解決這個問題。

//聲明:我沒有一個完整的解釋和來源,但是這個信息只是從我的解決方法中推導出來的。

回答

9

請確保您使用Intent傳遞正確的SD卡路徑。最好的辦法是用Environment.getExternalStorageDirectory()用於獲取SD卡路徑,而不是路過靜態字符串:

intent = new Intent(Intent.ACTION_VIEW); 

File sdCard = Environment.getExternalStorageDirectory(); 
File file = new File(sdCard, "/foldername/video-2012-12-26-21-26-44.mp4"); 

intent.setDataAndType(Uri.fromFile(file), "video/*"); 

startActivity(intent); 
+0

好了,所以我實現了上面的代碼,路徑是正確的,該文件存在(我已經檢查的話),但視頻仍是無法播放。我試過了「/com.example.project/video-2012-12-26-21-26-44.mp4」和「/foldername/video-2012-12-26-21-26-44.mp4」 (都有文件)。但它仍然不起作用。還有什麼建議?我再說一遍,該文件可通過在庫中瀏覽來播放,但不能使用代碼。 – Marl

+0

@Marl:k給我一個視頻鏈接 –

+0

我想我部分知道發生了什麼,我認爲這個問題是由於命名約定。當我將文件重命名爲更簡單的文件時,視頻就可以播放。但是,當我使用我的原始文件名格式,視頻不是。所以我通過改變我的文件名格式來解決這個問題。特別的例子:在文件名中使用「 - 」會使視頻無法播放。 – Marl