**:
一、為什麼要頻寬檢測?
在多**應用中,尤其在桌面共享應用系統的實現中,頻寬檢查通常提高使用者體驗一種依據:
1.可以根據使用者的頻寬,如果使用者的頻寬過低,可以降低桌面抓屏的的質量,從而減少傳送的資料,增強使用者使用的穩定性。
2.可以根據使用者的頻寬,如果頻寬比較低,則應該降低抓屏的頻率,因為在網路頻寬比較差的情況下,如果capture screen頻率過高,會造成網路擁堵。此時可以降低capture screen的頻率,從而提高使用者使用的平滑性,不會造成大的延時。
二、如何做頻寬檢測以及應該注意的問題?
檢測頻寬想想是不是很容易:
一段時間內server接收到資料的byte數/interval(s)
這裡需要注意問題和原則:
1.做頻寬檢查的參考幀,一定要大,太小了誤差很大,比如說,以2kb的包為例,可能幾毫秒就可以完成,這樣得到的資料會非常大
2.頻寬檢測的檢測包在檢測過程中要保證資料是一直傳送的,例如如果20s之內,只有少量的資料傳送,這樣計算的結果會偏小
在red5裡面要做到頻寬檢測,需要修改兩個地方:
3.需要知道一幀傳送開始和結束傳送的位元組數
注:red5的網路層使用的是mina作為資料傳輸層,它有個api專門進行頻寬的檢測的,它的原理簡單說來就是,你告訴它時間點,它告訴你收到了多少資料,顯然,有這個api,我們的頻寬檢查不是問題了
/***
*/public final void updatethroughput(long currenttime, boolean force)
}readbytesthroughput = (readbytes - lastreadbytes) * 1000.0 / interval;
writtenbytesthroughput = (writtenbytes - lastwrittenbytes) * 1000.0 / interval;
readmessagesthroughput = (readmessages - lastreadmessages) * 1000.0 / interval;
writtenmessagesthroughput = (writtenmessages - lastwrittenmessages) * 1000.0 / interval;
lastreadbytes = readbytes;
lastwrittenbytes = writtenbytes;
lastreadmessages = readmessages;
lastwrittenmessages = writtenmessages;
lastthroughputcalculationtime = currenttime;
}三、修改red5原始碼達到頻寬檢測的效果
有兩個時間點,我們就可以大膽做了:
1.在上乙個資料幀decode完畢後,做個check point
在org.red5.server.net.rtmp.basertmphandler類中messagereceived方法末尾加上:
/** */
public void messagereceived(rtmpconnection conn, protocolstate state, object in) throws exception
}result.add(decodedobject);
}
redis5 0 9版本一鍵安裝指令碼
bin sh install redis etc init.d functions 安裝依賴包 yum y q install gcc jemalloc devel make wget tar xvf redis 5.0.9.tar.gz 建立安裝目錄及使用者 id redis dev null 編...
python2 版本 與 3 版本中的區別
目錄unicode編碼 print函式print hello world 2.x版本中格式 print hello world 3.x版本中格式 2.6版本已可以支援新的print 語法 from future import print function print fish panda sep r...
Linux上離線安裝Musql8 0版本
1.首先檢視linux系統版本 centos6使用命令 lsb release a,centos7使用命令 cat etc os release,ubuntu使用命令 lsb release a 3.清理主機伺服器上的環境 linux的版本6.5,執行空間足夠大 2 5g root node2 rp...