本章是流媒體直播實時視頻延遲時間排查和剖析
javaCV系列文章:
javaCV開發詳解之2:推流器實現,推本地攝像頭視頻到流媒體服務器以及攝像頭錄制視頻功能實現(基於javaCV-FFMPEG、javaCV-openCV)
javaCV開發詳解之3:收流器實現,錄制流媒體服務器的rtsp/rtmp視頻文件(基於javaCV-FFMPEG)
javaCV開發詳解之4:轉流器實現(也可作為本地收流器、推流器,新增添加圖片及文字水印,視頻圖像幀保存),實現rtsp/rtmp/本地文件轉發到rtmp流媒體服務器(基於javaCV-FFMPEG)
javaCV開發詳解之5:錄制音頻(錄制麥克風)到本地文件/流媒體服務器(基於javax.sound、javaCV-FFMPEG)
javaCV開發詳解之6:本地音頻(話筒設備)和視頻(攝像頭)抓取、混合並推送(錄制)到服務器(本地)
javaCV開發詳解之7:讓音頻轉換更加簡單,實現通用音頻編碼格式轉換、重采樣等音頻參數的轉換功能(以pcm16le編碼的wav轉mp3為例)
javaCV開發詳解之8:轉封裝在rtsp轉rtmp流中的應用(無須轉碼,更低的資源消耗,更好的性能,更低延遲)
補充篇:
javaCV開發詳解補充篇:基於avfoundation的蘋果Mac和ios獲取屏幕畫面及錄屏/截屏以及攝像頭畫面和音頻采樣獲取實現
音視頻編解碼問題:javaCV如何快速進行音頻預處理和解復用編解碼(基於javaCV-FFMPEG)
音視頻編解碼問題:16/24/32位位音頻byte[]轉換為小端序short[],int[],以byte[]轉short[]為例
javacpp-ffmpeg系列:
javacpp-FFmpeg系列之1:視頻拉流解碼成YUVJ420P,並保存為jpg圖片
javacpp-FFmpeg系列之2:通用拉流解碼器,支持視頻拉流解碼並轉換為YUV、BGR24或RGB24等圖像像素數據
javacpp-FFmpeg系列之3: 圖像數據轉換(BGR與BufferdImage互轉,RGB與BufferdImage互轉)
javacpp-FFmpeg系列補充:FFmpeg解決avformat_find_stream_info檢索時間過長問題
javacpp-opencv系列:
一、javaCV圖像處理之1:實時視頻添加文字水印並截取視頻圖像保存成圖片,實現文字水印的字體、位置、大小、粗度、翻轉、平滑等操作
二、javaCV圖像處理之2:實時視頻添加圖片水印,實現不同大小圖片疊加,圖像透明度控制
三、javacv圖像處理3:使用opencv原生方法遍歷攝像頭設備及調用(方便多攝像頭遍歷及調用,相比javacv更快的攝像頭讀取速度和效率,方便讀取后的圖像處理)
歡迎大家積極開心的加入討論群,群號:371249677 (點擊這里進群)
前言
本章作為延遲補充篇,我們在搭建直播平台等流媒體服務平台的時候總會遇到延遲的問題,很多人表示束手無策,不知從何下手去優化延遲。本章就從流媒體平台整體到協議細節來剖析和解決直播實時視頻的延遲問題。
1、播放器延遲
(1)默認緩存延遲
目前已知VLC、videojs等播放器包含不定的緩存
解決辦法:
(1)VLC可以在配置中設置低延遲
(2)videojs暫時無法自定義設置緩存大小和時間
(2)播放器查找音頻導致延遲
目前已知VLC或者ffplay等播放器在播放rtmp或者flv的視頻時,默認行為是分析5秒(rtmp)到90秒(以.flv做為后綴的url)數據查找媒體中是否包含音頻。
在無音頻的流中,這一播放器行為會造成起播和播放的視頻時間延遲。
解決辦法:
(1)ffplay可以加入參數”-analyzeduration 1”來實現秒開。
(2)vlc在配置中設置低延遲
完整閱讀本章:https://blog.csdn.net/eguid_1/article/details/105966743