推流端? 采集 處理 編碼 推流
服務端? 轉碼 錄制 截圖 鑒黃
播放端? 拉流 解碼 渲染
互動系統(tǒng) 聊天 禮物 點贊
1fps = 1280*720*1.5bit =1382400bit = 172800byte = 172KB
1秒 = 30fps = 5160KB = 5M
1秒5m數(shù)據(jù)量就可以看了
H264 = 172K+30 P幀 = 500K
編碼壓縮數(shù)據(jù)空間太示,減少傳輸空間
H264 空間 時間? 編碼? 視覺? 4個冗余
NALU 網(wǎng)絡提取層單元
sps 圖片序列 pps 圖片信息 I幀 幀內(nèi) P幀 前向 B幀 雙向
GOP 兩個I幀圖像組 秒開原理
H264主流 H265 VP8 VP9
音頻編碼:sac ppm wav ogg
視頻編碼:fav ts avi等
推流協(xié)議:
rtmp 最廣泛? cdn 簡單 基礎tcp 傳輸成本高
webrtc w3c 基于udp? cdn支持差
ump 定制化空間大 成本高 cdn 不友好
優(yōu)化:保證音頻傳送 調(diào)整碼率 fps 分辨率? 減少數(shù)據(jù)
服務端: 轉碼 錄制截圖 點播 分發(fā)協(xié)議分發(fā)到客戶端
拉流: rump http-flv hls
解碼:編碼逆過程 提取原始數(shù)據(jù)
渲染
交互: 聊天 禮物
常用工具:
推流 OBS Studio
播放端 cutv 測試工具
softe aac /h264bsanalyzer /flvparse /yuvplayer
直播sdk:
阿里云 騰訊云 金山云 ucloud 七牛云
rtmp 實時消息傳輸: tcp/ip 應用層協(xié)議? 推送/直播? 基本數(shù)據(jù)單元為消息
1B 消息類型? 2B 長度? 3B 時間 4B? 流id 消息體
傳輸時 消息回被拆分成消息塊 chunk chunk header + chunk data
flv: 大塊音視頻 加入標記頭信息? 延遲表現(xiàn)和大規(guī)模并發(fā)成熟
HLS:分成5-10s 用m3u8索引管理 用于朋友圈分享?
m3u8索引: 直播信號源--視頻編碼器(后臺視頻處理)--流切片器--各種ts媒體文件(分發(fā)模塊)--索引文件(數(shù)據(jù)庫)--客戶端
cdn網(wǎng)絡 為了解決用戶訪問資源慢出現(xiàn)的技術
邊緣節(jié)點? 二級節(jié)點(大城市) 源站
搭建流媒體服務:
準備流媒體服務器 linux max 編譯安裝nginx服務? 配置rtmp服務并啟動nginx服務
聲音三要素:音調(diào) 音量 音色
音頻量化(模數(shù)轉換):模擬數(shù)據(jù) 采樣? 量化 編碼? 數(shù)字信號? == 0101001110
碼率 = 采樣率(1.6w/44.1/48k)x 采樣大小(8位-電話/16位-常見) x 聲道數(shù)(單/雙)
音頻壓縮: 有損消除冗余數(shù)據(jù)? 哈夫曼無損編碼
音頻編碼: 時域轉頻域---心里聲學模型---量化編碼---比特流格式化---比特流
音頻編解碼 : opus(口 耳 實時互動 最快)? aac(直播用 次快)? speed(回音 降噪等)? g.711(固話)
aac : 取代mp3 加入 sir ps 技術?
aac lc 128k / aac he v2 64k /? aac he v2 32k/
aac 格式 : adif 從頭開始解碼,用在磁盤文件中? adts 每一幀都有一個同步字祭务,可以在任何位置解碼
aac 編碼庫 : libfdk_aac > ffmpeg aac >libfaac> libvo_aacenc
H264: I幀 關鍵 幀內(nèi)壓縮? / p幀 向前參考1幀 / B幀 雙向參考幀
sps: 序列參數(shù)集/pps:圖像參數(shù)集
GOF: 一組幀數(shù)? p幀丟失 會花屏卡頓
視頻編碼器: x264/x265 /open h264(svc)/vp8/vp9
h264 壓縮技術-編碼原理: 幀內(nèi)預測壓縮镀迂,空域冗余數(shù)據(jù)/幀間預測壓縮掸宛,時域冗余數(shù)據(jù)/dcp整數(shù)離散余炫變換,傅立葉變換/cabac壓縮
h264結構:視頻序列--圖像--片--宏塊--子快
h264編碼分層:nal 視頻數(shù)據(jù)網(wǎng)絡抽象層--vcl 視頻數(shù)據(jù)編碼層
碼率:sodb 原始比特流 / rbsp sodb最后補1 / ebsp 起始碼增加一個起始位0x03 /? nalu nal+ebsp
nal unit = nalu 頭部 + 一個切片(頭/數(shù)據(jù)) 切片
yuv格式:4:4:4/4:4:2/4:2:0 (平坦編碼 /半平坦編碼)