1. 程式人生 > >EasyNVR流媒體伺服器網頁相容除錯:ie瀏覽器下的介面呼叫成功但頁面無法顯示實時的資料

EasyNVR流媒體伺服器網頁相容除錯:ie瀏覽器下的介面呼叫成功但頁面無法顯示實時的資料

許多問題很難在開發的過程中就想的面面俱到,都是在實際應用、除錯的過程中一一的優化的。由於easynvr的受眾越來越多,因此也出現了好多在開發之初並沒有留意的一些細節。我這次發現的問題就是給客戶遠端解決問題過程中發現的。在此記錄下來方便自己,也方便大家瞭解。

問題概述

使用過easynvr的都知道,easynvr是通過通道配置來接入攝像頭的,這些通道配置、通道展示……都是通過介面的呼叫來完成的。理論上,只要呼叫介面返回成功碼,就表示該介面呼叫成功,後續操作得以進行。

接下來就是見證奇怪的時刻:在給客戶遠端時發現,當成功呼叫介面後,瀏覽器沒有第一時間將介面返回的資料進行處理展示操作。

easynvr

1.只要rtsp地址沒有問題,我這邊配置成功,在視訊廣場應該是會出現對應的視訊通道資訊的。

easynvr

2.頁面也是提示 配置成功,並且通道也是開啟的。

easynvr

3.空空如也的視訊廣場,亮瞎了。。

eas有nvr

4.再次回到通道配置檢視,發現之前的成功配置不見了。。。

問題分析

出現這樣的問題,第一時間想到的是資料是否設定成功。經過我的驗證,發現介面設定資料是成功的。而且重點是這個問題在其他瀏覽器上都沒有出現,偏偏在IE上會出現。。。。

不得不讓我想到是不是又是相容性的問題。。。

經過上網查閱資料發現。這個問題的原因在於ie瀏覽器自身。

ie瀏覽器在呼叫一個介面成功後,下次呼叫會優先獲取上次介面在瀏覽器中的快取資料。也就是我們呼叫介面獲取的資料,雖然是通過該介面獲得,但不一定是實時的、最新的。

解決問題:

我們為了確保每次呼叫介面的不同,我們需要在每次呼叫介面時,給介面傳遞一個唯一、不重複的引數。

$.get(_url + "/getchannelsconfig?t="+new Date().getTime());

easynvr最終選擇是在呼叫對應介面時,傳遞一個時間引數,可以保證他的唯一性。這樣每次瀏覽器識別的介面一樣,但是傳遞這個引數是不同的,就會獲取到實時資訊。

效果也是明顯:

easynvr

easynvr

備註:由於easynvr通過介面獲取的資料相對來說是有點多的,因此每次通過介面獲取資料,相對來說是有點影響載入效果的,沒有在快取中直接提取來的迅速。因此除非必須使用ie瀏覽器,否則不建議通過這種方式來實現此效果。

關於EasyNVR

EasyNVR能夠通過簡單的網路攝像機通道配置,將傳統監控行業裡面的高清網路攝像機IP Camera、NVR等具有RTSP協議輸出的裝置接入到EasyNVR,EasyNVR能夠將這些視訊源的音視訊資料進行拉取,轉換為RTMP/HLS,進行全平臺終端H5直播(Web、Android、iOS),並且EasyNVR能夠將視訊源的直播資料對接到第三方CDN網路,實現網際網路級別的直播分發;

獲取更多資訊

Copyright © EasyDarwin.org 2012-2017

EasyDarwin