1. 程式人生 > >Android互動直播APP開發入門筆記

Android互動直播APP開發入門筆記

Android互動直播APP開發入門

大綱
直播的現狀: 直播平臺200+,3.25億使用者規模,90億市場規模。
2016年直播元年:
1.基礎條件的成熟:網路環境4G+WiFi(CDN節點)、軟硬體水平提升、遊戲行業的培養、彈幕文化
2.人性的驅動:窺探欲、炫耀、虛榮
3.實時互動:文字>圖片>視訊

直播的盈利點:直播打賞抽成、商品交易分紅、付費直播提成(CCTV、PPTV)、會員增值服務、廣告收入

直播流程的詳解:

1.採集推流端:採集、前處理、編碼、推流

採集>

音訊採集:將模擬訊號採集成數字PCM,技術參考點:取樣率(8KHz)、位寬(8bit,16bit)、聲道數(2)、音訊幀(0.02s);
影象採集:攝像頭採集YUV原始資料,技術參考點:解析度、取樣頻率、採集格式、傳輸通道
採集源:攝像頭、螢幕錄製、檔案推流
Android採集:setPreviewCallback獲取視訊原始資料,MediaRecorder獲取音訊資料。需要做機型適配
iOS採集:AVFoundation.framework
PC採集:攝像頭、mjpeg-streamer(螢幕)

前處理

視訊: 美顏(磨皮:模糊處理:均值模糊、高斯模糊、中值濾波;美白:識別面板,調整色值)、濾鏡(GPUImage開源庫,實時處理運算快)、水印(時間戳、Logo版權保護、監管)
音訊:混音(音訊訊號的線形疊加,取樣值溢位的處理)、降噪(傅立葉變換:去除人耳無法識別的頻率降低大小)、變聲特效(音色、音調 SoundTouch音訊處理開源庫:變速、變色、變調)

編碼和封裝

YUV420SP壓縮為H264,減小儲存空間,減少傳輸時間
編碼原理:去掉以下冗餘
(1)空間冗餘:相鄰畫素之間的相關性
(2)時間冗餘:相鄰影象之間內容相似
(3)編碼冗餘:畫素值出現的概率不同(哈弗曼表,出現概率高的畫素使用短編碼;無失真壓縮,類似rar、zip)
(4)視覺冗餘:視覺對細節的不敏感性(有失真壓縮)
常見的影象編碼器:H264、H265、VP8、VP9
H264編碼知識:
(1)NALU:網路提取層單元
(2)SPS:包括了一個影象序列的所有資訊
(3)PPS:包括了一個影象所有片的資訊
(4)I幀:幀內編碼幀
(5)P幀:前向預測編碼幀
(6)B幀:前向後向雙向預測編碼幀
(7)GOP(Group of Picture):兩個I幀之間的影象組,CDN快取GOP做到直播秒開
常見的音訊編碼器:AAC、PCM、WAV、OGG
常見的封裝格式:FLV、TS、AVI等

直播的推流與優化

推流協議:
(1)RTMP協議:CDN支援良好、協議簡單容易實現、資料包封裝簡單;缺點:基礎TCP,傳輸成本高、Adobe私有協議
(2)WebRTC協議:W3C標準、基於UDP;缺點:CDN支援較差
(3)UDP自定義協議:定製化空間大;缺點:開發成本高、CDN不友好
優化思路:
(1)保證音訊的傳輸
(2)調整位元速率、FPS、解析度

2.服務端:轉碼、錄製、截圖、鑑黃

轉碼目的:為了適應不同的網路頻寬、不同的終端處理能力和不同的使用者需求,為直播平臺提供很多增值服務
錄製截圖:錄製用於回放點播、截圖用於封面
鑑黃:基於深度學習的圖片識別技術,對直播流進行控制:色情、疑似色情、正常、性感

3.播放端:拉流、解碼、渲染

常見的拉流協議:
(1)RTMP:
(2)HTTP-FLV:
(3)HLS:延遲較大
解碼:編碼的逆過程,從音視訊的資料中提取原始資料
(1)硬解碼:速度較快,適配問題
(2)軟解碼
渲染:視訊畫面的顯示,聲音的播放;音視訊的同步

4.互動系統:聊天、禮物、點贊、連麥

5.直播開發的工具:

(1)支援桌面和檔案推流
(2)支援多畫面、多音訊混合推流
(3)支援錄製
(4)開源

伺服器:一般使用Nginx搭建的RTMP

(1)流資訊展示豐富
(2)可設定緩衝時間
(3)網頁版

其他輔助工具

(1)Softe AAC Converter:轉化為AAC音訊
(2)H264BSAnalyzer:分析H264視訊格式
(3)FlvParse:分析FLV檔案
(4)YUVPlayer:播放YUV檔案

直播SDK

阿里雲:
騰訊雲:
歡聚雲:
金山雲:
UCloud:
七牛雲:
聲網: