TSINGSEE青犀視頻云邊端架構中很多產品由于開發架構類似,因此功能的實作程序或者出現的問題等都有類似的地方,比如我們先測驗了EasyGBS演示模式下視頻播放的問題,隨后就發現了EasyNVR視頻平臺也出現了同樣類似的問題,

EasyNVR演示模式下獲取到的RTSP地址無法播放,演示模式是之前添加的新功能,主要是為了實作在演示模式下,播放幾分鐘后(這個幾分鐘可以在組態檔配置的)斷流,讓這個流不能在播放,
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流地址比較特殊,該流地址后不能添加識別符號,不然不能播放,我們將其排除出去即可,
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后綴,


轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/205225.html
標籤:其他
上一篇:SDL嵌入qt視窗繪制圖片
下一篇:一個bug引發的人生感悟
