Closed xubigshu closed 2 years ago
是的。m3u8地址是不变的,跟正常的其它媒体文件地址一样,是缓存到本地。本地的内容和服务器上的m3u8一样,你可以在sdcard外部存储私有目录下(/Android/data/[app_package_name]/cache/video-cache/)里面看到下载下来的m3u8文件内容,是没有做任何修改的,通过本地代理会把m3u8里面的分片地址改成本地的,debug模式下可以看打印响应到播放器的m3u8的内容。
public String getProxyUrl(String url, boolean allowCachedFileUri) { if (allowCachedFileUri && isCached(url) && !M3u8ProxyUtil.isM3u8Url(url)) {//m3u8始终走代理 File cacheFile = getCacheFile(url); touchFileSafely(cacheFile); return Uri.fromFile(cacheFile).toString(); } return isAlive() ? appendToProxyUrl(url) : url; }
“m3u8始终走代理”这个本意是m3u8每次都发起一次真正的网络请求呢?而不仅仅是读取本地缓存。
这段代码只是强制让m3u8地址走本地代理,不然和其它媒体地址一样缓存好返回file://是不对的,如果m3u8也直接返回file://就没法用到代理服务去缓存ts文件了
“m3u8始终走代理”这个本意是m3u8每次都发起一次真正的网络请求呢?而不仅仅是读取本地缓存。