Android开发:VideoView无法找到raw目录下视频的解决办法
嘿,我来帮你排查一下这个问题——VideoView找不到raw目录视频的情况,大多是目录结构、命名或者代码引用的小问题,咱们一步步来:
先确认raw目录的位置是否正确
你得确保raw目录是直接建在res文件夹下面的,正确路径是app/src/main/res/raw。要是你把它建在了drawable或者其他子目录里,Android系统根本识别不到这个资源目录。检查视频文件的命名规范
Android资源文件的命名有严格要求:只能用小写字母、数字、下划线(_)和点(.),绝对不能有空格、大写字母或者特殊符号(比如!@#这类)。举个例子,travel_vlog.mp4是合规的,Travel Vlog.mp4就会导致系统找不到文件。代码里的引用方式要正确
别直接写文件路径,要用Android的资源引用方式:
推荐用更简洁的setVideoResource方法:VideoView videoView = findViewById(R.id.video_view); videoView.setVideoResource(R.raw.your_video_name); // 这里不要加文件后缀! videoView.start();要是用
setVideoURI的话,写法是这样的:Uri videoUri = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.your_video_name); videoView.setVideoURI(videoUri);重点:这里的
your_video_name是不带后缀的文件名,比如你的视频是demo.mp4,就写R.raw.demo,别写成R.raw.demo.mp4,这是很多人踩的坑。确认文件是否被正确打包
打开Android Studio的「Project」视图,找到app/build/intermediates/res/merged/debug/raw这个路径,看看你的视频文件是不是在里面。如果不在,说明文件没被系统识别,你可以点击工具栏的「Sync Project with Gradle Files」按钮同步一下项目,或者重新把视频文件复制到raw目录里。排除视频文件本身的问题
有时候可能是视频文件损坏导致无法读取,你可以换一个小的、确定能正常播放的mp4文件放到raw目录里测试,看看能不能正常加载,这样就能排除文件本身的问题了。
内容的提问来源于stack exchange,提问作者Tarikul Islam

