android - 如何播放 DCIM 文件夹中的 mp4 文件?

标签 android video mp4 internal-storage

我正在创建用于播放视频的简单 Android 应用。

1 DCIM/folder/test.mp4 - 视频根本无法播放

2 DCIM/test.mp4 - 完美运行(播放视频)

    Intent intent = getIntent();
    String videoPath = intent.getStringExtra("videoPath");

    player = (EasyVideoPlayer) findViewById(R.id.player);
    assert player != null;
    player.setCallback(this);
    player.setSource(Uri.parse(videoPath));

很高兴收到任何建议和好的例子。

谢谢

最佳答案

/storage/emulated/0/DCIM/D:T:21 July 2017/T__4__P__3.mp4 不是有效的 Uri。它缺少方案并且有空格。

如果你打算使用 Uri.parse(),你必须使用 Uri 的有效字符串表示,一个带有方案(例如,file://) 并转换了空格(例如,%20)。

处理本地文件时,通常使用 Uri.fromFile() 更安全,您已在其中创建了指向正确位置的 File。除此之外,您可以检查文件是否存在。使用外部存储时,用户可以随时删除文件,因此您应该在尝试播放之前确认它的存在。 Uri.fromFile(),AFAIK,将为您转换路径中的空格,并自动设置 file 方案。

关于android - 如何播放 DCIM 文件夹中的 mp4 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45258581/

相关文章:

java - Android:无法加载系统库

iOS:AVPlayer - 获取视频当前帧的快照

video - ffmpeg setpts 在不重新编码的情况下应用统一偏移

ffmpeg - 如何在 FFMPEG 中更改采样率

iphone - 我应该为 iPhone 和 iPad 上的 <video> 标签使用哪种视频格式?

html5-video - 可以配置 MIME 类型的 Github Pages 文件吗?

android - 我如何制作每 X 秒执行一次操作的 Android 应用程序

java - Android Job Scheduler 作业在应用程序关闭后不执行

java - 如何在内部 AsyncTask 类中从 doInBackground 调用外部类函数?

javascript - 浏览器中的squeeback是如何实现的?