【云+社区年度征文】云直播:基于API+SCF+Redis实现流状态同步和查询

导读:无论是秀场直播,还是直播带货,App中获取正在推流直播间,以及查询某直播间是否正在推流,是很有必要的,App需要列出所有在线直播间,进入直播间后,需要查询当前房价是否正在推流,若已下播则提示观众“直播已结束”,在后台开发中,该如何查询直播流状态呢

一般情况下,直播流有三种状态:active活跃、inactive非活跃、forbid禁播,当主播上线推流了之后,该直播间就处于活跃状态,当主播下线断流了之后,就处于非活跃状态,或叫做断流状态;

在直播场景下,了解一个直播间当前是否正在推流是很重要的,用户打开APP之后,需要给他展示当前活跃的直播间列表,当直播断流之后,需要把该流从列表中移除,当进入主播页面时,需要提示用户该主播是否直播中

步骤0:前提条件

  1. 已开通腾讯云直播服务
  2. 已准备好云直播推流和播放域名,并完成域名备案;

步骤1:购买云Redis

购买云Redis,相关指引参考官网文档,不再赘述: https://cloud.tencent.com/document/product/239/30871

记录云Redis的内网IP端口登录密码所属网络所在子网,云Redis的配置已完成

步骤2:新建SCF

  1. 登录 云函数控制台,单击左侧导航栏的【函数服务】。
  2. 在主界面上方选择期望创建函数的地域,并单击【新建】,进入函数创建流程,选择运行环境为Python3.6,以空白函数方式创建,点击下一步后,按需填写内容,点击完成即可。

步骤3:新建云API网关

  1. 登录API网关控制台
  2. 在左侧导航栏,单击【服务】,进入服务列表页。
  3. 在当前地域下,单击页面左上角的【新建】,新建一个服务。填写服务名为“livecallback” 【可自定义名称】,根据需要选择前端类型为http和https,勾选公网访问方式,点击提交即可

5、下载代码附件到本地

6、切换到函数代码选项卡,选择提交方法为“本地上传zip包”,选择刚刚下载的附件,然后点击保存按钮。

自此,阶段一已经实现,可以通过云直播推流断流验证方案实现情况

阶段二:查询流状态

观众进入主播个人页,查询主播流状态

这个阶段主要分为几个步骤:

1、观众进入主播个人主页,查询主播是否在开播(流状态)

2、业务服务器收到查询请求,并且查询云Redis当前流状态;

3、若流状态最近更新时间为2分钟以内,则直接返回流状态;

4、若流状态最新更新时间在2分钟以外,调用云API接口查询流状态,获取最新状态;

5、更新Redis流状态以及最近更新时间;

基于云API网关+SCF+Redis实现

下面步骤和上面的有点类似,但有些地方不大一样,不建议复用之前创建的API网关和云函数

步骤1:新建SCF用于查询

1、登录 云函数控制台,单击左侧导航栏的【函数服务】。

2、在主界面上方选择期望创建函数的地域,并单击【新建】,进入函数创建流程,选择运行环境为Python3.6,以空白函数方式创建,点击下一步后,按需填写内容,点击完成即可。

新建查询操作所需云函数

步骤2:新建云API网关

  1. 登录API网关控制台
  2. 在左侧导航栏,单击【服务】,进入服务列表页。
  3. 在当前地域下,单击页面左上角的【新建】,新建一个服务。填写服务名为“livecallback” 【可自定义名称】,根据需要选择前端类型为http和https,根据需要勾选公网或内网VPC方式,点击提交即可
新建用于查询的API网关

步骤3:新建通用API

1、在API网关控制台的左侧导航栏,单击【服务】,进入服务列表页

2、在刚刚创建的API网关服务右边操作按钮中,点击“配置管理”进入基础配置页面,切换到管理API选项卡。

3、在通用API中,点击新建,进入新建API流程。

4、API名称填写livestat;前端类型按需选择http和https;路径填 /livestat/ ;请求方法选GET;按需选择鉴权类型;点击下一步

新建用于查询流状态的API

5、进入后端配置页,后端类型选择云函数SCF,命名空间按需选择default,名称选择刚刚创建的云函数livestat勾选响应式集成,点击下一步

后端配置

6、在响应结果页,直接点击完成,弹窗提示是否发布,点击发布服务

发布服务

步骤4:新建运行角色

1、登录访问管理控制台,单机左侧导航栏中的【策略】。

2、点击新建自定义策略,选择【按策略生成器创建】

新建自定义策略

3、进入创建自定义策略流程,

效果(Effect)选择【允许

服务选择【云直播(live)】;

操作(Action)选择【DescribeLivestreamState】;

资源(Resource)填写 * qcs::live:::domain/xxx.livepush.myqcloud.com

其中live为直播推流路径,一般为live,如果你的推流路径非live,则按需填写

其中xxx.livepush.myqcloud.com 为阶段一步骤5第8点所绑定的推流域名

添加声明

4、点击【添加声明】,点击【下一步】填写策略名称为policygen-scf-livestat点击【完成】

5、点击左侧导航中的【角色】、点击【新建角色】、选择【腾讯云产品服务】

新建角色

6、进入新建自定义角色流程

支持角色的服务中,勾选云直播(live),云函数(scf),点击【下一步】

输入角色载体信息

选择策略,搜索刚刚创建的策略policygen-scf-livestat,勾选并点击【下一步】

配置角色策略

角色名称按需填写:scf-livestat,点击【完成】

输入角色名称

步骤5:完成SCF云函数的代码编写

1、登录 云函数控制台,单击左侧导航栏中的【函数服务】。

2、选择刚刚创建的云函数livestat,点击函数名进入后,切换到函数配置选项卡,点击右侧编辑按钮;

3、勾选运行角色,选择刚刚创建的角色scf-livestat

启用运行角色

4、在环境变量中,添加如下变量,然后点击保存

redisHost:172.16.0.44  #此处填写阶段一步骤2中你购买的redis内网IP
redisPort:6379  #此处填写阶段一步骤2中你购买的redis内网端口
redisPassword:*****  #此处填写阶段一步骤2中购买的redis的登录密码
streamStateTimeout:120 #此值为流状态超时更新时间
appName:live #一般为live,如果你的推流路径非live,则按需填写
domainName:****.livepush.myqcloud.com #此处填写阶段一步骤5第8点所绑定的推流域名

5、勾选私有网络,选择刚刚购买的Redis所在的VPC和子网

配置环境变量和私有网络

6、下载代码附件到本地

7、切换到函数代码选项卡,选择提交方法为“本地上传zip包”,选择刚刚下载的附件,然后点击保存按钮。

自此,阶段二已经实现,可以通过云API网关所允许的方式发起HTTP请求验证

本文中API网关 livestat只勾选了内网访问,未开放外网调用

登录同一个子网的一台CVM,通过curl测试可验证服务可用性:

在同一个子网下的CVM发起请求验证服务可用性
本站文章资源均来源自网络,除非特别声明,否则均不代表站方观点,并仅供查阅,不作为任何参考依据!
如有侵权请及时跟我们联系,本站将及时删除!
如遇版权问题,请查看 本站版权声明
THE END
分享
二维码
海报
【云+社区年度征文】云直播:基于API+SCF+Redis实现流状态同步和查询
一般情况下,直播流有三种状态:active活跃、inactive非活跃、forbid禁播,当主播上线推流了之后,该直播间就处于活跃状态,当主播下线断流了之后,就...
<<上一篇
下一篇>>