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

Android Media3 ExoPlayer播放res/raw目录视频失败求助

解决Media3 ExoPlayer无法播放res/raw目录视频的问题

针对你遇到的问题,可按以下步骤排查解决:

  • 检查视频文件命名规则
    res/raw目录下的文件命名必须是小写字母、数字、下划线的组合,不能包含大写字母、空格或特殊字符(比如My_Video或my video都是无效命名),确保你的视频文件my_video符合这个规则。

  • 添加RawResource数据源工厂
    默认的ExoPlayer配置可能未包含RawResource的数据源支持,需要在初始化ExoPlayer时手动添加:

    val context = applicationContext // 或当前Activity的context
    // 构建包含RawResource支持的数据源工厂
    val dataSourceFactory = DefaultDataSource.Factory(context)
        .setDataSourceFactory(RawResourceDataSource.Factory(context))
    // 初始化ExoPlayer时指定媒体源工厂
    val exoPlayer = ExoPlayer.Builder(context)
        .setMediaSourceFactory(DefaultMediaSourceFactory(dataSourceFactory))
        .build()
    
  • 确认完整的播放流程
    仅设置MediaItem不足以启动播放,需要调用prepare和play方法:

    val uri = RawResourceDataSource.buildRawResourceUri(R.raw.my_video)
    val mediaItem = MediaItem.fromUri(uri)
    exoPlayer.setMediaItem(mediaItem)
    exoPlayer.prepare()
    exoPlayer.play()
    
  • 验证视频文件兼容性
    确保视频是ExoPlayer支持的格式(如MP4、WebM),且编码为标准的H.264/H.265。如果视频编码特殊,可能需要转码后再测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 14:33:38