二、關於直播中問題和分析
參考鏈結
好吧,既然你們非要搞什麼直播,我就開始寫寫直播吧,怪不得webrtc是下一代關鍵技術,直播的一些業務頁必須要用webrtc來實現3~5秒延時對於多數常見的直播形式一般問題不大, 基本上滿足之前遇到的直播形式,但在某些場景下,直播的體驗非常差,例如我們最常見的連麥,如果延時超過了1s,基本上整段垮掉
在答題直播場景下, 一般都要求在一段時間內使用者提交答案,如果有各別使用者延遲比較大,這樣對使用者是不公平的。雖然直播平台仍然使用flv的傳輸形式完成答題直播,但是基本都會採用sei插幀等方法來解決時間同步問題, 需要平台的端和直播cdn做一些配合來完成。
從對業務的支援層面來看, 僅僅有rtmp、flv這種3~5秒延時以上的直播形式已經不夠了, 需要對更低延遲的直播業務進行支援。從技術的角度來看,國內常用的flv、rtmp這種直播手段,本身是adobe自己的標準, 而且很快會停止對flash的維護, 另一方面webrtc技術的興起,chrome、safari等瀏覽器也都進行了支援,因此也需要對新的技術有一些調研和準備。
關於技術的選型,我們需要兼顧各種各樣的場景
關於之前的業務的相容
cdn實現直播的秒開,webrtc在移動端擁塞控制和重傳方面有一些處理,所以我們需要使用webrtc解決卡頓的問題
關於webrtc,這個技術有點複雜,採用一部分功能
已有的業務,無論是、大小檔案、點播、直播,這些都是在tcp通訊基礎上實現的,所以短延時直播在開展的時候我們就思考了tcp的可能性。
直播常見的問題包括
主播在不穩定的網路環境下如何穩定推流?
偏遠地區的觀眾如何高畫質流暢**直播?
直播卡頓時如何智慧型切換線路?
如何精確度量直播質量指標並實時調整?
美顏等濾鏡特效處理怎麼做?
對於國內大部分平台都是使用的h.264和aac,我們在這個基礎上進行秒開的優化
對於h.264編碼來說,我們會有三個不同的幀,所謂幀是什麼呢?就是你看到的每乙個影象。
對於h.264來講,我們常見的有i幀,p幀,和b幀。
p幀
p-frame也就是說**幀,它的**幀是怎麼回事呢?p幀就是保留變的部分,不變的部分你去上乙個或者幾個幀裡面找就行。
p幀的好處是什麼呢?因為它只存一些變化資訊,所以它大概的壓縮比是i幀的50%。
b幀
b-frame,前後雙向引用**。
idr幀
idr幀有時也有它不太學術的叫法:關鍵幀。
idr 影象之後的影象永遠不會使用 idr 之前的影象的資料來解碼。
我們可能會看到ffmpeg的資料結構裡會標著pts和dts,那麼pts和dts是什麼呢?
pts和dts是什麼?
pts,presentation time stamp也就說這個幀什麼時候會放在顯示器上;
dts就是decode time stamp,就是說這個幀什麼時候被放在編碼器去解。
那麼如果全是i幀和p幀,pts和dts都是單調遞增的,那麼如果我們有b幀,會出現什麼情況?因為大家都知道,對於b幀來講,它會引用前面的幀和後面的幀。
為什麼直播會等待
關鍵幀緩衝如何工作
fec是靠冗餘傳輸,來提高容錯率。關鍵幀10%冗餘率, 非關鍵幀5%,根據丟包判斷出網路狀況,動態調整冗餘度。
IM 直播互動場景
但是對於直播互動場景來說,對於這個精準投遞應該如何進行優化呢?對於直播互動場景中的監控指標一般可以分為兩大類 業務效能指標 比如直播間人數,發訊息和信令的qps與耗時,訊息收發延遲等 機器效能指標 主要是通用化的機器效能指標,包括頻寬,pps,系統負載,iops 對於直播互動的訊息下推來說,長連線入...
iOS直播技術分析與實現
不經意間發現,兩個月沒寫部落格了 把最近的一些技術成果,總結成了文章,與大家分享。根據以上的了解要實現http live streaming直播,需要研究並實現以下技術關鍵點 2.對原始資料進行h264編碼和aac編碼 4.hls分段生成策略及m3u8索引檔案 4.http傳輸協議 1.分段策略 h...
個人直播背後的技術分析
文 胡小清 作者簡介 2000 年加入華為,一直從事軟體產品和解決方案的研發 系統設計 架構設計工作。個人直播 關鍵技術 1 rtmp real time messaging protocol 個人直播中大家了解到最多的技術是 rtmp,基於實時的 流傳送技術 但傳統 rtmp 基於 tcp,需要 ...