前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >流媒体服务器二次开发对接微信小程序起播HLS流不成功的原因分析

流媒体服务器二次开发对接微信小程序起播HLS流不成功的原因分析

作者头像
EasyNVR
发布2020-04-23 13:59:50
8550
发布2020-04-23 13:59:50
举报
文章被收录于专栏:EasyNVREasyNVR

这两天有个开发者在使用我们的流媒体服务器做微信小程序二次开发的时候遇到一些问题,现在我来给大家分享这个过程,如果以后还有开发者遇到类似问题,可参考本篇进行排查。

这位开发者的现场有200路摄像机需要接入流媒体服务器,前期测试的时候接入的是100路,流媒体服务器并没有表现出压力,但是后期持续增加到200路的时候,服务器性能开始跟不上了,因为小程序这边需要的流是HLS流,所以在服务器上用内存虚拟出来1G的磁盘用作缓存,这样大大提高了磁盘读写效率,另外考虑到并发量和出口带宽的问题,采用了按需直播的方式。

为了协助这个开发者测试,对小程序并不了解的我非常敬业的用WINFORM写了一个Demo,根据我们流媒体服务器的接口定义,我简单梳理了一下:先调用登录接口->然后调获取通道直播链接->保活通道直播链接,搞定。

下面看DEMO:

但是在我连续跑了几次之后,发现有点问题,有时候不能正常起播,有时候又可以,搞的非常郁闷,现在深扒一下整个过程:

HLS 的基本原理就是当采集推流端将视频流推送到流媒体服务器时,服务器将收到的流信息每缓存一段时间就封包成一个新的 ts 文件,切片文件(三片),同时服务器会建立一个 m3u8 的索引文件来维护最新几个 ts 片段的索引。当播放端获取直播时,它是从 m3u8 索引文件获取最新的 ts 视频文件片段来播放,从而保证用户在任何时候连接进来时都会看到较新的内容,实现近似直播的体验。

原来在按需直播的模式下,EasyNVR是在客户端请求时再去摄像机拉流过来,这样再加上上面的过程,因为接口返回比视频流快的多,所以再接口返回直播流地址的时候,我们直接起播,这时候视频流还未生成切片文件,所以无法播。知道这个原理后,我们修改了代码,在获取直播链接后,等个2-3秒,然后起播,成功搞定,也再次出现之前的问题了。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-03-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云直播
云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档