網路視頻直播系統開發需要用到哪方面的知識?

網路視頻直播系統需要用到哪些知識?用什麼語言開發?什麼開發環境?除了HTML5之外還需要哪些方面的知識?


一、直播的技術架構:

直播視頻採集SDK(PC/IOS/Anddroid)——直播CDN

(直播流分發加速)——直播視頻播放器SDK(PC/IOS/Android)

二、音視頻處理的一般流程:

數據採集→數據編碼→數據傳輸(流媒體伺服器) →解碼數據→播放顯示

1、數據採集:

攝像機及拾音器收集視頻及音頻數據,此時得到的為原始數據

涉及技術或協議:

攝像機:CCD、CMOS

拾音器:聲電轉換裝置(咪頭)、音頻放大電路

2、數據編碼:

使用相關硬體或軟體對音視頻原始數據進行編碼處理(數字化)及加工(如音視頻混合、打包封裝等),得到可用的音視頻數據

涉及技術或協議:

編碼方式:CBR、VBR

編碼格式

視頻:H.265、H.264、MPEG-4等,封裝容器有TS、MKV、AVI、MP4等

音頻:G.711μ、AAC、Opus等,封裝有MP3、OGG、AAC等

3、數據傳輸:

將編碼完成後的音視頻數據進行傳輸,早期的音視頻通過同軸電纜之類的線纜進行傳輸,IP網路發展後,使用IP網路優傳輸

涉及技術或協議:

傳輸協議:RTP與RTCP、RTSP、RTMP、HTTP、HLS(HTTP Live

Streaming)等

控制信令:SIP和SDP、SNMP等

4、解碼數據:

使用相關硬體或軟體對接收到的編碼後的音視頻數據進行解碼,得到可以直接顯示的圖像/聲音

涉及技術或協議:

一般對應的編碼器都會帶有相應的解碼器,也有一些第三方解碼插件等

5、播放顯示:

在顯示器(電視、監視屏等)或揚聲器(耳機、喇叭等)里,顯示相應的圖像畫面或聲音

涉及技術或協議:

顯示器、揚聲器、3D眼鏡等

三、常見的視頻直播相關協議:

1、RTMP(Real

Time Messaging Protocol,實時消息傳送協議)

RTMP是Adobe Systems公司為Flash播放器和伺服器之間音頻、視頻和數據傳輸開發的開放協議。它有三種變種:

1)、工作在TCP之上的明文協議,使用埠1935;

2)、RTMPT封裝在HTTP請求之中,可穿越防火牆;

3)、RTMPS類似RTMPT,但使用的是HTTPS連接;

RTMP協議是被Flash用於對象、視頻、音頻的傳輸。這個協議建立在TCP協議或者輪詢HTTP協議之上。RTMP協議就像一個用來裝數據包的容器,這些數據既可以是AMF格式的數據,也可以是FLV中的視音頻數據。一個單一的連接可以通過不同的通道傳輸多路網路流,這些通道中的包都是按照固定大小的包傳輸的。

2、RTSP(Real

Time Streaming Protocol,實時流傳輸協議)

RTSP定義了一對多應用程序如何有效地通過IP網路傳送多媒體數據。RTSP提供了一個可擴展框架,數據源可以包括實時數據與已有的存儲的數據。該協議目的在於控制多個數據發送連接,為選擇發送通道如UDP、組播UDP與TCP提供途徑,並為選擇基於RTP上發送機制提供方法。

RTSP語法和運作跟HTTP/1.1類似,但並不特彆強調時間同步,所以比較能容忍網路延遲。代理伺服器的緩存功能也同樣適用於RTSP,並且因為RTSP具有重新導向功能,可根據實際負載情況來切換提供服務的伺服器,以避免過大的負載集中於同一伺服器而造成延遲。

3、RTP(Real-time

Transport Protocol,實時傳輸協議)

RTP是針對多媒體數據流的一種傳輸層協議,詳細說明了在互聯網上傳遞音頻和視頻的標準數據包格式。RTP協議常用於流媒體系統(配合RTCP協議),視頻會議和一鍵通系統(配合H.323或SIP),使它成為IP電話產業的技術基礎。

RTP是建立在UDP協議上的,常與RTCP一起使用,其本身並沒有提供按時發送機制或其它服務質量(QoS)保證,它依賴於低層服務去實現這一過程。

RTP 並不保證傳送或防止無序傳送,也不確定底層網路的可靠性,只管發送,不管傳輸是否丟包,也不管接收方是否有收到包。RTP 實行有序傳送,RTP中的序列號允許接收方重組發送方的包序列,同時序列號也能用於決定適當的包位置,如在視頻解碼中,就不需要順序解碼。

