在https下访问后台wss_flv视频流无法播放,如何处理?

326 阅读1分钟

经常会有人对比HTTP和HTTPS,HTTP向HTTPS过度的主要原因可以说是信息数据化的必经过程,为了对数据进行更加精密的加密,HTTPS也日益受到用户的青睐。不难看出,HTTPS的加密机制将会成为未来电子信息化发展的主流。我们的视频监控云边端项目架构中,最先通过HTTPS实验的就是EasyNVR和EasyDSS,紧随其后的有EasyCVR、EasyGBS等。

近期我们测试EasyCVR时,发现通过https访问后台时,wss_flv格式的视频流无法播放:

排查后端代码,发现wss_flv的路由后端没有添加,所以导致https访问后台的时候,返回的websocket的flv的播放地址不能播放。

添加如下代码,在路由列表中添加wss_flv的路由地址,然后将请求地址的url解析为http的具体设备和通道的具体地址,然后代理到流媒体中去播放。

func WSFlvHandler() gin.HandlerFunc {
       return func(c *gin.Context) {
              //Grader.ReadBufferSize = 102400000
              //Grader.WriteBufferSize = 102400000
              ws, err := Grader.Upgrade(c.Writer, c.Request, nil)
              if err != nil {
                     return
              }
              defer func() {
                     fmt.Printf("关闭长连接")
                     ws.Close()
              }()

              countSplit := strings.SplitN(c.Param("path"), "/", 3)

              path := "/" + countSplit[2]

              if strings.HasSuffix(path, ".flv") {

再次使用https去播放wss_flv,一切正常: