在需要重复观看视频的场景下,每次都从网络获取视频会浪费流量并增加播放卡顿的风险。为解决这个问题,阿里云播放器SDK提供了本地缓存和预加载功能。通过这些功能,可以大幅提升视频的起播速度和拖动进度条后的响应速度,减少播放卡顿的烦恼,提升播放体验。
使用限制
仅支持MP4、MP3、FLV、HLS(单码率视频流)等单个媒体文件的预加载。
预加载仅支持UrlSource播放方式播放视频,暂不支持VidAuth、VidSts方式播放视频。
使用本地缓存提升播放体验
原理说明
阿里云播放器SDK提供的本地缓存的功能通过全局开关(AliPlayerGlobalSettings
中的enableLocalCache
)开启,开启后无需关心播放的视频是否能缓存,播放器内部会根据HTTP头的信息判断是否能缓存以及缓存是否过期。同时可以通过配置缓存的最大缓存容量(maxCapacityMB
)和磁盘最小空余容量(freeStorageMB
),来防止缓存过度而占用磁盘空间。
播放器SDK是根据播放URL(视频播放地址)来区分视频的,但有些URL带有鉴权参数,导致同一个视频每次的播放URL都会有所差异。对此情况,播放器SDK提供了URL Hash回调(setCacheUrlHashCallback
),播放器会使用回调返回的值来区分视频,该回调返回的值可以认为是视频的唯一ID。
例如:带有鉴权参数的URL:http://****.mp4?authKey=aaa
,回调中可以使用http://****.mp4
的md5值作为返回值,这样鉴权参数的变化就不会影响对视频的区分。针对HTTP和HTTPS指向同一个地址的情况,也可以返回相同的值来让播放器使用同一个缓存文件。
适用场景
适用于需要重复观看视频的场景,例如短视频场景下的循环播放等。
配置方法
使用预加载提升播放体验
原理说明
预加载为本地缓存功能的升级,播放当前视频时对下一个视频提前加载缓存,可提升切换到下个视频播放时的起播速度。针对快速滑动播放的列表播放场景,可以使用预加载+双实例的方式,提升观看体验。首先开启本地缓存功能后,播放当前视频且当前视频buffer充足时,可以用另外的播放器实例prepare(准备)下一个视频,当滑动到下一个视频时就可以立即播放。当第二个实例的视频buffer充足后,可以继续预加载后面的视频,提供更多的视频缓存。
适用场景
适用于快速滑动播放的列表播放场景等。