PHP之 直播開發後端需要做什麼——準備工作

目前,直播應用於各大平臺,可謂盛極一時。對於沒有開發過的人,可能僅瞭解個大概,但談到具體要怎麼開發,可能就不知道其中梗概了。

作爲PHP後端開發,一開始在接到“直播開發”的任務時,也是一頭霧水,代碼不知何起一臉懵逼。於是上網搜索,有人說,後端不需要做什麼,這些大部分是APP端(安卓和IOS)的事,後端僅需要在表裏存一下推、拉流地址,就行了。可真的是這樣麼,當我開發完百分之九十的東西之後,就直呼你大爺的,哪有那麼簡單啊。這些還好,有人給你貼出來,多少能做個參考,可再找,就真的寥寥了,要麼是騰訊的廣告文,要麼是一些其他培訓機構的廣告,要麼就是一些找開發直播的,總之,差強人意。沒辦法,沒人,沒資源,只能硬着頭皮,抹黑上了。

從今年2月份開始,到現在,跌跌撞撞,配合APP端,總算搞了個大概,箇中原委,也多少摸了一遍,故,這裏將整個過程中,PHP需要處理的邊邊角角進行整理,希望對要開發直播的人,多少能有點幫助。說的,不妥的地方,勿怪!

直播的原理相關

直播,總體上說,是通過“推流”和“拉流”兩個動作來完成的。而推流和拉流中間,還有一個流服務器,作爲存儲你音視頻數據的中轉站,用來存儲直播數據,舉個簡單的例子,推流,就好比快遞員給你送貨,快遞櫃,就好比這個流服務器,暫時,給你存儲,而你取快遞,就好比拉流,你需要從快遞櫃,將快遞取出來,拿到你想要的東西。大概就是這麼個樣子。

細緻一點說,直播是由推流端、源站、拉流端三部分組成,推流端,比如直播的人通過手機APP、PC、小程序,進行直播,再讓收看的人觀看,就稱爲推流端,通過這些音視頻數據採集工具,使用TRMP協議將直播人的直播數據,推到源站,觀看直播的人,再通過拉流的相關協議和地址,拉取直播人的直播數據,在播放端,比如手機、平板、PC上就可以觀看了。

可能會有人問,那麼多的直播,我是怎麼看到我要看的那個直播的信息的?這個問題,也是我一開始疑惑的地方,後來,才知道,原來推流和拉流,它倆,就跟太極的陰與陽一樣,是一對的,這裏有個概念,“流”,推流會有推流地址,拉流會有拉流地址,這兩個地址雖然不完全一樣,但是,他們對應的流是一樣的,換句話說,你之所以能開你家門上的鎖,是因爲,你有跟它配對的鑰匙,也就是說,當你點開直播的時候,你是點擊的直播的拉流地址,他在那邊一直往你這個點推流,而你一直在這個點,拉流,那麼,你就能一直看到他的圖像和聲音了。

推流和拉流的相關概念

推流,指的是把採集階段封包好的內容傳輸到服務器的過程。

拉流,是指服務器已有直播內容,用指定地址進行拉取的過程

主流的推送協議和優缺點

RTMP

RTMP是Real Time Messaging Protocol(實時消息傳輸協議)的縮寫,是Adobe公司爲Flash/AIR平臺和服務器之間音、視頻及數據傳輸開發的實時消息傳送協議。RTMP協議基於TCP,包括RTMP基本協議及RTMPT/RTMPS/RTMPE等多種變種。

RTMP協議中,視頻必須是H264編碼,音頻必須是AAC或MP3編碼,且多以flv格式封包。RTMP是目前最主流的流媒體傳輸協議,對CDN支持良好,實現難度較低,是大多數的直播平臺的選擇。

不過RTMP有着一個最大的不足——不支持瀏覽器,且Adobe已不再更新。因此直播服務要支持瀏覽器的話,需要另外的推送協議支持。

HLS

Http Live Streaming是由Apple公司定義的基於HTTP的流媒體實時傳輸協議。它的原理是將整個流分爲多個小的文件來下載,每次只下載若干個。服務器端會將最新的直播數據生成新的小文件,客戶端只要不停的按順序播放從服務器獲取到的文件,就實現了直播。基本上,HLS是以點播的技術實現了直播的體驗。因爲每個小文件的時長很短,客戶端可以很快地切換碼率,以適應不同帶寬條件下的播放。

