问题背景:
视频监控不仅仅要上云,还要支持多端播放,这一块在移动端 APP 和 PC 端难度是不大的,
只要能实现一个简单的播放器内核引擎,然后交叉编译为不同端的 SDK 就可以。随着移动
互联网的发展,特别是微信生态的完善。很多客户都在做轻量的微信小程序,所以支持在网
页上和微信小程序播放点直播视频就很有必要了。
微信小程序上能实现视频点直播,好处是轻量不用装 APP,其次容易分享,随时随地能打开,
也容易和公众号打通。但是实际上这块,浏览器上支持视频点直播还是很弱,不仅仅要考虑
视频编码类型,视频延时,首屏等常见问题,还有很多一些底层接口的限制,也许你在 APP
上播放啥问题都没有,但是挪到微信小程序播放问题就很多,这块都需要服务端和前端一起
配合才能兼容实现比较好的效果。
解决方案:
1. 前端直播方案
为了在微信小程序上播放视频,我们调研了一下微信小程序的媒体组件,文档接口见
https://developers.weixin.qq.com/miniprogram/dev/component/live-player.html
发现关于视频这块主要是 live-player 和 live-pusher 组件,其中 live-player 组件主要支
持 rtmp 和 flv 拉流方式,推流 live-pusher 组件主要支持 rtmp 推流,所以直播我们选用
live-player 组件,选用 rtmp-flv 分发协议,目的是为了降低延时,一般的 rtmp 延时能控
制在 1-3 秒,基本能满足使用视频监控中的场景要求。
2. 前端点播方案
点播其实不关心延时,采用 H5 中 video 标签对 hls-ts 的支持即可,因为 HLS 兼容性很好,
在 PC 端、Ios 和 Android,支持都非常好,也是目前唯一跨平台支持比较好的拉流协议,美
中不足就是直播延时比较大,延时大的原因是因为这套协议本质采用了小文件片段的分发方
式,一个小文件片段基本在 2 秒左右,这样 HLS 延时一般下来都在 10s+,做的好的也在 5s+,
综合来看 HLS 作为直播分发协议不太合理(除非直播时不关心延时),但是用来做点播还是
非常好的,省很多兼容处理的工作量。
3. 服务端方案
服务端一般都要支持多协议多客户端的分发,这里画个示意图来说明下服务端的简单架构,
hls-ts 点播部分我们采用了自研形式,rtmp-flv 采用了开源流媒体 SRS 和一些配套服务即
可。
评论0