視頻采集以及播放的流程
視頻直播的流程可以分為如下幾步:
采集 —>處理—>編碼和封裝—>推流到服務器—>服務器流分發—>解協議->解封裝->解碼視音頻>視音頻同步
一、采集
1.音頻采集:主要通過設備將環境中的模擬信號采集成 PCM 編碼的原始數據,然後編碼壓縮成 MP3 等格式的數據分發出去。常見的音頻壓縮格式有:MP3,AAC,HE-AAC,Opus,FLAC,Vorbis (Ogg),Speex 和 AMR等
2.圖像采集 :圖像的采集過程主要由攝像頭等設備拍攝成 YUV 編碼的原始數據,然後經過編碼壓縮成 H.264 等格式的數據分發出去。常見的視頻封裝格式有:MP4
二、視頻處理
分為音頻和視頻處理,音頻處理中具體包含混音、降噪和聲音特效等處理,視頻處理中包含美顏、水印、以及各種自定義濾鏡等處理。
三、編碼和封裝
1.編碼的意義:原始視頻數據占用存儲空間很大,通過編碼壓縮形式來使存儲空間變小
2.編碼的核心:就是去除冗余信息
1)空間冗余:圖像相鄰像素之間有較強的相關性
2)時間冗余:視頻序列的相鄰圖像之間內容相似
3)編碼冗余:不同像素值出現的概率不同
4)視覺冗余:人的視覺系統對某些細節不敏感
5)知識冗余:規律性的結構可由先驗知識和背景知識得到
3.編碼器的選擇
下面是一些常見的視頻編碼器:
1)H.264/AVC
2)HEVC/H.265
3)VP8
4)VP9
5)FFmpeg
註:音頻編碼器有Mp3, AAC等。
4.封裝
封裝的含義:封裝就是媒體的容器
下面是幾種常見的封裝格式:
1)AVI 格式(後綴為 .avi)
2)DV-AVI 格式(後綴為 .avi)
3)QuickTime File Format 格式(後綴為 .mov)
4)MPEG 格式(文件後綴可以是 .mpg .mpeg .mpe .dat .vob .asf .3gp .mp4等)
5)WMV 格式(後綴為.wmv .asf)
6)Real Video 格式(後綴為 .rm .rmvb)
7)Flash Video 格式(後綴為 .flv)
8)Matroska 格式(後綴為 .mkv)
9)MPEG2-TS 格式 (後綴為 .ts)
目前,我們在流媒體傳輸,尤其是直播中主要采用的就是 FLV 和 MPEG2-TS 格式,分別用於 RTMP/HTTP-FLV 和 HLS 協議。
四、推流到服務器
五、服務器流分發
六、解協議
七、解封裝
含義:將輸入的封裝格式的數據,分離成為音頻流壓縮編碼數據和視頻流壓縮編碼數據
封裝格式種類很多,例如MP4,MKV,RMVB,TS,FLV,AVI。例如,FLV格式的數據,經過解封裝操作後,輸出H.264編碼的視頻碼流和AAC編碼的音頻碼流。
八、解碼視音頻
含義:就是將視頻/音頻壓縮編碼數據,解碼成為非壓縮的視頻/音頻原始數據
視頻的原始數據是YUV420或者是RGB,音頻的原始數據是PCM
九、視音頻同步
同步解碼出來的視頻和音頻數據,並將視頻音頻數據送至系統的顯卡和聲卡播放出來。
視頻采集以及播放的流程