日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

网易云信直播sdk的整体传输优化

發(fā)布時(shí)間:2025/3/8 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 网易云信直播sdk的整体传输优化 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

現(xiàn)有市場(chǎng)上的主流直播在傳輸方面,大部分使用TCP傳輸,也有部分使用UDP傳輸(類似上行使用rtc,然后在源站或者媒體服務(wù)器轉(zhuǎn)換為rtmp協(xié)議再進(jìn)行推流)。通常來(lái)說(shuō),udp效率更高一些,但由于自身無(wú)連接缺少確認(rèn)機(jī)制,缺少丟包重傳,所以通常開發(fā)者會(huì)增加冗余來(lái)對(duì)抗網(wǎng)絡(luò)的不穩(wěn)定性,這也造成了流量費(fèi)用的增加;TCP自身做了重傳,確??煽亢晚樞蛐?#xff0c;所以在對(duì)實(shí)時(shí)性要求并不高的直播,使用TCP是個(gè)很好的選擇。

網(wǎng)易云信直播sdk目前使用了TCP進(jìn)行傳輸,而且基于此從編碼動(dòng)態(tài)適配,發(fā)送隊(duì)列調(diào)整,協(xié)議優(yōu)化,socket等做了全流程的優(yōu)化,確保我們?cè)谙迬?#xff0c;丟包,時(shí)延,抖動(dòng),無(wú)論單項(xiàng),還是復(fù)雜網(wǎng)絡(luò),都有不輸于競(jìng)品的體驗(yàn)。

?

優(yōu)化的細(xì)節(jié)指標(biāo)

在不犧牲卡頓率的情況下,提升帶寬利用率8成以上,碼流更平穩(wěn)。

?

優(yōu)化的理論基礎(chǔ)

為了防止網(wǎng)絡(luò)的擁塞現(xiàn)象,TCP提出了一系列的擁塞控制機(jī)制。最初由V. Jacobson在1988年的論文中提出的TCP的擁塞控制由“慢啟動(dòng)(Slow start)”和“擁塞避免(Congestion avoidance)”組成,后來(lái)TCP Reno版本中又針對(duì)性的加入了“快速重傳(Fast retransmit)”、“快速恢復(fù)(Fast Recovery)”算法,再后來(lái)在TCP NewReno中又對(duì)“快速恢復(fù)”算法進(jìn)行了改進(jìn),近些年又出現(xiàn)了選擇性應(yīng)答( selective acknowledgement,SACK)算法,還有其他方面的大大小小的改進(jìn),包括google優(yōu)化后的BBR算法(目前移動(dòng)端無(wú)法使用),成為大家研究的一個(gè)熱點(diǎn)。

? ? ??

? ? ? ? ? ? ? ? ? ? ?

快速重傳:

快速重傳算法要求首先接收方收到一個(gè)失序的報(bào)文段后就立刻發(fā)出重復(fù)確認(rèn),而不要等待自己發(fā)送數(shù)據(jù)時(shí)才進(jìn)行捎帶確認(rèn)。接收方成功的接受了發(fā)送方發(fā)送來(lái)的M1、M2并且分別給發(fā)送了ACK,現(xiàn)在接收方?jīng)]有收到M3,而接收到了M4,顯然接收方不能確認(rèn)M4,因?yàn)镸4是失序的報(bào)文段。如果根據(jù)可靠性傳輸原理接收方什么都不做,但是按照快速重傳算法,在收到M4、M5等報(bào)文段的時(shí)候,不斷重復(fù)的向發(fā)送方發(fā)送M2的ACK,如果接收方一連收到三個(gè)重復(fù)的ACK,那么發(fā)送方不必等待重傳計(jì)時(shí)器到期,由于發(fā)送方盡早重傳未被確認(rèn)的報(bào)文段。

快速恢復(fù):

當(dāng)發(fā)送發(fā)連續(xù)接收到三個(gè)確認(rèn)時(shí),就執(zhí)行乘法減小算法,把慢啟動(dòng)開始門限(ssthresh)減半,但是接下來(lái)并不執(zhí)行慢開始算法。

此時(shí)不執(zhí)行慢啟動(dòng)算法,而是把cwnd設(shè)置為ssthresh的一半, 然后執(zhí)行擁塞避免算法,使擁塞窗口緩慢增大。

TCP的擁塞控制主要原理依賴于一個(gè)擁塞窗口(cwnd)來(lái)控制,TCP還有一個(gè)對(duì)端用的接收窗口(rwnd)用于流量控制。窗口值的大小就代表能夠發(fā)送出去的但還沒(méi)有收到ACK的最大數(shù)據(jù)報(bào)文段,顯然窗口越大那么數(shù)據(jù)發(fā)送的速度也就越快,但是也有越可能使得網(wǎng)絡(luò)出現(xiàn)擁塞,如果窗口值為1,那么就簡(jiǎn)化為一個(gè)停等協(xié)議,每發(fā)送一個(gè)數(shù)據(jù),都要等到對(duì)方的確認(rèn)才能發(fā)送第二個(gè)數(shù)據(jù)包,顯然數(shù)據(jù)傳輸效率低下。TCP的擁塞控制算法就是要在這兩者之間權(quán)衡,選取最好的cwnd值,從而使得網(wǎng)絡(luò)吞吐量最大化且不產(chǎn)生擁塞。


由于需要考慮擁塞控制和流量控制兩個(gè)方面的內(nèi)容,因此TCP的真正的發(fā)送窗口=min(rwnd, cwnd)。但是rwnd是由對(duì)端確定的,網(wǎng)絡(luò)環(huán)境對(duì)其沒(méi)有影響,所以在考慮擁塞的時(shí)候我們一般不考慮rwnd的值,我們暫時(shí)只討論如何確定cwnd值的大小。關(guān)于cwnd的單位,在TCP中是以字節(jié)來(lái)做單位的,我們假設(shè)TCP每次傳輸都是按照MSS大小來(lái)發(fā)送數(shù)據(jù)的,因此你可以認(rèn)為cwnd按照數(shù)據(jù)包個(gè)數(shù)來(lái)做單位也可以理解,所以有時(shí)我們說(shuō)cwnd增加1也就是相當(dāng)于字節(jié)數(shù)增加1個(gè)MSS大小。

優(yōu)化的具體內(nèi)容

TCP的慢啟動(dòng),擁塞避免,快速重傳機(jī)制告訴我們,在應(yīng)用層擁堵之前,會(huì)快速降低擁塞窗口大小,導(dǎo)致tcp通道可發(fā)送帶寬會(huì)快速降低,這個(gè)時(shí)候如果不快速降低數(shù)據(jù)流量, 會(huì)大量丟包重傳, 應(yīng)用層會(huì)進(jìn)入擁堵狀態(tài),導(dǎo)致惡化。

我們通過(guò)觀測(cè)若干系統(tǒng)反饋的socket 健康指標(biāo),一旦發(fā)現(xiàn)該socket進(jìn)入快速重傳,我們會(huì)提前降低視頻的編碼參數(shù);同時(shí)如果周期一直健康狀況良好,我們測(cè)算的可發(fā)送帶寬也大于實(shí)際發(fā)送大小,我們會(huì)緩慢提升視頻的編碼參數(shù);整個(gè)調(diào)優(yōu)會(huì)基于快降慢升,音頻優(yōu)先的原則來(lái)實(shí)施。

? ??

【推薦閱讀】Android短視頻中如何實(shí)現(xiàn)720P磨皮美顏錄制

與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的网易云信直播sdk的整体传输优化的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。