在的開發當中,由于需要傳輸一些音、視頻等實時性非常強的數據,這些數據相對于一般的文本數據,顯得非常巨大,因此我們在視頻會議軟件開發當中最重要的是解決如何傳輸實時、大容量數據的問題。由此可見選擇一個合適的數據傳輸庫對我們開發來說非常關鍵。而在視頻會議軟件的開發過程中,供我們選擇的數據傳輸庫非常多,我們在這里主要對用于視頻會議軟件開發的開源數據傳輸庫,進行一個評測(jrtplib、、),主要從實時性、傳輸效率、調用復雜度、可靠性、大數據、跨平臺性這幾個方面進行一個全面的對比。
1、jrtplib庫 (總體 :★★★★☆)
jrtplib庫是應用的RTP傳輸庫,其主要是通過UDP協議封裝RTP數據包來實現數據的實時傳輸,由于RTP協議是通過時間戳來實現數據的實時傳輸,因此jrtplib在視頻會議軟件開發當中,通??梢詡鬏斠?、視頻等實時的數據。除此之外,jrtplib庫可以在 Windows、Linux、 FreeBSD、Solaris、Unix和VxWorks 等多種操作系統上運行。
項目地址:http://research.edm.uhasselt.be/jori/jrtplib/documentation/index.html
實時性 (★★★★★):由于采用UDP的數據傳輸而且沒有進行相應重發等操作,因此其實時性非常高。
傳輸效率(★★★★★):jrtplib算法簡單,因此占用cpu非常小
調用復雜度(★★★☆☆):jrtplib依賴其他的庫,因此編譯起來比較困難,但使用較為方便。
可靠性(★☆☆☆☆):jrtplib庫只在UDP上面進行了RTP數據包封裝,沒有進行可靠性控制,因此可靠性不能保證。
大數據(★★★★☆):jrtplib在傳輸大數據的時候,需要把大的數據進行分包,其每個包的大小都不能超過RTP設定的包的大小。
跨平臺性(★★★★★):jrtplib跨平臺性較高,可以在多種操作系統上運行。
2、UDT庫(總體 :★★★☆☆)
UDT庫是一個非常的RUDP庫(可靠的UDP庫),其主要通過重發來實現UDP數據的可靠性,既可以保持數據的實時傳輸,也可以達到可靠的數據傳輸。在視頻會議軟件開發當中,可以傳輸一些信令或者實時性比較高的控制信息等。
項目地址:http://sourceforge.net/p/udt/discussion/852996
實時性(★★★★☆):由于采用UDP的數據傳輸,而且采用了重發等可靠的傳輸操作,因此其實時性比用jrtplib傳輸要低,但比直接采用TCP要高。
傳輸效率(★★★☆☆):UDT的滑動窗口算法比較復雜,占用cpu有點高。
調用復雜度(★★★☆☆):UDT調用較為簡單,但沒有分包算法,要自己進行分包處理,因此使用起來比較困難。
可靠性(★★★★★):由于UDT是進行可靠的驗證,因此數據能保證可靠。
大數據(★★★☆☆):UDT在傳輸大數據的時候,同樣需要把大數據進行分包進行傳輸,其每個包的大小不能超過UDT設定的包大小。
跨平臺性(★★★★☆):UDT也能進行跨平臺性編譯,但版本在ios編譯會出現錯誤。
3、Raknet(總體 :★★★★☆)
Raknet本來是一個游戲引擎,同時它也是一個非常優秀的RUDP傳輸庫,在游戲領域擁有眾多的用戶,而在視頻會議軟件開發當中,我們也可以利用這個優秀的游戲引擎來傳輸實時可靠的數據。Raknet傳輸庫可以在非商業用途上開源,但在商業應用中收費,但我們一般項目還是可以直接使用它,它可以編譯成靜態庫,因此Raknet也是一個不錯的選擇。
項目地址:
實時性(★★★☆☆):Raknet采用單線程的RUDP進行數據傳輸,因此其實時性要比jrtplib和UDT都要低一些。
傳輸效率(★★★★☆):Raknet由于采用單線程的接收方式,因此效率比jrtplib要高,CPU占用也較小。
調用復雜度(★★★★★):Raknet調用較為簡單,而其帶有分包功能,不用自己進行分包操作,因此使用起來比較方便。
可靠性(★★★★★):由于Raknet通過重發和校驗來保持數據的實時性,因此數據能保持可靠性。
大數據(★★★★☆):Raknet不需要進行分包操作,但由于其采用單線程設計,因此當網絡堵塞的情況下,數據會重發,導致數據更加堵塞。
跨平臺性(★★★★★):Raknet支持多系統的編譯,跨平臺性非常好。
相關文檔: