直播基本流程
直播基本流程
這里不涉及到業務相關 , 這里簡要說明直播流程
推流端: 負責將本地的音視頻數據推送至流媒體服務器
流程:音視頻數據采集->編碼->封裝->協議封包
功能:美顏濾鏡、音效處理、回音消除
播流端:負責拉取流媒體服務器的音視頻數據到本地解碼播放
流程:網絡流數據->解協議->解封裝->解碼->音視頻同步
功能:動態追幀、硬件加速、首屏秒開、高效解碼
流媒體服務器:負責直播流的創建,分發到各個cdn節點,加快流的解析,以及各種流的管理統計等等
功能: CDN分發、實時轉碼、視頻錄制、Qos、自動鑒黃
一、推流端
音視頻采集
通過攝像頭和麥克風獲得實時的音頻原數據,例如PCM數據。視頻原數據,例如yuv420p,rgb數據。
注意:有關音頻特效(變聲)和視頻特效(大眼瘦臉)就是對音視頻原數據的處理
編碼
音頻編碼:將音頻采樣數據(PCM等)壓縮成音頻碼流,從而降低音頻的數據量
視頻編碼:視頻編碼的主要作用是將視頻像素數據(RGB,YUV等)壓縮成視頻碼流,從而降低視頻的數據量
封裝
封裝格式的主要作用是把視頻碼流(H264數據)和音頻碼流(AAC數據)按照一定的格式存儲在一個文件中(FLV文件)
協議封裝
對封裝格式的文件(flv、mp4等)進行rtmp、http、hls等協議的封包過程
二、播流端
播流需要經過以下幾個步驟:解協議、解封裝、解碼視音頻、視音頻同步。如果播放本地文件則不需要解協議。
解協議
就是將流媒體協議的數據,解析為標準的相應的封裝格式數據。視音頻在網絡上傳播的時候,常常采用各種流媒體協議,例如HTTP,RTMP,或是MMS等等。這些協議在傳輸視音頻數據的同時,也會傳輸一些信令數據。這些信令數據包括對播放的控制(播放,暫停,停止),或者對網絡狀態的描述等。解協議的過程中會去除掉信令數據而只保留視音頻數據。例如,采用RTMP協議傳輸的數據,經過解協議操作后,輸出FLV格式的數據。
解封裝
就是將輸入的封裝格式的數據,分離成為音頻流壓縮編碼數據和視頻流壓縮編碼數據。封裝格式種類很多,例如MP4,MKV,RMVB,TS,FLV,AVI等等,它的作用就是將已經壓縮編碼的視頻數據和音頻數據按照一定的格式放到一起。例如,FLV格式的數據,經過解封裝操作后,輸出H.264編碼的視頻碼流和AAC編碼的音頻碼流。
解碼
就是將視頻/音頻壓縮編碼數據,解碼成為非壓縮的視頻/音頻原始數據。音頻的壓縮編碼標準包含AAC,MP3,AC-3等等,視頻的壓縮編碼標準則包含H.264,MPEG2,VC-1等等。解碼是整個系統中最重要也是最復雜的一個環節。通過解碼,壓縮編碼的視頻數據輸出成為非壓縮的顏色數據,例如YUV420P,RGB等等;壓縮編碼的音頻數據輸出成為非壓縮的音頻抽樣數據,例如PCM數據。
視音頻同步
就是根據解封裝模塊處理過程中獲取到的參數信息,同步解碼出來的視頻和音頻數據,并將視頻音頻數據送至系統的顯卡和聲卡播放出來。
三、流媒體服務器
下圖是參加了業務相關
想從代碼層了解推拉流以及播放過程,雷神博客 https://blog.csdn.net/leixiaohua1020
總結
- 上一篇: wifi 联想小新_WiFi 6网卡?官
- 下一篇: [华为]华为无线控制器AC6508简单配