4、RTCP(Real-time

Transport Control Protocol,實時傳輸控制協議)

RTCP是RTP的配套協議,為RTP媒體流提供信道外的控制。RTCP和RTP一起協作將多媒體數據打包和發送,定期在多媒體流會話參與者之間傳輸控制數據。

RTCP的主要功能是為RTP所提供的服務質量(QoS)提供反饋,收集相關媒體連接的統計信息,例如傳輸位元組數,傳輸分組數,丟失分組數,單向和雙向網路延遲等等。網路應用程序可以利用RTCP所提供的信息來提高服務質量,比如限制流量或改用壓縮比小的編解碼器。

四、利益相關

我們團隊是做直播技術的,底層架構都是做好的,開放給開發者sdk和api介面,開發者接入後就可以實現直播的功能。歡迎和我們交流學習。我的qq3103607948

知乎專欄 這篇文章彙集了我對這個行業的理解,歡迎大家指點。


這個知識的範圍真的很大,涉及到編程功底、網路、流媒體、CDN、等等等等... 與其說知識不如說需要用到哪些技術,用這些開源的技術你可以在一周之內搭一個完整的網路視頻直播系統。然後你再用這些技術反推你需要的知識,這樣就不會導致學到沒用的知識。

鏈接:

如何搭建一個完整的視頻直播系統? - 網路主播

七牛雲移動端推流開源SDK:

GitHub - pili-engineering/PLCameraStreamingKit: Pili RTMP Streaming SDK for iOS, H.264 and AAC hardware encoding supported. Camera and Microphone as input source.

完整的基於IOS手機直播:

GitHub - songsmith/LiveVideoCoreSDK

OBS-PC端主播推流工具,鬥魚等遊戲直播都在用

GitHub - jp9000/obs-studio: OBS

RTMP直播可以用nginx-rtmp

GitHub - arut/nginx-rtmp-module: NGINX-based Media Streaming Server

開源播放器也很多,ffplay、jwplayer、ijkplayer等等,我就不一一給你發了,哈哈

https://github.com/Bilibili/ijkplayer

其實最難的難點是提高首播時間、服務質量即Qos。要想在技術上把別的直播站PK下去,可以考慮這幾種方案:

1. gop緩存,為加快首播時間

2. gop丟幀,為解決延時,為什麼會有延時,網路抖動、網路擁塞導致的數據發送不出去,丟完之後所有的時間戳都要修改,切記要不客戶端就會卡一個 gop的時間,是由於 dts 和 pts 的原因,或者播放器修正 dts 和 pts 也行(推流端丟gop更複雜,丟 p 幀之前的 p 幀會花屏)

3. 純音頻丟幀,要解決音視頻不同步的問題,要讓視頻的 delta增量到你丟掉音頻的delta之後,再發音頻,要不就會音視頻不同步

4. 源站主備切換和斷線重連

5. 根據TCP擁塞窗口做智能調度,當擁塞窗口過大說明節點服務質量不佳,需要切換節點和故障排查

6. 增加上行、下行帶寬探測介面,當帶寬不滿足時降低視頻質量,即降低碼率

7. 定時獲取最優的推流、拉流鏈路IP,儘可能保證提供最好的服務

8. 監控必須要,監控各個節點的Qos狀態,來做整個平台的資源配置優化和調度

9. 如果你家產品從推流端、CDN、播放器都是自家的,保障 Qos 優勢非常大.

10. 當直播量非常大時,要加入集群管理和調度,保障 Qos


對於做了騰訊視頻多年的表示,如果要全國用戶跨平台流暢觀看,這個東西複雜到我已經很難在知乎上回答了;對於要簡單的看了w3school然後用chrome寫個hello world,可以apache搭個伺服器,html5設置src就行了,不過這是點播,要模擬直播,把MP4轉一個M3U8修改src過去就行了。


如果是做直播平台,最難的是從攝像頭(包括移動端、PC)推流到伺服器這一段,各種bug太多了

從直播伺服器分發到用戶這一段,基本就是把流複製到CDN而已,包括多碼流輸出都是CDN做。能怎麼樣取決於CDN的良心

如果還要把視頻保存下來,做後續處理。那就是另外一個問題了。


上面已經說的很完整了,我真不知道該不該補充。

我簡單說兩句,希望對你有價值,而且不耗時間。

網路視頻直播系統開發需要用到哪方面的知識?修

1. 語音視頻的幾個模塊:回聲消除,雜訊抑制,自動增益,丟幀補償,前向糾錯,網路抖動。

2. 流媒體傳輸的各個協議:RTMP,WEBRTC,HLS,HTTP-FLV,RTP/RTCP。

