1. 程式人生 > >線上抓娃娃方案的選型方法

線上抓娃娃方案的選型方法

兼容 遲鈍 jsm 私有 通過 自己的 視頻 統架構 現實

技術分享圖片

線上抓娃娃最近三個月火爆了。筆者通過訪談即構科技的客戶,了解他們選型線上抓娃娃方案時考慮的因素,總結了一些經驗,寫成了本文。

線上抓娃娃的技術方案本質上是直播SDK加上物聯網。選型直播SDK的方法就是要看延遲時間、流暢性、清晰度還有網頁端的支持程度(H5版本),而選型抓娃娃方案的物聯網部分就要看硬件方案,包括娃娃機,主板,安卓板子加攝像頭,或者IP攝像頭等。另外,代運營服務和軟件外包對於創業團隊,或者打算短平快去試水的平臺也是要考慮的選項。

低延遲

線上抓娃娃的延遲時間是直播的延遲時間加上操控信令的延遲時間,因此比直播的要求要高。以即構的方案為例,直播SDK的延遲大概是300毫秒,操控信令的延遲時間大概是100毫秒,兩者加起來大概是400毫秒。一般來說,延遲時間低於500毫秒的話,抓娃娃的體驗會比較好,如果超過500毫秒,用戶就會感覺比較遲鈍,很難受。

視頻直播技術在2016年直播元年發展起來,連麥直播已經是直播平臺的標配。互動直播的延遲要做到300毫秒以下,圍觀用戶的延遲要做到1秒左右。主流采用的語音視頻傳輸協議是RTMP或者基於UDP的私有協議,私有協議的延遲更低一些,而且對抗弱網的能力會更強。

技術分享圖片

1. 即構科技實時視頻直播架構圖

物聯網是在線上抓娃娃爆發的這幾個月才真正得到落地和實踐的,通過websocket來傳輸控制信令。這一塊的數據量比較小,延遲可以做到100毫秒左右就是比較理想的了。

流暢性

低延遲和流暢性本身就是一對矛盾的要求,要延遲低就把JitterBuffer盡量縮短,這樣網絡抖動就很容易表現出來,出現卡頓的問題。如果為了流暢性而把JitterBuffer延長,那麽延遲的時間就會加大。因此,最終的方案是在低延遲和流暢性之間選擇一個平衡點。

一般來說有兩個辦法:

1)做動態伸縮的JitterBuffer,在網絡較差或者網絡抖動比較劇烈的情況下,可以適當增大JitterBuffer,從而降低一點點延遲來對抗抖動。

2)采用快播和慢播技術,在網絡較差的環境,可以在用戶無感知的條件下稍微降低播放速度,來應對短暫網絡抖動引起的立即卡頓,當網絡恢復可以加快速度追回來。

3)碼率自適應,也就是以比較合適的碼率做動態傳輸,為了保證流暢度甚至可以調整幀率和分辨率。

4)分層編碼、傳輸控制,在推流端做一些分層的編碼,這樣在拉流端可以動態根據偵測到的網絡帶寬情況來拉取不同的視頻數據去做渲染。

技術分享圖片

2. 即構科技線上抓娃娃系統架構圖

考察這個技術特征的時候,除了要通過專業的方法進行測試和驗證,還要和方案商的技術團隊去溝通,大致了解他們的實現方法,從而判斷他們的技術是否過硬和靠譜。

清晰度

清晰度直接關系到用戶體驗,現在的用戶已經被直播給慣壞了,基本接受不了模糊的視頻畫面。一般來說,決定清晰度的因素就是碼率,600kbps的碼率是一個比較合適的水平,能看得比較清晰。在選型的時候通過wireshark等工具來監控碼率,如果做了碼率自適應,碼率是會隨著網絡情況而自動調節的。這裏要註意的一個坑就是:有些方案為了獲得低延遲,犧牲了清晰度,把碼率壓倒很低,畫面會出現色塊和馬賽克,或者畫面出現一會兒清晰一會兒模糊的情況。這種方案剛體驗的時候發現延遲好低,一高興就忘記觀察畫面的清晰度。

H5版本

在網頁端的支持程度極其重要,線上抓娃娃說到底了還是流量變現的一門生意。H5版本是在網頁端傳播的利器,特別是通過微信來傳播,因此H5版本是必不可少的。

在直播爆發的2016年,為了保障直播的體驗,直播平臺采用的技術方案大都是由原生APP來集成的。當然,在Web端也是支持的。在Web端可以通過HLS或者HTTP-FLV來拉流觀看的,HLS的延遲很大,差不多到10秒。基於WebRTC的方案,雖然延遲也可以做得相對比較低,但是目前支持WebRTC的瀏覽器不是多數,只有Google Chrome,FireFox和Opera等,占有的事情份額小於40%,而且微信的瀏覽器不是完全支持WebRTC的,也就是說基於WebRTC的方案在微信瀏覽器上跑是會受到限制的。

