移動端音頻視頻入門

課程地址:https://www.imooc.com/learn/959ios

 

1、萬人直播架構與CDN網絡

1.直播分類

與固話互聯,要求延遲不超過400毫秒nginx

2.泛娛樂化直播架構

cdn最重要編程

3.實時互動直播架構

tcp協議是可靠的流式傳輸協議——A向B發送數據,必須收到且是有序的緩存

發送,確認,超時,重發安全

能夠重發三次,每次等待超時的時間都是成倍增加。若是網絡很差的話,等待時間就會很長服務器

tcp不可能達到實時傳輸效果網絡

使用UDP來傳輸,一直髮包,至因而否收到,無論架構

基於音視頻數據是有實時有效性的,因此選擇UDP來達到實時互動效果負載均衡

udp沒有現成網絡,要本身建立tcp

服務端多節點,一旦一個節點出現問題,能夠快速切換到另外一個節點,每一個節點負載均衡

每一個節點都要定時向控制中心報告數據

內總線-保證數據安全

經過內部總線傳到媒體服務器上,cdn網絡使用rtmp協議,媒體服務器起到轉換做用,從rtp到rtmp

用戶得到cnd的流,直接觀看

四、CDN網絡介紹

CDN:爲了解決用戶訪問網絡資源慢而出現的

鏈路過長,運營商各自利益

用戶訪問資源流程

電信用戶經過DNS或者http先找到就近邊緣節點,若是數據沒有,直接到主幹節點,看資源是在哪提供的服務,若是是在聯通上,就會到聯通的主幹節點上訪問,若是數據沒有,就會到聯通的源節點上,若是找到數據,再經過原節點返回。若是是第一個用戶,就會走很長時間,若是其餘用戶也訪問此數據,那麼數據就會緩存到邊緣節點上,能夠直接從邊緣節點上直接訪問,加快速度

傳統的cdn網絡會追求一些熱點,將一些熱點放到緩存裏

對於直播的cnd網絡,通常會經過源直接push到主幹節點,讓數據都存在,與推拉是相結合的

5.親手搭建一套簡單的直播系統

ffmpeg-常見音視頻格式轉化庫,音視頻抽取(eg:小咖秀),視頻上打水印,去水印,倍速播放,音視頻剪輯

ffplay-播放器,命令行的。基於ffmpeg作的二次開發

flashplayer-播放rtmp流的,能夠對rtmp協議作分析

安裝時間會長一些,nginx服務默認不包括rtmp服務

工做處理器個數:1

事件裏的鏈接數:1024

配置文件增長rtmp的配置項

端口:1935

音視頻傳輸,每一個塊大小:4000字節

指定一個特殊應用:live

應用打開,關閉錄製,容許任何人向我發起請求

wq!退出

nginx -s reload

重啓服務

nginx

若是是第一次,直接啓動就能夠

查看是否有1935端口

netstat -an |grep 1935

使用tcp協議,使用ipv4

-i是輸入

(1)經過ffmpeg方法

講一個直播地址上的音視頻流推送到本地上

http://bbs.chinaffmpeg.com/1.swf

輸入所要拉流的服務器地址

播放

(2)經過ffplay播放

ffplay rtmp://localhost:1935/live/room

(3)經過手機推流

經過手機推送到了mac本上,經過ffplay再從流媒體上抓取音視頻流

有兩個終端觀看

2、音頻入門

1.聲音三要素

越接近正弦波,聲音通常越好聽,畸形或產生噪波

音頻壓縮,就能夠採集到不少數據,砍掉人類聽不見的,減小數據存儲量

2,音頻的量化與編碼

低頻20hz,在44.1k採樣頻率裏,每秒採樣2k次

高頻20000hz,在44.1k採樣頻率裏,每秒採樣2次

 

3.音頻壓縮

發聲以前的50毫秒若是有個聲音特別小,就會被遮蓋掉

發生後的100毫秒也會被遮蓋

 

4.音頻編碼jiema器選型

 

實時互動系統能夠用opus

泛娛樂化直播通常使用AAC,opus通常不支持,推廣上有些困難

兩個系統融合,須要將opus與AAC互轉

speex:迴音消除,降噪模塊等可實現

G.711:有些會與固話相聯繫,固話用的就是G.711,或者G.722

綠色:開源且不收費

藍色:不開源不收費

紅色:不開源收費

5.AAC講解

(1)爲何重點介紹AAC

應用範圍廣,直播系統90%以上使用

傳輸協議,像cdn,支持rtmp,可是不支持opus

AAC的音頻編解碼能夠保持高保真

(2)AAC出現的緣由

SBR:下降低頻的採樣率,提升對高頻的採樣率,下降大小,提升音質

ps:把立體聲保存,一個聲道完整保存,另外一個聲道只存差別部分

AAC HE:碼率64k

AAC HE V2:,碼率32k

rtmp和flv中都有adts的格式

3、視頻入門

1.視頻基礎知識

通常視頻文件在30幀左右,比較高級的要求較高的在60幀

壓縮,B幀比率高。缺點:實時互動須要參考後幀,與網絡息息相關,若是網絡很差就要重傳

通常實時互動都不會使用B幀

泛娛樂化可使用B幀

一個I幀和另外一個I幀之間成爲一組幀,GOF

 

在一組幀以前,首先會收到sps和pps,若是沒有這兩個參數是無法解碼的

直播裏若是用x265,會佔用很好的cpu,通常不用,點播裏能夠用

openH264支持svc傳輸,svc技術:若是網絡差就發最小的,還能夠就發中間的,網絡好就都發..移動端不能再使用硬編,只能使用軟編,可能會佔用資源,發燙

硬編佔用網寬,軟編考驗移動端,這是個取捨問題

google推出的:vp8對應x264,vp9對應x265

2.H264的劃分和幀分組

傅里葉變換:將複雜的波形圖編程多個正弦波

CABAC壓縮:無損壓縮

 

3.視頻壓縮技術詳解

(1)幀內壓縮技術

 

(2)DCT壓縮(整數餘弦變換)

(3)VLC壓縮

4.H264結構與碼流

拆包,經過nal層處理

5.NAL單元

 

6.YUV講解

比rgb(8:8:8)節省存儲空間

pc端:  I420,

ios:   NV12

安卓:NV21

4、課程總結

相關文章
相關標籤/搜索