前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >网络IP摄像头RTSP协议安防视频平台EasyNVR演示模式下rtsp地址无法播放原因分析

网络IP摄像头RTSP协议安防视频平台EasyNVR演示模式下rtsp地址无法播放原因分析

作者头像
EasyNVR
发布2020-11-12 11:17:02
7850
发布2020-11-12 11:17:02
举报
文章被收录于专栏:EasyNVR

TSINGSEE青犀视频云边端架构中很多产品由于开发架构类似,因此功能的实现过程或者出现的问题等都有类似的地方。比如我们先测试了EasyGBS演示模式下视频播放的问题,随后就发现了EasyNVR视频平台也出现了同样类似的问题。

EasyNVR演示模式下获取到的RTSP地址无法播放,演示模式是之前添加的新功能,主要是为了实现在演示模式下,播放几分钟后(这个几分钟可以在配置文件配置的)断流,让这个流不能在播放。

代码语言:javascript
复制
func wrapURLWithLiveToken(rawURL string, c *gin.Context) (wrapURL string) {
   wrapURL = rawURL
   demo := utils.Conf().Section("base_config").Key("demo").MustBool(false)
   if !demo {
      return
   }
   if rawURL == "" {
      return
   }
   _url, err := url.Parse(rawURL)
   if err != nil {
      return
   }
   q := _url.Query()
   //token := utils.MD5(sessions.Default(c).ID() + rawURL)
   token := createRandomString(8)
   q.Set("token", token)
   _url.RawQuery = q.Encode()
   wrapURL = _url.String()
   liveTokenCache.SetDefault(token, wrapURL)
   return
}

该处代码就是在流地址后面添加token的地方。

目前EasyNVR对外提供的流有这几种格式的:WS-FLV、HTTP-FLV、HLS、RTMP、RTSP,其中前4种格式都是可以播放的,只有RTSP流地址比较特殊,该流地址后不能添加标识符,不然不能播放,我们将其排除出去即可。

代码语言:javascript
复制
if _url, ok := ack.EasyDarwin.Body["URL"].(string); ok {
   if !strings.EqualFold(params["protocol"], "RTSP") {
      ack.EasyDarwin.Body["URL"] = wrapURLWithLiveToken(_url, c)
   }
}

这个地方先判断,如果想要获取RTSP流地址,就不进行token后缀的添加。 这样返回的RTSP流地址就不会带有token后缀。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档