既然HLS、HTTP-FLV和WebRTC都沒有辦法讓線上抓娃娃的方案普遍能在所有瀏覽器上跑,那麽線上抓娃娃的方案商提供的H5版本是怎麽實現的?這裏只分享一個大概。選型的時候重點的驗證方式是看能否在微信瀏覽器(微信是傳播和流量的重鎮),和主流的瀏覽器上運行,然後了解技術方案來判斷這個方案是否能夠普遍適合所有瀏覽器。

下面以即構科技的線上抓娃娃H5版本為例來說明H5版本的技術。即構H5版本把視頻格式從H264轉碼成MPEG1,通過WebSocket來接入到實時視頻傳輸網絡,在H5上采用JSMPeg來播放。為了獲得超低的延遲,即構在實時傳輸網絡內部是采用基於UDP的私有協議進行傳輸,而私有協議是無法和瀏覽器互通的。為了解決這個問題,增加了接入服務器,在接入服務器和瀏覽器之間采用WebSocket進行傳輸。在H5頁面上播放的時候,采用JSMPeg播放器來保證所有的瀏覽器都能支持,MPEG1是比較早期的視頻格式,能夠被所有瀏覽器支持。通過這個方案,即構的H5版本能夠在包括微信瀏覽器在內的所有瀏覽器上運行。

技術分享圖片

3. 即構科技線上抓娃娃H5版本架構圖

據了解,目前主流的H5版本都是采用這個方案,也有一些廠商的方案是基於WebRTC的,為了使得他們的方案能夠在微信上運行,他們在微信上采用MPEG1/WebSocket/JSMpeg方案,而在別的瀏覽器上還是保留了WebRTC,這樣就引入了一個問題:雖然在微信上支持了H5,但是在別的瀏覽器上還是受到WebRTC的限制,不能完全支持H5。

硬件方案

市面上的硬件方案一般有3個選擇:PC,安卓板子或者IP Camera。

1)PC的優點是簡單快捷,而且兼容性好;缺點就是成本高(一臺PC的價格在平均5000左右)。為了節省成本,往往通過一臺PC帶幾個娃娃機,這樣會帶來另外一個缺點:萬一PC宕機,幾臺娃娃機都要跟著停止工作,受到影響的營收就比較高。

2)安卓板子的優點是成熟、穩定,而且普適性廣,價格適中(一個安卓板子價格在300到400塊錢);缺點當然是沒有像PC那邊便捷,但是安卓板子的安裝也十分簡單。

3)IP Camera的優點是成本比較低,缺點是不穩定,而且開發和調試成本高:需要進行嵌入式開發,把程序燒到硬件上,開發和調試十分麻煩。

這三種硬件方案中,推薦選擇第二個硬件方案,簡單穩定而且性價比高。

在是否提供一站式解決方案方面,也有兩種選擇:

1)一站式解決方案,包含硬件解決方案,把軟件和硬件之間的調試都搞定而且跑穩了,會幫你節省好多時間。

2)只提供直播SDK或者信令控制SDK,運營方還要自己去找硬件廠商,商務對接、硬件選型還有硬件調試都要花掉不少的時間。

如果是為了盡快上線推薦采用一站式的方案,如果是為了掌控整個鏈條,推薦第二種選擇。

技術分享圖片

4. 三種線上抓娃娃推流方案(本圖來自互聯網)

單就硬件調試而言,安卓板子上的應用程序(下層是直播SDK和信令控制SDK)需要和娃娃機的主板通信,把控制指令發送給天車的串口,調試硬件的主要時間主要花在這裏。如果硬件不好的話,坑還不少。就算硬件沒有問題,一般來說硬件廠商不會幫你調通軟件和硬件的通信,信令控制SDK和直播SDK廠商也不會管硬件的問題,因此最終還是得你自己來搞。在運營中如果出來問題,就要你和軟件供應商,硬件供應商三方一起協調,過程會比較繁瑣。

代運營服務

這是技術以外的話題,可是關系到項目的成敗,因此這裏也提一下。對於初創團隊,或者打算短平快試水的團隊,自己去租賃場地和購置娃娃機是不劃算的。租賃場地要安排電力和上行網絡帶寬等。購置娃娃機需要沈著的成本。以後無論是業務進一步開展,還是打算退出,這種模式基本是不現實的。如果方案商提供了代運營服務可以考慮采用,方案商會幫你搞定上述問題,而且日常的維護,娃娃機的版權和采購,他們都會幫你搞定,你只需要按月支付娃娃機的租金就好了,把精力專註在流量的運營和變現上。

軟件外包

這是針對從非技術領域跨界而來的團隊,比如說傳統的娃娃機運營方,如果目前沒有配置軟件團隊,或者研發能力不足,可以選擇有軟件外包服務的方案商。為什麽提到軟件外包?因為大部分的方案都會需要你最後開發自己的APP的應用層,或者H5版本的應用層,至少你要換一下H5的皮膚吧。如果自己沒有研發團隊,那麽選擇有軟件外包服務的方案商也是一個不錯的選擇。

結語

線上抓娃娃的方案選型需要綜合考慮軟件、硬件、代運營服務和外包服務等。最終,決定一個線上抓娃娃產品成敗的一個關鍵因素是上線時間,畢竟風口的紅利期不長。在選型的時候,要考慮技術,也要把時間成本考慮進去。

線上抓娃娃方案的選型方法