一、直播的本質
實時推送/拉取音視頻數據
二、視頻直播流程
安卓版視頻直播軟件的視頻直播的流程可以分為如下幾步:
- 采集
- 處理
- 編碼和封裝
- 推流
- 服務器分發
- 播放器流播放
1、采集
視頻的采集涉及兩方面數據的采集:音頻采集和圖像采集,它們分別對應兩種完全不同的輸入源和數據格式。
兩個傳感器:
- CCD:圖像傳感器,用于圖像采集和處理,把圖像轉換為電信號
- 拾音器:聲音傳感器,用于聲音采集和處理,把聲音轉換為電信號
格式:
- 視頻采樣數據 : 一般都是 YUV 或 RGB 格式
- 音頻采樣數據 :一般都是PCM格式
由于所采集的內容非常大,所以需要進行壓縮。常見的音頻壓縮格式有:MP3,AAC,HE-AAC,Opus,FLAC,Vorbis (Ogg),Speex 和 AMR等。視頻編碼壓縮成 H.264 等格式的數據分發出去。常見的視頻封裝格式有:mp4、3GP、AVI、mkv、wmv、mpg、VOB、flv、SWF、MOV、rmVB 和 WebM 等。
2、處理
視頻或者音頻完成采集之后得到原始數據,為了增強一些現場效果或者加上一些額外的效果,我們一般會在將其編碼壓縮前進行處理,例如:美顏及水印。各種美顏和視頻添加特效的App都是基于GPUImage框架實現。
3、編碼和封裝
視頻編碼的意義:原始視頻數據存儲空間大。核心思想就是去除冗余信息。
常見的視頻編碼器:
- H.264/AVC
- HEVC/H.265
- VP8
- VP9
- FFmpeg :是一個跨平臺的開源視頻框架,能實現如視頻編碼,解碼,轉碼,串流,播放等豐富的功能。其支持的視頻格式以及播放協議非常豐富,幾乎包含了所有音視頻編解碼、封裝格式以及播放協議。
封裝:是把編碼器生成的多媒體內容(視頻,音頻,字幕,章節信息等)混合封裝在一起的標準。
常見的封裝格式:
- AVI 格式(后綴為 .avi)
- DV-AVI 格式(后綴為 .avi)
- QuickTime File Format 格式(后綴為 .mov)
- MPEG 格式(文件后綴可以是 .mpg .mpeg .mpe .dat .vob .asf .3gp .mp4等)
- WMV 格式(后綴為.wmv .asf)
- Real Video 格式(后綴為 .rm .rmvb)
- Flash Video 格式(后綴為 .flv)
- Matroska 格式(后綴為 .mkv)
- MPEG2-TS 格式 (后綴為 .ts)
4、推流
傳輸協議:
- RTMP:實時消息傳輸協議,Adobe Systems公司為Flash播放器和服務器之間音頻、視頻和數據傳輸開發的開放協議,因為是開放協議所以都可以使用了。 RTMP協議用于對象、視頻、音頻的傳輸。
- HLS(HTTP Live Streaming):是蘋果公司(Apple Inc.)實現的基于HTTP的流媒體傳輸協議
- RTSP(Real Time Streaming Protocol):實時流傳送協議,是用來控制聲音或影像的多媒體串流協議,由Real Networks和Netscape共同提出的
版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 舉報,一經查實,本站將立刻刪除。