1

所以我正在从外部存储(sdcard)播放视频,播放视频时遇到问题,这是我的代码:

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

提示“抱歉,此视频无法播放”,但在普通安卓播放器中可以播放。我打印了网址,这就是我得到的:

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:视频可从画廊播放,但当我使用 Intent.ACTION_VIEW 类型视频播放时,无法播放

我的问题的部分答案:

由于命名约定,会出现此问题。我认为播放器不接受包含“--”的文件名。所以我通过更改文件名格式解决了这个问题。

//免责声明:我没有完整的解释和来源,但此信息只是从我的解决方法中推断出来的。

4

2 回答 2

9

确保您使用 Intent 传递正确的 sdcard 路径。最好的方法是使用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);
于 2013-01-03T04:46:44.077 回答
0

您首先需要将路径转换为真实路径。例如,如果您有类似 content://flod/123 的路径,则需要将其转换为类似 foldername/file.mp4 + Environment.getExternalStorageDirectory() 的路径

所以你的路径字符串将是: String path = Environment.getExternalStorageDirectory() + "foldername/file.mp4"; 然后您需要将其转换为文件:

文件文件 = 新文件(路径);

最后在该行中使用它:

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

于 2021-03-22T15:58:26.983 回答