掌握了一對(duì)一源碼的開發(fā)等于掌握一個(gè)行業(yè)的商機(jī)

        那么一對(duì)一直播推流、播放端是否就沒有可以優(yōu)化的點(diǎn)呢? 答案是否定的。客戶端的優(yōu)化對(duì)直播秒開、延遲體驗(yàn)的實(shí)現(xiàn)至關(guān)重要,這里重點(diǎn)介紹移動(dòng)終端的情況。

        基于可控和容災(zāi)的需要,移動(dòng)端代碼一般不會(huì)hardcode 推流、播放的服務(wù)器IP地址,而選用域名代替。在IP出現(xiàn)宕機(jī)或網(wǎng)絡(luò)中斷的情況下,還可以通過變更DNS來實(shí)現(xiàn)問題IP的剔除。而域名的解析時(shí)間需要幾十毫秒至幾秒不等,對(duì)于新生成熱度不高的域名,一般的平均解析延遲在300ms,按上圖的各個(gè)環(huán)節(jié)只要有一個(gè)通路網(wǎng)絡(luò)產(chǎn)生波動(dòng)或者是設(shè)備高負(fù)載,會(huì)增加至秒級(jí)。幾十毫秒的情況是ISP NS這一層在熱度足夠高的情況下會(huì)對(duì)域名的解析進(jìn)行緩存。

        按我們上面分析的情況,本省延遲大概是15ms左右,那么域名解析最低也可以做到15ms左右。但由于直播場(chǎng)景的特殊性,推流和播放使用的域名使用的熱度較難達(dá)到ISP NS緩存的標(biāo)準(zhǔn),所以經(jīng)常需要走回Root NS進(jìn)行查詢的路徑。

        那客戶端解析優(yōu)化的原理就出來了:本機(jī)緩存域名的解析結(jié)果,對(duì)域名進(jìn)行預(yù)解析,每次需要直播推流和播放的時(shí)候不再需要再進(jìn)行DNS過程。此處節(jié)省幾十到幾百毫秒的打開延遲。

播放優(yōu)化:

        一對(duì)一直播源碼播放器的相關(guān)技術(shù)點(diǎn)有:直播延時(shí)、首屏?xí)r間(指從開始播放到第一次看到畫面的時(shí)間)、音視頻同步、軟解碼、硬解碼。

播放步驟描述:

        根據(jù)協(xié)議類型(如RTMP、RTP、RTSP、HTTP等),與服務(wù)器建立連接并接收數(shù)據(jù);

        解析二進(jìn)制數(shù)據(jù),從中找到相關(guān)流信息;

        根據(jù)不同的封裝格式(如FLV、TS)解復(fù)用(demux);

        分別得到已編碼的H.264視頻數(shù)據(jù)和AAC音頻數(shù)據(jù);

        使用硬解碼(對(duì)應(yīng)系統(tǒng)的API)或軟解碼(FFMpeg)來解壓音視頻數(shù)據(jù);

        經(jīng)過解碼后得到原始的視頻數(shù)據(jù)(YUV)和音頻數(shù)據(jù)(AAC);

        因?yàn)橐纛l和視頻解碼是分開的,所以我們得把它們同步起來,否則會(huì)出現(xiàn)音視頻不同步的現(xiàn)象,比如別人說話會(huì)跟口型對(duì)不上;

        最后把同步的音頻數(shù)據(jù)送到耳機(jī)或外放,視頻數(shù)據(jù)送到屏幕上顯示。

了解了播放器的播放流程后,我們可以優(yōu)化以下幾點(diǎn):

首屏?xí)r間優(yōu)化

        從步驟2入手,通過預(yù)設(shè)解碼器類型,省去探測(cè)文件類型時(shí)間;

        從步驟5入手,縮小視頻數(shù)據(jù)探測(cè)范圍,同時(shí)也意味著減少了需要下載的數(shù)據(jù)量,特別是在網(wǎng)絡(luò)不好的時(shí)候,減少下載的數(shù)據(jù)量能為啟動(dòng)播放節(jié)省大量的時(shí)間,當(dāng)檢測(cè)到I幀數(shù)據(jù)后就立馬返回并進(jìn)入解碼環(huán)節(jié)。

延時(shí)優(yōu)化

        視頻緩沖區(qū)或叫視頻緩存策略,該策略原理是當(dāng)網(wǎng)絡(luò)卡頓時(shí)增加用戶等待時(shí)間來緩存一定量的視頻數(shù)據(jù),達(dá)到后續(xù)平滑觀看的效果,該技術(shù)能有效減少卡頓次數(shù),但是會(huì)帶來直播上的內(nèi)容延時(shí),所以該技術(shù)主要運(yùn)用于點(diǎn)播,直播方面已去掉該策略,以此盡可能去掉或縮小內(nèi)容從網(wǎng)絡(luò)到屏幕展示過程中的時(shí)間;(有利于減少延時(shí))。

        下載數(shù)據(jù)探測(cè)池技術(shù),當(dāng)用戶下載速度不足發(fā)生了卡頓,然后網(wǎng)絡(luò)突然又順暢了,服務(wù)器上之前滯留的數(shù)據(jù)會(huì)加速發(fā)下來,這時(shí)為了減少之前卡頓造成的延時(shí),播放器會(huì)加速播放探測(cè)池的視頻數(shù)據(jù)并丟棄當(dāng)前加速部分的音頻數(shù)據(jù),以此來保證當(dāng)前觀看內(nèi)容延時(shí)穩(wěn)定。

        推流步驟說明:很容易看出推流跟播放其實(shí)是逆向的,具體流程就不多說了。

優(yōu)化一:適當(dāng)?shù)腝os(Quality of Service,服務(wù)質(zhì)量)策略。

        推流端會(huì)根據(jù)當(dāng)前上行網(wǎng)絡(luò)情況控制音視頻數(shù)據(jù)發(fā)包和編碼,在網(wǎng)絡(luò)較差的情況下,音視頻數(shù)據(jù)發(fā)送不出去,造成數(shù)據(jù)滯留在本地,這時(shí),會(huì)停掉編碼器防止發(fā)送數(shù)據(jù)進(jìn)一步滯留,同時(shí)會(huì)根據(jù)網(wǎng)絡(luò)情況選擇合適的策略控制音視頻發(fā)送。

        比如網(wǎng)絡(luò)很差的情況下,推流端會(huì)優(yōu)先發(fā)送音頻數(shù)據(jù),保證用戶能聽到聲音,并在一定間隔內(nèi)發(fā)關(guān)鍵幀數(shù)據(jù),保證用戶在一定時(shí)間間隔之后能看到一些畫面的變化。

優(yōu)化二:合理的關(guān)鍵幀配置。

        合理控制關(guān)鍵幀發(fā)送間隔(建議2秒或1秒一個(gè)),這樣可以減少后端處理過程,為后端的緩沖區(qū)設(shè)置更小創(chuàng)造條件。

軟硬編解選擇

        網(wǎng)上有不少關(guān)于選擇軟解還是硬解的分析文章,這里也介紹一些經(jīng)驗(yàn),但根本問題是,沒有一個(gè)通用方案能最優(yōu)適配所有操作系統(tǒng)和機(jī)型。

        推流編碼: 推薦Andorid4.3(API18)或以上使用硬編,以下版本使用軟編;iOS使用全硬編方案;

        播放解碼:Andorid、iOS播放器都使用軟解碼方案,經(jīng)過我們和大量客戶的測(cè)試以及總結(jié),雖然犧牲了功耗,但是在部分細(xì)節(jié)方面表現(xiàn)會(huì)較優(yōu),且可控性強(qiáng),兼容性也強(qiáng),出錯(cuò)情況少,推薦使用。

云端機(jī)型及網(wǎng)絡(luò)適配

        上面分析了很多針對(duì)視頻編解碼的參數(shù),但實(shí)際情況最好的編解碼效果是需要根據(jù)機(jī)型的適配的,由于iOS的設(shè)備類型較少,可以做到每個(gè)機(jī)型針對(duì)性的測(cè)試和調(diào)優(yōu),但是對(duì)于Android就非常難做到逐款機(jī)型針對(duì)性調(diào)優(yōu),并且每年都會(huì)出產(chǎn)不少的新機(jī)器,如果代碼中寫死了配置或判斷邏輯將非常不利于維護(hù)和迭代。

        所以我們就誕生了一個(gè)想法,這些判斷邏輯或配置是否可以放在云上呢? 這樣就產(chǎn)生了云端機(jī)型與網(wǎng)絡(luò)適配的技術(shù)。

終端在推流、播放前會(huì)獲取通過協(xié)議上報(bào)當(dāng)前的機(jī)型配置、網(wǎng)絡(luò)情況、IP信息。云端會(huì)返回一個(gè)已最適合的編解碼策略配置:走軟編還是硬編、各項(xiàng)參數(shù)的配置,就近推流服務(wù)的IP,就近播放服務(wù)的IP。 終端獲取一次即可,不需要每次推流、播放前都去獲取一次。

        這樣,在我們不斷的迭代和完善機(jī)型編解碼適配庫(kù)的同時(shí),所有使用該技術(shù)的直播APP都將收益。

總結(jié)

        分析很多直播后端、終端的關(guān)于低延遲、秒開的優(yōu)化技術(shù),在直播云上都已有了相關(guān)的實(shí)踐,都是一些較“靜態(tài)”的技術(shù)。實(shí)際提供穩(wěn)定、低延遲、流暢的直播服務(wù),是日常中非常大量細(xì)致的監(jiān)控、算法和動(dòng)態(tài)運(yùn)營(yíng)的結(jié)果,并不是實(shí)現(xiàn)了某些的技術(shù)點(diǎn),就能坐享一套穩(wěn)定的直播服務(wù),只能說是完成了萬(wàn)里長(zhǎng)城的第一道磚。
        一句,“能帶我吃飯就好了”讓小甜甜火遍了大江南北。好多小伙子都往成都趕,要請(qǐng)她吃飯,有開飛機(jī)去的,有開跑車去的,有坐熱氣球去的,也有開拖拉機(jī)去的,騎摩托車的,騎駱駝的等等都是要去成都春熙路。不少網(wǎng)友稱,這個(gè)小甜甜已經(jīng)打敗了百分之九十九的美女,在小甜甜面前,其他美女都是浮云,不是每一滴牛奶都是特侖蘇,不是每一個(gè)美女都是小甜甜。
        一對(duì)一直播源碼,強(qiáng)大的SDK美顏特效讓您愛不釋手。
        一對(duì)一直播:隨緣視頻、聊天,更加有趣,邂逅更多的主播,發(fā)現(xiàn)更多趣事。提高變現(xiàn)收益增加,計(jì)時(shí)收費(fèi)增加變現(xiàn)能力。直播間單線運(yùn)作降低流量寬帶費(fèi)用,管理方便、運(yùn)營(yíng)輕松。適用于多種行業(yè)范疇,醫(yī)療、付費(fèi)知識(shí)等更多私密內(nèi)容。
        短視頻功能:短視頻以其短、準(zhǔn)、狠的方式肆意傳播,內(nèi)容全由用戶創(chuàng)造,碎片化信息分裂傳播更能夠增加用戶的青睞程度。高清流暢、美顏濾鏡、特效剪輯、背景音樂設(shè)置,讓更多的用戶參與進(jìn)來,平臺(tái)人氣迅速火爆。用戶觀看短視頻還可以送禮物,對(duì)于主播和平臺(tái)又多了一份收入
在如今直播+的廣泛應(yīng)用下,一對(duì)一直播發(fā)揮了其更加有效的價(jià)值。醫(yī)療行業(yè):一對(duì)一直播的加入能夠讓病人與醫(yī)生更加直接、及時(shí)的交流與溝通,并且傳達(dá)相應(yīng)的病情等,讓一些偏隱私病癥和看病的問題能夠得到有效的處理及回應(yīng)。
        一對(duì)一直播是現(xiàn)在許多平臺(tái)比較流行的功能,也是能夠非常好的回應(yīng)現(xiàn)在年輕人的社交方式,與自己想要的主播或者是陌生人等進(jìn)行單獨(dú)的1 V 1交談,不僅能夠滿足現(xiàn)在年輕人的探索交友的刺激,也是能夠?yàn)槠脚_(tái)帶來非常不錯(cuò)的變現(xiàn)手段。現(xiàn)在隨機(jī)的一對(duì)一直播也越來越多,隨緣匹配任意的陌生人,讓一對(duì)一直播的樂趣更加翻倍,用戶流量也愈加爆棚。現(xiàn)在的陪聊、解悶等相應(yīng)一對(duì)一直播產(chǎn)品應(yīng)用場(chǎng)景不斷出現(xiàn),勢(shì)必一對(duì)一直播將會(huì)越來越火爆。
        事實(shí)證明,一對(duì)一視頻源碼已經(jīng)驗(yàn)證確實(shí)是風(fēng)口,目前市場(chǎng)運(yùn)營(yíng)的都很好,這種app通過視頻聊天找到了能夠陪伴自己的好友,或者與自己喜歡的女神、明星、網(wǎng)紅大V一對(duì)一聊天,既可以得到情感需求,又有隱私保密,更不需要想盡辦法的去討好別人。就是這樣一款高端、高顏值的一對(duì)一視頻源碼軟件對(duì)客戶黏性非常大。
        一對(duì)一直播作為一種新的傳播方式,它改變了我們的生活,“直播+”必然是整個(gè)行業(yè)未來發(fā)展的大方向,實(shí)名制是互聯(lián)網(wǎng)發(fā)展大勢(shì)所趨,再加上不斷完善的各項(xiàng)配套法律制度,整個(gè)直播行業(yè)會(huì)更加成熟,未來的直播還會(huì)帶給我們更多的驚喜。