3. 終端的兼容性:安卓,安卓,安卓!要全面兼容安卓是一個很痛苦的事情。

4. 海量用戶並發支持:這個需要經驗,如果你做過海量用戶並發的大規模系統,這個就不是問題。

5. 各個終端:MAC, WINDOWS, IOS, ANDROID.

這裡每一塊都需要一個牛人去跟,我不覺得一個人能夠全面精通。就算是每一個模塊,都是要一個牛人多年的技術積累,才能做出好東西。

本人是即構科技後台一枚,做的是後台媒體伺服器這一塊,複雜的後台調度演算法就足夠讓你心煩,更不要說上面的那些了。我們和花椒,一直播等公司合作過,他們的工程師十分牛逼,大風大浪都見過,但是在上面提到那幾個關鍵點上,也免不了栽跟頭。


這裡成了直播廠家宣傳的窗口了。

試一下就知道哪個好


喬韻直播系統是一款完善且功能齊全的視頻直播平台系統程序,它擁有諸多功能,且有完善的後台運營管理系統。

前台視頻直播系統包括主播系統,禮物系統,遊戲系統,道具系統,代理功能,排行榜,充值系統,個人中心,守護系統等。

後台系統包括基礎設置,用戶管理,財務結算,界面樣式,資料庫管理,活動管理等。


喬韻直播團隊較專註秀場直播程序開發,提供穩定安全優質的視頻解決方案,快速按照客戶需求搭建視頻直播平台。


一般都是 pc 推流 + pc觀看或手機觀看. 推流需要 網路視頻雲,網上很多; 還需要分流網路,對信息的分法。這個分法演算法關係到你的系統能承擔多少人的在線等等; 需要的東東 好多好多,自己找查查吧

如果嫌麻煩,可以買一個或租一個:

廣告中:

點量軟體於2016年7月正式上線番茄財經直播系統: 番茄財經,一家專門做財經股票視頻講解的網站,試運營期間,超過6000用戶穩定觀看直播,同時發布PC和Android版本,直播時代,您不必再自行開發!點量番茄財經直播系統的功能和特點包括: 1)功能完善的全套系統方案。目前番茄財經支持PC、Android和IOS系統(2016年8月上線),並且包括講師推流端、自主研發的PC、移動端播放器系統等,全套技術完整閉環,直接可以上線運營。 2)0.8-2秒低延遲設計,讓溝通及時順暢。 3)目前內置支持多家CDN廠商,用戶可以根據需要自由切換CDN網路。 4)全套源碼自主研發,包括推流系統、播放器系統、高負載聊天室系統、回放錄播等。 5)單聊天室伺服器支持5萬以上用戶並發聊天,多伺服器自動負載均衡。 6)支持定製、租賃房間等各種模式,靈活方便。 7)我們是提供全套系統方案的廠商,免除用戶後顧之憂。 點量直播系統,可以適用於財經直播、美女秀場、在線教育、視頻會議等多種應用領域場合。直播系統的講師端功能介紹如下: 主要功能為採集各類圖像、視頻,實時低延時上傳至rtmp伺服器,實現視頻直播的發布端。目前支持圖片、視頻文件、視頻文件地址、攝像頭數據、電腦桌面、電腦桌面任意區域等類型輸入的層疊採集(可以自定義區域大小和層級)。支持多場景設置,可以無縫切換多場景。支持回放錄像等功能。


ucloud能為你解決大部分事情


這是看到的第N個某某怎麼開發出來的問題,,,


姿勢: 攝像頭採集,音視頻編解碼,流媒體協議,音視頻流推送到流媒體伺服器,流媒體網路分發,用戶播放器,音視頻同步,網路延遲自適應。需要錄製,多種視頻文件的格式和封裝。需要交互和彈幕的話,還要更多的web服務。

語言:C、C++、html、php、mysql。。。

開發環境:嵌入式,linux,windows,web。。


HTML5對直播支持很爛!所以在移動端主要使用APP實現,在PC端需要flash player。

所以HTML5的知識對直播毫無幫助。

假設你只是準備搭一套測試系統。你需要熟悉ffmpeg的使用,對http、HLS、RTMP協議有初步的了解,加上能用google的網路環境,一周之內能夠拼湊出一個能用的系統。


視頻解碼插件編寫

後端數據分發

流媒體搭建

現在的前端吶 不謙虛 會點html5就以為可以做個應用


推薦閱讀:

直播視頻會是下一個風口么?直播做網紅靠譜么?
如何搭建一個完整的視頻直播系統?
視頻直播網站不涉及黃暴內容就無法生存嗎?
為什麼我直播沒人看啊?

TAG:互聯網 | 前端開發 | HTML5 | 視頻直播 | HTML5應用 |