微信视频在线播放用的是什么技术呢?

微信视频抓包图
微信视频抓包图

背景

微信里有视频号,任选一个视频,即开始播放,拖动进度条播放也较为流畅。
通过抓包发现,下载的是 mp4 格式的视频。
分别抓包了两个短视频:
第一个视频 1 分钟,大小 2m 左右。
第二个视频也是 1 分钟,大小 20m 左右。

微信视频播放应该用的就是普通 https 协议下载播放是吧
(如果理解不正确,请斧正。)

问题

我正在做移动端的视频点播(类似微信的视屏号)。

看微信视频号播放好像是压缩了视频,仅使用 https 解决,在请求头中加入 range 来判断需要视频哪部分的数据。具体微信怎么做的不清楚。

我是音视频小白,上面可能存在不正确的描述,请大牛指导一下,应该用什么技术做这个视频点播功能?

阅读 3.7k
2 个回答

对于需要完整下载才能开始播放的原因是你没有处理好视频文件的metadata数据,一般转码生成的mp4文件,metadata数据是放置在文件末尾的,因为这些数据是启动播放必须的,所以要缓冲完整才能开始播放(这对本地文件来说,没有什么影响,但对在线播放来说影响巨大),由此为在线点播准备的mp4视频文件,需要在编码存储为文件时,把metadata数据放置在文件开头位置,这个各种编码工具中都有对应设置,也有专门的工具来调整。

现在为了兼容性,绝大多数视频点播服务的实质还是http(s)类服务,只是真实点播文件的URI,现在有一些认证鉴权处理过程,以防止非法访问。

微信实际上是用的TLS 协议,这个是类http(s)类服务,或者说是新一代的http(s)类服务。

至于http(s)类服务服务中,支持mp4的在线点播,是很成熟的技术啦,你可以参考nginx的mp4模块来实现。

这是视频切片技术,很多流播放默认都支持, 类似m3u8协议本身就实现了切片,这么设计好处是:

* 可以分片预加载,提高流畅度 
* 简单加大盗片的成本

你可以访问腾讯云的流媒体服务,他们本身有做这类的流媒体优化。支持异步视频转码,压缩,分片等。
当然很多流媒体服务都是做了鉴权防止非法访问

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题