推流端:主播使用的終端
- 通過(guò)攝像頭進(jìn)行視頻采集,通常為YUV編碼格式
- 通過(guò)話筒進(jìn)行音頻采集,通常為PCM編碼格式
- 將視頻數(shù)據(jù)從YUV編碼為H264或H265
- 將音頻數(shù)據(jù)從PCM編碼為AAC
- 將視頻與音頻數(shù)據(jù)一起編碼為多媒體容器格式,如H264與AAC組合編碼為FLV或TS或RTMP Packet,根據(jù)傳輸協(xié)議來(lái)定
- 通過(guò)某種協(xié)議將數(shù)據(jù)推送到目標(biāo)地址:
- 應(yīng)用層協(xié)議:HLS、RTSP、RTMP
- 傳輸層協(xié)議:RTCP、RTP
- 網(wǎng)絡(luò)層協(xié)議:RSVP
服務(wù)端
待學(xué)習(xí)
拉流端:用戶終端
- 通過(guò)某種協(xié)議從目標(biāo)地址拉取數(shù)據(jù),同上
- 將多媒體容器格式的數(shù)據(jù)解復(fù)用為視頻編碼格式的視頻數(shù)據(jù)如H264和音頻編碼格式的音頻數(shù)據(jù)如AAC
- 使用硬解碼(GPU解碼+CPU輔助)或軟解碼(CPU解碼)將H264視頻數(shù)據(jù)和AAC音頻數(shù)據(jù)解碼為YUV和PCM數(shù)據(jù)
- 執(zhí)行音話同步操作
- 將同步后的YUV數(shù)據(jù)傳輸給視頻播放設(shè)備;將同步后的AAC音頻數(shù)據(jù)傳輸給音頻播放設(shè)備
相關(guān)協(xié)議
- HLS
蘋(píng)果提出的基于HTTP的流媒體網(wǎng)絡(luò)傳輸協(xié)議 - RTSP
流媒體協(xié)議;一般是ts或mp4格式,一般在2-3個(gè)通道上傳輸命令和數(shù)據(jù) - RTMP
流媒體協(xié)議;一般是flv或f4v格式,一般在一個(gè)通道上傳輸命令和數(shù)據(jù) - RTP
RTP標(biāo)準(zhǔn)定義了兩個(gè)協(xié)議:RTP(數(shù)據(jù)傳輸協(xié)議)和RTCP(控制協(xié)議)
多媒體容器格式
一般情況下,用戶不會(huì)直接擁有單獨(dú)的視頻和音頻文件,而是同時(shí)包含兩種數(shù)據(jù)的多媒體容器格式的文件,通過(guò)解復(fù)用剝離出視頻和音頻數(shù)據(jù),傳輸給對(duì)應(yīng)的硬件
- 多媒體容器格式:MPEG-4、AVI、FLV、TS、MKV、RMVB
- 解復(fù)用后的視頻編碼格式:H264(國(guó)際電聯(lián)的命名)/AVC(ISO的命名)(這倆機(jī)構(gòu)聯(lián)合開(kāi)發(fā)的,但是各自命了名,蛋疼)、MPEG2 Part2、MPEG2 Part4
- 解復(fù)用后的音頻編碼格式:AAC、MP3、FLAC、APE、WAVEPACK
- YUV:視頻采集芯片直接輸出的視頻編碼格式
- PCM:音頻采集芯片直接輸出的音頻編碼格式
編碼格式
編碼格式本身是一種壓縮標(biāo)準(zhǔn),而制作這個(gè)標(biāo)準(zhǔn)的機(jī)構(gòu)主要有兩個(gè)
- ITU-T:主要制定了H.261/H263/H263+/H263++等標(biāo)準(zhǔn)
- ISO:主要制定了MPEG-1/MPEG-4等
為了統(tǒng)一,目前比較通用的是雙方共同制作的MPEG-2、H.264/AVC和H.265/HEVC等協(xié)議(各自命了名,但其實(shí)是同一個(gè)協(xié)議) - MPEG-1:最早的音視頻壓縮標(biāo)準(zhǔn),被VCD標(biāo)準(zhǔn)采用,其中的Part3(Audio)中的Layer3,就是我們平常說(shuō)的mp3,但有時(shí)候也可能是MPEG-2 Audio Layer Ⅲ
- MPEG-2:Part2被DVD標(biāo)注采用
- MPEG-4:Part4就是常說(shuō)的mp4,其中的Part10就是由ITU-T和ISO共同制定的H264/AVC編碼格式