android
直播基礎知識ios
直播爲何火算法
基礎條件成熟瀏覽器
4G+wifi服務器
軟硬件水平提高網絡
遊戲行業的培養工具
彈幕文化測試
實時互動優化
文字網站
圖片
視頻
人性的驅動
窺探欲
炫耀
虛榮
色
直播的特色
點播
視頻網站看電視劇
文件存在服務器上
指定節目播放
直播
直播網站看主播
數據實時發送
內容能夠更改
直播的流程
推流端
採集 8000*216*0.02 = bit /8 = byte
音頻採集
採樣率
模擬信號 轉化爲 數字的過程
越大 音頻質量越高
例如 8kHz
位寬
通常8位
例如 16bit
聲道數
單/雙
例如:雙
音頻幀
2.5ms-60ms 約爲一幀
例如20ms
圖像採集
分辨率
長*寬
採樣頻率
採集格式
傳輸通道
採集源
攝像頭
屏幕錄製
文件推流
android採集
setPreviewCallback
MediaRecorder
機型適配
ios採集
AVFoundation.framework
pc採集
mjpeg-streamer
攝像頭
前處理
視頻處理
美顏
美白——算法識別皮膚輪廓,調整色值
磨皮——模糊處理 均值模糊、高斯模糊、中值模糊
濾鏡
GPUImage
水印
圖像與水印圖片的合併
音頻處理
混音
伴奏
音頻信號的疊加,採樣值溢出的處理
降噪
20Hz - 2000Hz
傅里葉變換、濾波法
特效
變聲
改變音色、色調, SoundTouch
編碼
必要性
壓縮數據
減小傳輸時間
編碼原理
空間冗餘
相鄰元素之間的相關性
時間冗餘
相鄰圖像之間的內容類似
編碼冗餘
像素值出現的機率不一樣
視覺冗餘
視覺對細節的不敏感性
H264 編碼
NALU:網絡提取層單元
SPS:包括了一個圖像序列的全部信息
PPS:包含了一個圖像序列全部片的信息
I幀:幀內編碼幀
P幀:前向預測編碼幀
B幀:雙向預測編碼幀
AAC 音頻
FLV,TS封裝格式
推流
推流協議
RTMP
優勢
CDN支持良好
協議簡單易實現
缺點
基於TCP,傳輸成本高
不支持瀏覽器推送
Adobe私有協議
WebRTC
W3C標準
基於udp
CDN支持較差
UDP自定義協議
定製化空間大
協議私有化
開發成本高
CDN支持不太好
推流優化思路
保證音頻的傳輸
調整碼率、FPS、分辨率
減小傳輸的數據
服務端
轉碼
適應不一樣網絡帶寬
適應不一樣終端處理
適應不一樣的用戶需求
爲直播平臺提供增值服務
直播爲實時轉碼,對圖像計算要求較高,保證音畫同步
錄製
截圖
製做封面
鑑黃
播放端
拉流
HTTP-FLV 即時性較高,互動性需求
HLS 回放需求,跨平臺需求
RTMP 即時性較高,互動性需求
解碼
編碼的逆過程
從音頻數據提取原始數據
硬解碼
速度快
不易發熱
軟解碼
渲染
視頻畫面的顯示
聲音的播放
音畫一致
互動系統
聊天
彈幕
禮物
平臺收入來源
增長畫面感,提升互動效果
自定義消息
關注
點贊
直播開發的輔助工具
推流端OBS Studio
播放端 CUTV測試工具
流信息展現豐富
可設置緩衝時間
網頁版
softe AAC Converter 轉化爲aac音頻
H264BSAnalyzer 分析H264視頻格式
FlvParse -分析FLV
yuvplayer -播放yuv文件