ExoPlayer是Google开发的Android平台的播放器,功能强大,它提供了 Android 的 MediaPlayer API 的替代方案,用于在本地和 Internet 上播放音频和视频,支持视频缓存与离线播放。
源码联系我V Runbo_Better
github:https://github.com/google/ExoPlayer
官方文档:ExoPlayer
完整库引入:
implementation 'com.google.android.exoplayer:exoplayer:2.X.X'
或者按需引入:
implementation 'com.google.android.exoplayer:exoplayer-core:2.X.X'
implementation 'com.google.android.exoplayer:exoplayer-dash:2.X.X'
implementation 'com.google.android.exoplayer:exoplayer-ui:2.X.X'
exoplayer-core
: Core functionality (required).exoplayer-dash
: Support for DASH content.exoplayer-hls
: Support for HLS content.exoplayer-rtsp
: Support for RTSP content.exoplayer-smoothstreaming
: Support for SmoothStreaming content.exoplayer-transformer
: Media transformation functionality.exoplayer-ui
: UI components and resources for use with ExoPlayer.
我已将完整的操作视频上传到了如下链接:Android-ExoPlayer缓存视频与离线播放功能(如需代码请联系作者)_哔哩哔哩_bilibili
视频内容大致如下:
1.展示视频列表,获取视频当前缓存状态(未缓存、已缓存)
2.点击缓存按钮开始缓存,缓存过程中页面和通知栏显示百分比,缓存完成后对应状态变为已缓存
3.缓存完成后,进入播放页面,断掉所有网络测试离线播放功能
缓存后的文件如图:
由此可见,缓存的视频并不是一个可以直接播放的视频文件,例如xxx.mp4,而是一堆文件,只能由ExoPlayer才能解码播放,就类似一些音乐软件一样的道理,下载的歌曲并不能直接播放,必须打开app才能解码播放。可不要以为文中提到的缓存只是下载了视频源文件然后再进行播放。