Android Studio中用于VideoView播放的本地视频存储位置咨询
关于Android视频播放应用的视频存储方案
嘿,这个问题我做视频类应用时也踩过坑,咱们来聊聊合适的解决方案:
为什么res/raw目录不行?
你碰到的资源错误太正常了——res/raw目录的文件会被Android构建工具处理,而且这个目录对单个文件大小有隐性限制(通常超过100MB就容易出问题,更别说你这600MB的视频了)。另外,把这么大的文件塞进raw会让APK体积直接暴涨到600MB+,用户下载起来会非常痛苦,这绝对不是最优解。
可选的存储方案
1. 外部存储(推荐优先考虑)
如果你的视频不需要随APK一起分发,或者允许用户后续替换,放在应用专属的外部存储目录是最好的选择。比如通过getExternalFilesDir(null)获取的路径,这个目录属于你的应用,Android 10+不需要额外的存储权限,而且用户卸载应用时,这里的文件会被自动清理。
使用时直接给VideoView设置文件路径即可:
String videoPath = new File(getExternalFilesDir(null), "your_video.mp4").getAbsolutePath(); videoView.setVideoPath(videoPath);
2. Assets目录(仅适合必须随APK分发的小视频)
如果视频必须随应用一起安装,你可以新建assets目录来存放,但要注意两个问题:
- 600MB的视频会让APK体积异常庞大,严重影响用户下载意愿;
- 读取
assets里的视频需要通过AssetManager,代码示例如下:
try { AssetFileDescriptor afd = getAssets().openFd("your_video.mp4"); videoView.setVideoPath(afd.getFileDescriptor()); afd.close(); } catch (IOException e) { e.printStackTrace(); }
所以除非是小体积的视频,否则不推荐用这个方案。
3. 按需下载(最佳实践)
如果视频不是应用启动必须的,最合理的方式是让应用在首次启动时,从服务器下载视频到外部存储的应用专属目录。这样既控制了APK体积,也避免了本地存储的大小限制,用户体验会好很多。
总结
你不需要非得用assets目录,更推荐的是外部存储或者按需下载的方案。如果一定要随APK分发视频,再考虑新建assets目录,但要做好APK体积过大的心理准备。
内容的提问来源于stack exchange,提问作者regamblr
相关产品推荐
相关产品推荐