分段推送的技術特點,決定了HLS的延遲一般會高於普通的流媒體直播協議。

傳輸內容包括兩部分:一是M3U8描述文件,二是TS媒體文件。TS媒體文件中的視頻必須是H264編碼,音頻必須是AAC或MP3編碼。

由於數據通過HTTP協議傳輸,所以完全不用考慮防火牆或者代理的問題,而且分段文件的時長很短。

WebRTC

WebRTC(Web Real-Time Communication),即“源自網頁即時通信”。WebRTC是一個支持瀏覽器進行實時語音、視頻對話的開源協議。WebRTC的支持者甚多,Google、Mozilla、Opera推動其成爲W3C推薦標準。

WebRTC支持目前的主流瀏覽器,並且基於SRTP和UDP,即便在網絡信號一般的情況下也具備較好的穩定性。

此外,WebRTC可以實現點對點通信,通信雙方延時低,此外,WebRTC可以實現點對點通信,通信雙方延時低,是實現“連麥”功能比較好的選擇。

騰訊雲OR阿里雲,挑一個吧

瞭解了大致原理與一些基本概念,那麼,接下來,就得就平臺進行選擇了,目前,直播比較成熟的第三方平臺有:騰訊雲,阿里雲,網易雲信,七牛雲,金山雲等。我們不可能自己搞一個,當然,財力雄厚的,另當別論。對於,普通的公司,從這幾個成熟的產品中,選擇一個,還是比較明智的選擇,畢竟人家是專業的,花錢就花錢吧,相比,讓你自己搞一個,給人家的服務費可能就是九牛一毛。

目前,比較出名的直播,龍珠、小程序、鬥魚使用的是騰訊雲;全名直播、好未來、淘寶使用的是阿里雲;網易雲課堂使用的是網易雲;熊貓直播、龍珠使用的七牛雲;今日頭條使用的是金山雲;陌陌、花椒、狼人殺、B站使用的是聲網。其他的,就不說了。

反正,就功能點而言,騰訊雲和阿里雲相對而言,較優,畢竟人家的實力在那放着呢。不過,其他的,也是百家爭鳴,各有長處,存在,即有道理。

相比其他,騰訊雲有一個最大的特點,就是支持“錄屏推流”,也就是可以錄播,將直播錄製下來,進行二次回放。而其他的第三方,都沒有此功能,因此,我們選擇了騰訊雲,是的,我們的業務有錄播的功能。

至於直播連麥、多主播互動、IOS 安卓 小程序的支持等等的,就根據實際的業務去選擇,即可。業務不同,需求不同,選擇就不同。

使用騰訊雲需要做哪些準備

1、開通雲直播

首先,註冊騰訊雲賬號,進行實名認證;然後,進入 騰訊雲直播服務開通頁,勾選同意《騰訊雲服務協議》,並單擊【申請開通】即可開通雲直播服務。

注意:
雲直播服務申請開通成功後,會贈送20GB國內播放流量免費體驗使用。切記,喫白食,欠費了,就沒法使用雲直播服務了,建議提前買好相應的套餐,免得斷糧餓肚子。

2、域名準備

開通騰訊雲直播以後,緊接着,你就需要準備域名了,你可以購買一個域名,從阿里還是騰訊,然後,做兩個二級域名,一個做推流域名,一個做拉流域名,這是前提,而且,切記,一定得提前買,因爲,備案審覈可能會讓你等好多天,還得提交相應的文件,等等,總是域名的購買最好不要等到水都燒開了,纔去買米。

域名準備好,就完了嗎,呵呵,都還沒開始呢。登錄騰訊雲,進入【控制檯】,進入【雲直播】,左側菜單【域名管理】,點擊【添加域名】,選擇【自有域名】,選擇【確定】。注意,這裏要添加兩個自有域名:推流域名和拉流域名。

自有域名添加後,系統會爲您自動分配一個 CNAME 域名,但 CNAME 域名不能直接訪問,您需要在域名服務提供商處完成 CNAME 配置,配置生效後,即可享受使用雲直播服務。

