You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android ExoPlayer播放本地媒体文件无响应无报错问题求助

ExoPlayer本地媒体文件播放无响应问题修复方案
  • Uri构造错误
    你当前直接用Uri.parse(filePath)生成的Uri没有file://协议前缀,ExoPlayer无法识别这是本地文件资源,请替换为:
Uri uri = Uri.fromFile(file);

如果你的App targetSdkVersion >= 24(Android 7.0及以上),直接使用file://Uri会触发FileUriExposedException,这种情况建议改用FileProvider生成content://类型的Uri供ExoPlayer访问。

  • 存储权限缺失
    你访问的是外部公共存储目录的文件,需要根据系统版本申请对应权限:
    • Android 6.0-12:需要在AndroidManifest.xml中声明READ_EXTERNAL_STORAGE权限,并且在代码中动态申请该权限,用户授权后才能访问文件
    • Android 13及以上:需要在AndroidManifest.xml中声明READ_MEDIA_VIDEO权限,并且动态申请用户授权
      即使你本地日志打印了文件存在,在未授权的情况下App依然无法读取文件内容,ExoPlayer不会抛出前台异常,只会内部处理错误。
  • 缺少播放器错误监听
    ExoPlayer的播放错误默认不会直接抛出到App主线程,你需要给播放器添加事件监听获取错误信息,方便定位问题:
player.addListener(new Player.Listener() {
    @Override
    public void onPlayerError(PlaybackException error) {
        Log.e("exoPlayer", "播放错误: ", error);
    }
});
  • 布局配置错误
    检查布局文件中PlayerView的宽高配置,如果设置为wrap_content,在视频未加载完成时控件大小为0,会出现看不到播放画面的问题,建议修改为:
<com.google.android.exoplayer2.ui.PlayerView
    android:id="@+id/player_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>
  • 媒体格式兼容问题
    ExoPlayer默认不支持部分特殊编码的mkv格式文件,你可以先替换为普通H.264编码的mp4文件测试,排除文件本身编码不兼容的问题。

内容的提问来源于stack exchange,提问作者LIM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 01:36:09