前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >EasyNVR平台实现播流地址超时无法播放功能过程分享

EasyNVR平台实现播流地址超时无法播放功能过程分享

作者头像
EasyNVR
发布2021-06-11 18:44:47
2730
发布2021-06-11 18:44:47
举报
文章被收录于专栏:EasyNVREasyNVR

EasyNVR平台中会生成 hls、flv、ws-flv 等多种流,当用户获取对应的流地址后,可以一直播放,因此需要对流地址进行超时管理,如果超时后无法播放。

设计方案如下:

1、首先在生成的播流地址中添加 expire参数,即播流地址为: http://127.0.0.1:10800/flv/hls/stream_1.flv?expire=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MjIxMTIxNTAsImlzcyI6InRzaW5nc2VlLWVhc3ludnIifQ.DlKQtcQZuYi0NcL_bWZWrWU1KDAMGueb8jwBxK_vqzc ; 2、如果播流地址中不包含 expire 参数,则返回无权限播放; 3、如果播流地中包含 expire 参数,解析参数过期时间,如果超时,则返回无权限播放。

expire 的生成代码如下:

代码语言:javascript
复制
func GeneratePlayToken(expireTime time.Time) (string, error) {
   //设置token有效时间
   /*nowTime:=time.Now()
   expireTime:=nowTime.Add(3*time.Hour)*/

   claims := jwt.StandardClaims{
      // 过期时间
      ExpiresAt: expireTime.Unix(),
      // 指定token发行人
      Issuer: "tsingsee-easynvr",
   }

   tokenClaims := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
   //该方法内部生成签名字符串,再用于获取完整、已签名的token
   token, err := tokenClaims.SignedString(jwtSecret)
   return token, err
}

解析 expire 的代码如下:

代码语言:javascript
复制
// 返回 token 是否有效
func ParsePlayToken(token string) (bool, int, error) {
   //用于解析鉴权的声明,方法内部主要是具体的解码和校验的过程,最终返回*Token
   tokenClaims, err := jwt.ParseWithClaims(token, &jwt.StandardClaims{}, func(token *jwt.Token) (interface{}, error) {
      return jwtSecret, nil
   })

   if tokenClaims != nil {
      // 从tokenClaims中获取到Claims对象,并使用断言,将该对象转换为我们自己定义的Claims
      // 要传入指针,项目中结构体都是用指针传递,节省空间。
      if claims, ok := tokenClaims.Claims.(*jwt.StandardClaims); ok && tokenClaims.Valid {
         dura := int(claims.ExpiresAt - time.Now().Unix())
         if dura > 0 {
            return true, dura, nil
         } else {
            return false, 0, nil
         }
      }
      return false, 0, nil
   }
   return false, 0, err
}

最终前端地址包含对应的 expire 信息。

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

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

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

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

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