關於直播類app中的推流、拉流技術(轉載)

關於直播類app中的推流、拉流技術
from:https://blog.csdn.net/lzllzllhl/article/details/80249069

圖像處理:iOS端一般會用到GPUImage處理圖像,安卓端一般使用Google的grafika(圖形處理庫)

推拉流:EasyDarwin

推流(錄製視頻):【iOS和Android】ijkPlayer 開源框架(bilibili的)(集成FFmpeg,iOS的播放器也基於此) 鬥魚直播也基於此實現
編碼標準:H.265 H.264 VP8 VP9 音頻:AAC Opus、
傳輸協議:RTMP RTSP HLS
拉流(播放視頻):LFLiveKit 支持H264和AAC編碼,支持美顏和水印效果,傳輸協議是RTMP,支持弱網丟幀,記載網絡環境差的情況下,爲了保證視頻的通常,會自動丟棄個別幀。

注意:RTMP協議中,視頻必須是H264編碼,音頻必須是AAC或MP3編碼,且多以flv格式封包。

缺點:RTMP有着一個最大的不足——不支持瀏覽器【2017年的信息,當下並未友好支持 需要費一番功夫】

瀏覽器:可考慮 WebRTC 協議

安卓端:使用javacv來實現,最終也是用過ffmpeg來進行編碼和推流,javacv實現到可以直接接收攝像頭的幀數據

需要自己實現的代碼只是打開攝像頭,寫一個SurfaceView進行預覽,然後實現PreviewCallback將攝像頭每一幀的數據交給javacv即可

使用Android自帶的編碼工具,可實現硬編碼,這裏有一個國內大神開源的封裝很完善的的庫yasea,第一種方法需要實現的Camera採集部分也一起封裝好了,進行一些簡單配置就可以實現編碼推流,並且yasea目前已經直接支持攝像頭的熱切換,和各種濾鏡效果

安卓端播放器:vitamio、支持幾乎所有常見的的視頻格式和流媒體協議

安卓端流程

一:使用yaesa進行攝像頭採集、編碼然後向srs服務器rtmp推流
二:部署srs流媒體服務器
三:使用vitamio取流播放

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章