所以我正在播放外部存储(sdcard)的视频,播放视频时出现问题,这是我的代码:
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的问题吗?如果不是,你能指出我正确的方向。另外,如果我尝试一个带点(。)的foldername,我会遇到问题吗?
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
部分回答我的问题:
由于命名约定而出现问题。我认为播放器不接受其中包含“ - ”的文件名。所以我通过更改文件名格式解决了这个问题。
//免责声明:我没有完整的解释和来源,但这些信息只是从我的解决方法中推断出来。
答案 0 :(得分:9)
确保您使用Intent传递正确的SD卡路径。最好的方法是使用Environment.getExternalStorageDirectory()获取SDCARD路径而不是传递静态字符串:
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);
答案 1 :(得分:0)
您首先需要将路径转换为真实路径。 例如,如果您有类似 content://flod/123 的路径 您需要将其转换为文件夹名称/文件.mp4 + Environment.getExternalStorageDirectory()
之类的路径所以你的路径字符串将是: 字符串路径 = Environment.getExternalStorageDirectory() + "文件夹名/file.mp4"; 然后你需要把它转换成文件:
File file = new File(path);
最后在一行中使用它:
intent.setDataAndType(Uri.fromFile(file), "video/*");