這句話,可能不是那麼的清晰明瞭,這麼說吧,我使用的是在騰訊雲購買的域名,在騰訊雲這邊添加後,還得去登錄阿里雲,進入阿里雲的【控制檯】,進行配置,具體步驟:

1)、登錄阿里控制檯,找到【雲解析DNS】

2)、選擇要解析的域名,進行【解析設置】

3)、進入之後,選擇如果已經有你要的域名記錄,直接點擊修改;如果沒有,點擊【添加記錄】也可。屆時,會出現如下界面

重點記錄類型,一定要選擇CNAME,切記!!!
重點記錄值,一定要寫你在騰訊雲添加完的推拉流地址的CNAME值!!!

點擊【確定】即可!

4)、最後如下展示

5)、再去騰訊雲的【域名管理】,刷新頁面!

有一個已經成功了,另一個還未成功,怎麼回事?

仔細檢查,發現是沒有填對,注意“儘量粘貼”,切勿“手敲”,避免出錯!!

回到騰訊雲【域名管理】,再次刷新頁面,查看:

注意:如果出錯後,更改還不成功的話,把阿里雲的解析記錄刪了,重新添加一下,重新刷新,即可!
3、推流、拉流地址
域名配置好了,緊接着,就需要了解一下,推拉流的地址了。先舉個簡單的例子,如下:

推流:
rtmp://tes.push.live.com/live/wb_live_1055_13?txSecret=2faab724ed902e3af8ba2e96dea19d0c&txTime=5E5A8A7F

拉流:
http://tes.pull.live.com/live/wb_live_1055_13.flv?txSecret=86d0c0a9461019a9f47e86dd5e6c2b37&txTime=5E5A8A7F

注意,這兩個地址,有一個相同的地方“wb_live_1055_13”,這個東西,就叫做流,前文也有提到,推流地址和拉流地址的流,必須相同,這樣才能確保,看直播的人,看到主播的數據信息,否則,直播無從談起。

那麼,這兩個地址,是系統生成的呢,還是,自己可以手動生成?答案是肯定的,我們自己可以生成。但是,得遵循騰訊雲的規則。比如,推流的時候,只能使用RTMP協議,拉流的時候,可以有RTMP、FLV、HLS三種,這個,具體選哪個,可以根據錄播模板來定,這裏,我們選擇的是FLV的。

至於生成推拉流的方法,騰訊雲都有示例代碼,具體可進入騰訊雲控制檯,在【域名管理】列表,隨便選一個推流域名,進去,在詳情【配置】頁,往下拉到底,就能看到,具體的,可能還涉及到鑑權,簽名等,這裏,簡單提及一下,另外,騰訊雲文檔裏,也有,這裏就不做贅述。

生成了推拉流地址,那麼,我們如何知道自己生成的地址是否有用呢,騰訊雲有一個工具,叫做“視頻雲工具包”,專門用來檢測你生成的推拉流地址是否有效的:

具體的地址,沒記住,從騰訊雲相關文檔中,能找到。用兩個手機,下載之後,可以將生成的推流地址,給到其中的一部手機,在【移動直播】,【攝像頭推流】,點開,輸入推流地址,點擊左下角的【三角播放鍵】,即可進行推流;然後,用另一個手機,打開該軟件,【移動直播】,【直播拉流】,點擊進入,在上面的地址欄輸入拉流地址,點擊左下角【三角按鈕】,如果可以觀看到另一部手機的直播畫面,那就表示,你的推拉流地址生成沒有問題!

當然,這塊,騰訊雲文檔有詳細說明,具體可以取騰訊雲的雲直播官方文檔去了解細節。

這就是直播開發前的簡單準備,可能實踐中,要比此文涉及的更多一些,這裏只做引路,細節上,就不多說,因爲很多東西都得自己去揣測。好了,準備工作,就暫且說到這裏,其他,後文再說。


--------------------------------------------------------------
參考:https://www.jianshu.com/p/7d0d452063d9
https://blog.csdn.net/github_37847975/article/details/90482402


The End!                                                                          2020/4/13 16:01:05
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章