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
相关产品推荐
相关产品推荐

