1987WEB视界-分享互联网热点话题和事件

您现在的位置是:首页 > 网络工具 > 正文

网络工具

UC浏览器视频播放缓存以及视频下载分析

1987web2023-12-04网络工具83
PC时代,浏览器几乎是上网的唯一入口,那时候,得浏览器得天下,大家都想守住这个流量入口,为自家的服务导流。移动互联网时代,繁多的App分割了浏览器的流量,浏览器失去了平台流量的入口地位,沦为一个普通的

PC时代,浏览器几乎是上网的唯一入口,那时候,得浏览器得天下,大家都想守住这个流量入口,为自家的服务导流。移动互联网时代,繁多的App分割了浏览器的流量,浏览器失去了平台流量的入口地位,沦为一个普通的上网工具,但是浏览器的灵魂注入了很多App中,微信是一个浏览器,头条也是一个浏览器。因为它们都有浏览网页服务的诉求。

这儿有点小小的跑题,本文我们主要分析一下UC浏览器的视频播放缓存功能和视频下载功能。对比一下UC浏览器和QQ浏览器的视频下载:图1是UC浏览器的截图,图2是QQ浏览器的截图。

可以比较明显的看出来,UC浏览器的视频下载速度是比较快的,这个是为什么?需要研究一下UC浏览器的视频下载是怎么做的?

我们简单分析一下UC浏览器的apk包,反解一下apk文件,然后分析其中用到了什么技术。UC浏览器的版本是UCBrowser_V12.5.4.1034.apk,使用AndroidStudio分析一下apk包的总结构

发现了6个dex文件,还有很多lib so,如下:

其中在classes5.dex中发现如下的代码:com.uc.vturbo包名下面有一些关键类。

从名字上面已经比较清晰了,这是P2P下载的管理类,那么UC浏览器是否真的使用P2P下载了?

下载一个视频,发现在/sdcard/Android/data/com.UCMobile/files/.videocache文件夹下面有3个文件:

查看其中一个文件夹中的内容如下:

其中3f707cb48e86b496dd0708a5bdaf3b7d088a45dd_hh0039 是种子文件,3f707cb48e86b496dd0708a5bdaf3b7d088a45dd_vx00454是 M3U8索引文件。

其中种子文件如下:

这里种子文件对应的分片内容正好对应 M3U8的分片内容:

UC视频利用的了本地代理实现了边下边播的技术:通过下面的抓包可以发现。

可以很清晰的看到很多127.0.0.1的请求,这就是在手机上搭建了一个本地代理,然后通过本地代理去服务器请求数据,播放器再从本地代理服务器上取数据。

解析tracker信息,然后利用P2P下载技术去追踪视频的种子文件。

抓包发现发起了很多请求:

10.12.65.96是本机的IP,发现server端的IP不断在变化,这次这是P2P的技术将client作为资源分发的工具,所以才能发现请求同域名的资源,请求的server端的IP不断在变化。仔细分析一下这些IP,发现这些IP都是在我附近的IP。如果是直接从视频源服务器上拉取数据,那server端的IP应该是固定的。

下面分解一下如何解析torrent文件。

总结

  • UC浏览器使用本地代理实现边下边播,这个技术是如何实现边下边播的,下面会单独出文章分析一下。

  • UC浏览器使用P2P实现视频下载。P2P下载方式是一种稀释服务器压力的一种高效的下载方式,越多节点加入,下载越快。

推荐阅读:

【音视频连载-008】基础学习篇-SDL 播放 PCM 音频文件(下)

在 iOS 中使用 OpenGL ES 实现绘画板

【音视频连载-009】第二季 FFmpeg 打造简易播放器

觉得不错,点个在看呗~