實時推送/拉取音視頻數據服務器
視頻直播的流程能夠分爲以下幾步:框架
(1)採集ide
(2)處理ui
(3)編碼和封裝編碼
(4)推流到服務器orm
(5)服務器流分發cdn
(6)播放器流播放視頻
一、採集對象
視頻的採集涉及兩方面數據的採集:音頻採集和圖像採集,它們分別對應兩種徹底不一樣的輸入源和數據格式。blog
(1)兩個傳感器:
CCD:圖像傳感器,用於圖像採集和處理,把圖像轉換爲電信號
拾音器:聲音傳感器,用於聲音採集和處理,把聲音轉換爲電信號
(2)格式:
視頻採樣數據 : 通常都是 YUV 或 RGB 格式
音頻採樣數據 :通常都是PCM格式
因爲所採集的內容很是大,因此須要進行壓縮。常見的音頻壓縮格式有:MP3,AAC,HE-AAC,Opus,FLAC,Vorbis (Ogg),Speex 和 AMR等。視頻編碼壓縮成 H.264 等格式的數據分發出去。常見的視頻封裝格式有:MP四、3GP、AVI、MKV、WMV、MPG、VOB、FLV、SWF、MOV、RMVB 和 WebM 等。
二、處理
視頻或者音頻完成採集以後獲得原始數據,爲了加強一些現場效果或者加上一些額外的效果,咱們通常會在將其編碼壓縮前進行處理,例如:美顏及水印。各類美顏和視頻添加特效的App都是基於GPUImage框架實現。
三、編碼和封裝
視頻編碼的意義:原始視頻數據存儲空間大。核心思想就是去除冗餘信息。
常見的視頻編碼器:
(1)H.264/AVC
(2)HEVC/H.265
(3)VP8
(4)VP9
(5)FFmpeg :是一個跨平臺的開源視頻框架,能實現如視頻編碼,解碼,轉碼,串流,播放等豐富的功能。其支持的視頻格式以及播放協議很是豐富,幾乎包含了全部音視頻編解碼、封裝格式以及播放協議。
封裝:是把編碼器生成的多媒體內容(視頻,音頻,字幕,章節信息等)混合封裝在一塊兒的標準。
常見的封裝格式:
(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)
四、推流
傳輸協議:
RTMP :實時消息傳輸協議,Adobe Systems公司爲Flash播放器和服務器之間音頻、視頻和數據傳輸開發的開放協議,由於是開放協議因此均可以使用了。 RTMP協議用於對象、視頻、音頻的傳輸。
HLS(HTTP Live Streaming):是蘋果公司(Apple Inc.)實現的基於HTTP的流媒體傳輸協議
RTSP(Real Time Streaming Protocol):實時流傳送協議,是用來控制聲音或影像的多媒體串流協議, 由Real Networks和Netscape共同提出的
實現流程視頻;Android音視頻開發;一個半小時實現鬥魚直播