首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

VLC 播放本地 RTMP 流卡頓:接收緩衝區窗口過小導致窗口滿阻塞

     編輯:程式設計綜合問答

現象

FFmpeg 推流到本地 Nginx-RTMP,FFplay 播放流暢,VLC 播放前期頻繁卡頓 10 秒,後期緩解。抓包顯示 VLC 接收窗口 window size = 256,頻繁出現 Window Full;FFplay 窗口 > 60000 正常。

原因分析

VLC 對 RTMP 協議的 TCP 接收緩衝區默認值極小,且不動態擴大,導致高碼率流數據堆積,觸發流控阻塞,表現為卡頓。後期緩存積累後緩解。

解決方案

  1. 更換播放器:PotPlayer、MPV、KMPlayer 對 RTMP 緩衝策略更激進,無卡頓。
  2. 調大 VLC 緩衝:工具 → 偏好設定 → 所有 → 輸入/編解碼器 → 緩衝值 (ms) 調大(如 2000-5000),網絡緩衝同步調大。
  3. 使用 HTTP-FLV / HLS:Nginx 配置 flv 或 hls 模塊,VLC 播放 HTTP 流穩定性遠超 RTMP。

最佳回答

vlc處理rtmp流時候,不是立即處理,導致數據包堆積,使用potPlayer播放器就沒有這種現象了

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved