手機(jī)直播源碼功能及系統(tǒng)開發(fā)流程
首先第一步,采集,iOS是比較簡單的,Android則要做些機(jī)型適配工作,PC最麻煩各種奇葩攝像頭驅(qū)動(dòng),出了問題特別不好處理,建議放棄PC只支持手機(jī)主播,目前幾個(gè)新進(jìn)的直播平臺(tái)都是這樣的。
第二部,前處理,現(xiàn)在bogo18直播美顏已經(jīng)是標(biāo)配了,80%的主播沒有美顏根本沒法看。美顏算法需要用到GPU編程,需要懂圖像處理算法的人,沒有好的開源實(shí)現(xiàn),要自己參考論文去研究。難點(diǎn)不在于美顏效果,而在于GPU占用和美顏效果之間找平衡。GPU雖然性能好,但是也是有功耗的,GPU占用太高會(huì)導(dǎo)致手機(jī)發(fā)燙,而手機(jī)發(fā)燙會(huì)導(dǎo)致攝像頭采集掉幀,iPhone6尤其明顯,因?yàn)?span>iPhone6的CPU和前置攝像頭很近。
第三部,編碼,肯定要采用硬編碼,軟編碼720p完全沒希望,勉強(qiáng)能編碼也會(huì)導(dǎo)致CPU過熱燙到攝像頭。硬編碼兼容性又是一個(gè)大坑,android上要有人去填。編碼要在分辨率,幀率,碼率,GOP等參數(shù)設(shè)計(jì)上找到最佳平衡點(diǎn)。
第四部,傳輸,自己做不現(xiàn)實(shí),交給CDN服務(wù)商吧,也就是貴了點(diǎn),相信有志于做bogo18直播平臺(tái)改變世界的你不差錢。假設(shè)2W PCU大約每月帶寬費(fèi)用100萬左右,因?yàn)榍逦鲿车?span>720p要1.5mbps左右。CDN只提供了帶寬和服務(wù)器間傳輸,發(fā)送和接收端的網(wǎng)絡(luò)連接抖動(dòng)緩沖還是要自己寫的。不想要卡頓,必然要加大緩沖,會(huì)導(dǎo)致延遲高,延遲高影響互動(dòng)性,要做權(quán)衡。
要想用于推流還必須把音視頻數(shù)據(jù)使用傳輸協(xié)議進(jìn)行封裝,變成流數(shù)據(jù)。常用的流傳輸協(xié)議有RTSP、RTMP、HLS等,使用RTMP傳輸?shù)难訒r(shí)通常在1–3秒,對(duì)于移動(dòng)直播這種實(shí)時(shí)性要求非常高的場(chǎng)景,RTMP也成為移動(dòng)直播中最常用的流傳輸協(xié)議。最后通過一定的Qos算法將音視頻流數(shù)據(jù)推送到網(wǎng)絡(luò)斷,通過CDN進(jìn)行分發(fā)。在直播場(chǎng)景中,網(wǎng)絡(luò)不穩(wěn)定是非常常見的,這時(shí)就需要Qos來保證網(wǎng)絡(luò)不穩(wěn)情況下的用戶觀看直播的體驗(yàn),通常是通過主播端和播放端設(shè)置緩存,讓碼率均勻。另外,針對(duì)實(shí)時(shí)變化的網(wǎng)絡(luò)狀況,動(dòng)態(tài)碼率和幀率也是最常用的策略。
借助bogo18直播行業(yè)2018年平穩(wěn)發(fā)展的東風(fēng),一對(duì)一直播平臺(tái)開發(fā)受到了廣泛地關(guān)注。正如直播源碼那樣,通過一對(duì)一直播源碼可以快速搭建部署一個(gè)一對(duì)一視頻直播平臺(tái)。而一對(duì)一直播平臺(tái)的功能具有更強(qiáng)的社交性,同時(shí)也有更加私密的直播體驗(yàn)。
1.主播列表推薦機(jī)制
不論是傳統(tǒng)的直播平臺(tái)還是今年異?;鸨亩兑舳桃曨l,主播與視頻的智能推薦機(jī)制是顯示了平臺(tái)的硬實(shí)力。這里我們舉一個(gè)簡單可操作的關(guān)于一對(duì)一直播系統(tǒng)主播推薦機(jī)制的例子
假設(shè)平臺(tái)有推薦主播、新人主播、關(guān)注主播三個(gè)列表。針對(duì)三個(gè)不同的列表我們可以建立以下的推薦機(jī)制:
推薦主播列表和新人主播類表,可以按照在線>活躍>在聊的順序進(jìn)行排序,如果想要遵循平臺(tái)的推薦機(jī)制,首先主播必須是在線狀態(tài),其次要看一下主播的活躍度(在線時(shí)長、開播時(shí)長等因素),最后如果主播時(shí)在聊狀態(tài),那可以往后排序(畢竟是一對(duì)一直播,主播在聊狀態(tài)下,其他用戶就無法再發(fā)起1v1直播的請(qǐng)求)。如果出現(xiàn)同等狀態(tài)(即主播在線狀態(tài)、活躍值相同),可再根據(jù)主播等級(jí)進(jìn)行排序,當(dāng)然也可以根據(jù)平臺(tái)運(yùn)營的需求,在管理后臺(tái)設(shè)置推薦機(jī)制,人為將主播排序提前。
而關(guān)注主播列表則顯示的是用戶已關(guān)注的并通過平臺(tái)認(rèn)證的主播,當(dāng)然也可以參考推薦主播列表的推薦機(jī)制進(jìn)行排序。這里我們提到了平臺(tái)認(rèn)證,不妨我們聊下認(rèn)證機(jī)制的重要性。
2.關(guān)于系統(tǒng)認(rèn)證機(jī)制
一對(duì)一直播平臺(tái)應(yīng)該與傳統(tǒng)直播平臺(tái)一致,具有真實(shí)的主播認(rèn)證頁面。這里我們可以將認(rèn)證功能放到用戶個(gè)人中心頁面,點(diǎn)擊進(jìn)入認(rèn)證功能頁面后,除了要上傳身份證,填寫相關(guān)真實(shí)信息之外,在用戶資料中也要進(jìn)行明確的標(biāo)識(shí)。一對(duì)一直播本身就具有私密性了,因此對(duì)于主播信息的真實(shí)性更要嚴(yán)格審核,同時(shí)也應(yīng)該為平臺(tái)用戶展示真實(shí)的主播信息,讓用戶全面了解主播后,才能更好地提升用戶體驗(yàn)。
這里我們可以結(jié)合主播的身份認(rèn)證信息,要求主播填寫真實(shí)的性別信息,否則不予通過審核,認(rèn)證通過后也不能再修改性別信息。在主播用戶中心的ID號(hào)后面要添加認(rèn)證標(biāo)識(shí),如果主播沒有進(jìn)行認(rèn)證,除了不顯示認(rèn)證標(biāo)識(shí)外,還要強(qiáng)制主播跳轉(zhuǎn)到認(rèn)證頁面進(jìn)行認(rèn)證。
3.關(guān)于預(yù)約一對(duì)一直播
一對(duì)一直播為用戶提供了私密的互動(dòng)直播空間,但是如果主播不在線,而粉絲又不可能一直在平臺(tái)上干等著,那該怎么辦呢?我們可以添加預(yù)約功能,同時(shí)要針對(duì)主播不同的直播狀態(tài)給予粉絲不同的提示信息。
對(duì)于離線的主播,在主播個(gè)人主頁點(diǎn)擊“發(fā)起1v1直播”時(shí),提示“當(dāng)前主播已離線”,然后進(jìn)行預(yù)約,在主播上線接受直播請(qǐng)求后會(huì)提示用戶主播已上線接受“1v1直播”。
對(duì)于在聊的主播,在主播個(gè)人主頁點(diǎn)擊“發(fā)起1v1直播”時(shí),提示“當(dāng)前主播在聊”,然后主播可以在直播間收到“1v1直播”請(qǐng)求的消息提醒,可以通過私信形式回復(fù)用戶。
當(dāng)然,在網(wǎng)絡(luò)傳輸方面全部自己來做基本不現(xiàn)實(shí),找提供推流服務(wù)的CDN服務(wù)商提供解決方案是最好的選擇。據(jù)了解,阿里云是國內(nèi)唯一能自研CDN緩存服務(wù)器的廠商,性能非常有保障。當(dāng)然,大多數(shù)直播平臺(tái)都會(huì)同時(shí)接入多個(gè)視頻云服務(wù)提供商,這樣可以做拉流線路互備,對(duì)推流后視頻集群再進(jìn)行優(yōu)化也可提高直播的流暢性和穩(wěn)定性。
山東布谷鳥網(wǎng)絡(luò)科技有限公司