如何從 0 到 1 開發一款完整的直播 APP

2021-07-24 08:42:58 字數 1789 閱讀 6438

編碼:在直播推流進行編碼時,盡量採用硬編,這可以減少 cpu 佔用率,間接可以減少手機的發熱量和耗電量。為了保證在所有裝置上我們都可以進行編碼,還需要準備乙個軟編方案,當某種機型上無法使用硬編,則立即還成軟編。

連麥:作為觀眾給主播反饋的重要形式,可以極大豐富觀眾直播體驗。比如,主播在表演節目時,觀眾想和主播對話,主播就會彈出乙個邀請,要求連麥觀眾的畫面就會出現在主播螢幕右下角的小窗上,所有的觀眾都可以看到這個場景。傳統的直播採取的是主播一對多的推流的方式,而連麥可以做到多對多推流,這個功能非常受歡迎。連麥可以做出很多豐富的形式,例如主播與主播進行 pk,觀眾把螢幕橫過來後,可以看到螢幕左邊是乙個主播的圖象,右邊是另外乙個主播的圖象 。

對於分發網路結構的選擇,常見的是樹狀的分發網路,比如 cdn 就是一種樹狀分發網路。

圖 1以圖 1 為例,演示 cdn 。圖中每個白色節點對應某乙個地方的機房。這種結構中,節點之間的等級有層次之分。

推流通常是由**向邊緣節點推,比如從左側開始推流到中心節點,然後再經過中心節點分發到全國各地的邊緣節點,觀眾就能夠**直播。

這種傳統的 cdn 樹型分發網路比較常見,但是不一定適應現在這種主播數目越來越多的趨勢。

與十年前相比,只有電視**可以做直播。直播的參與者也都是專業的主持人。但是,現在人們只需要一台手機就可以做直播了。換句話說,直播這個事,參與的門檻越來越低是乙個趨勢。

這種趨勢帶來的影響有兩個:

主播的數量越來越多,造成推流節點裡的人會越來越多;

對於某個主播的觀眾而言,不再侷限於某乙個區域,而是分布在全國各地。

這樣一來,樹狀分發網路的中心節點將成為整個網路的瓶頸。因為大量的主播的推流幾乎不可避免地經過中心節點,而中心節點一旦故障則會影響全域性。

為了解決這個問題,可以選擇網狀的分發網路來代替樹狀的分發網路。

圖 2以圖 2 為例,演示分發網路,與樹狀網路乙個最大的區別是節點對等。直播線路是靠節點之間的地理關係、資源負載、網路質量形成排程依據繪製最優線路。相對於 cdn 樹狀網路,乙個很明顯的特性是分發網路沒有中心節點,做到了去中心化,以此規避因中心節點網路波動導致片區故障。這種網路更加適合做直播,七牛雲的實時流分發網路採用的也是這種網狀結構。

但是,有了這些功能還遠遠不夠。

直播是一種轉瞬即逝的東西,播完了就沒了,這種東西如何做運營呢?這其實就涉及如何把直播內容儲存起來的問題。對此,七牛雲可以提供雲儲存服務,它可以方便地把直播的內容儲存下來,以供點播和回放。

此外將直播內容抽幀成一組,然後利用七牛資料處理平台的鑑黃鑑暴恐服務,就可以對直播進行鑑黃和鑑暴恐。

圖 3

圖 4

圖 5以圖 5 為例,演示七牛雲儲存,如何與七牛直播雲 sdk 結合,從而實現點播、回放功能。

圖 6以圖 6 為例,演示七牛處理的服務。

新人產品經理如何從0到1完成一款產品?

在大多數人的眼中,產品經理不過是畫畫原型 寫寫文件罷了。其實原型和文件只能算是作為乙個產品經理最最基礎的必備技能。相對於紙面上展示的東西,解決問題的能力才是乙個產品經理必不可少的。一 產品定位 如果我在還沒有找到前進的方向之前,就開始畫原型或者寫文件,這很容易就會導致我們開發出來的產品和我們原本想象...

開發一款app從PHP到API介面

一 先簡單回答兩個問題 1 php 可以開發客戶端?答 不可以,因為php是指令碼語言,是負責完成 b s架構 或 c s架構 的s部分,即 服務端的開發。別去糾結 gtk winbinder 2 為什麼選擇 php 作為開發服務端的首選?答 跨平台 可以執行在unix linux windows ...

小白從0到1,如何學習web前端開發?

很多小白可能會說,我現在零基礎學習,現在前端開發的內容那麼多,我應該怎麼學呀?其實前端技術更新是挺快的,但是技術不管怎麼更新,怎麼發展,都離不開基礎的知識,把基礎的語法學好,理解好程式設計思想 開發方式,能面向多終端開發,響應式開發掌握好,基礎打牢了,再深入的內容都是可以迎刃而解的。今天就跟大家講一...