Web直播系列4——ffmpeg實時推流+nginx負載均衡降低直播延時_1
前提:
電腦的系統為64位Ubuntu16.04TLS及系列文章2中所實現的簡易直播平臺https://blog.csdn.net/zzhang_12/article/details/79789482
目的:
在網路頻寬一定的情況下,從nginx,ffmpeg兩方面嘗試降低延時
Ubuntu下的實現方法:
注意:在不從提高網路頻寬和改善硬體效能等方面著手,而是從修改nginx,ffmpegr引數等方面著手,可能會在降低延時的同時,也降低效能。
1)從ffmpeg推流方面來降低延時(ffmpeg會有40~50幀左右延時)
- 關閉sync-lookahead
- 降低rc-lookahead
- 降低threads
- 禁用rc-lookahead
- 禁用b-frames
- 縮小GOP
- 開啟x264的 -preset fast/faster/verfast/superfast/ultrafast引數
- 使用-tune zerolatency
注意:使用方法8可以使延時降低只0-1幀之間,但畫面質量損失也最嚴重。個人使用過3,7,8有效。
2)從nginx伺服器方面來降低延時(本文遇到的情況是同時推多個視訊流)
- 本文采用nginx+tomcat實現負載均衡來降低推流延時
- 區域網內有3臺Ip分別為10.0.0.118,10.0.0.119,10.0.0.120的伺服器。
- 在三臺伺服器上部署好同樣的推流專案,並在其中一臺伺服器上部署資料庫,其他兩臺伺服器遠端訪問。
- 在前文中已搭好nginx伺服器上(10.0.0.118)進行nginx配置檔案修改。
-
http { #include /nginx/conf/naxsi_core.rules; include mime.types; default_type application/octet-stream; #Nginx是如何實現負載均衡的,Nginx的upstream目前支援以下幾種方式的分配 #1、輪詢(預設) #每個請求按時間順序逐一分配到不同的後端伺服器,如果後端伺服器down掉,能自動剔除。 #2、weight #指定輪詢機率,weight和訪問比率成正比,用於後端伺服器效能不均的情況。 #2、ip_hash #每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個後端伺服器,可以解決session的問題。 #3、fair(第三方) #按後端伺服器的響應時間來分配請求,響應時間短的優先分配。 #4、url_hash(第三方) #按訪問url的hash結果來分配請求,使每個url定向到同一個後端伺服器,後端伺服器為快取時比較有效。 upstream 10.0.0.118{ server 10.0.0.118:8080 weight=2; server 10.0.0.119:8080 weight=1; server 10.0.0.120:8080 weight=1; } sendfile off; #tcp_nopush on; server_names_hash_bucket_size 128; client_body_timeout 10; client_header_timeout 10; keepalive_timeout 30; send_timeout 10; keepalive_requests 10; #gzip on; server { listen 80; server_name 10.0.0.118; location / { root html; index index.html index.htm; proxy_pass http://10.0.0.118; } } }
- 使用nginx -t檢查nginx.conf檔案是否有錯,並重啟nginx伺服器。
注意:遠端訪問資料庫時如出現1130-host...is not allowed to connect to this Mysql server的問題時。
- 檢視是否MySQL Server繫結了本地地址
gedit /etc/mysql/mysql.conf.d/mysqld.cnf
- 修改bind-address = 127.0.0.1為bind-address = 0.0.0.0
- 授權
mysql -uroot -proot(密碼) GRANT ALL PRIVILEGES ON *.* TO 'root'@'10.0.0.118' IDENTIFIED BY 'root' WITH GRANT OPTION;
- FLUSH PRIVILEGES重新整理該表。
參考:
https://blog.csdn.net/fireroll/article/details/51902018
相關文章
- 直播教學系統原始碼搭建定製影片直播功能完善低延時負載強原始碼負載
- Nginx服務系列——負載均衡Nginx負載
- nginx+ffmpeg搭建流媒體伺服器(直播流)Nginx伺服器
- ffmpeg+nginx+rtmp+web實現視訊直播網站NginxWeb網站
- python利用ffmpeg進行rtmp推流直播Python
- 一臺伺服器實現nginx代理負載均衡同時使用web服務伺服器Nginx負載Web
- nginx實現負載均衡Nginx負載
- Nginx 學習系列(二) ------------- 負載均衡Nginx負載
- Nginx 學習系列(二) ————- 負載均衡Nginx負載
- 直播原始碼解決同時線上高併發的方案之負載均衡原始碼負載
- FFmpeg總結(十三)用ffmpeg基於nginx實現直播功能,不用第三方SDK,自研推流拉流Nginx
- NGINX 負載均衡Nginx負載
- 【Nginx】負載均衡Nginx負載
- nginx負載均衡Nginx負載
- Nginx + IIS 實現負載均衡Nginx負載
- Linux下玩轉nginx系列(五)---nginx實現負載均衡LinuxNginx負載
- 使用linux的ffmpeg進行B站直播推流Linux
- 1小時學會:最簡單的iOS直播推流(一)介紹iOS
- nginx+tomcat負載均衡配置 火推NginxTomcat負載
- nginx配置web服務|反向代理|負載均衡NginxWeb負載
- Nginx負載均衡模式Nginx負載模式
- Nginx--負載均衡Nginx負載
- nginx 負載均衡搭建Nginx負載
- Nginx負載均衡策略Nginx負載
- 解析 Nginx 負載均衡Nginx負載
- 帶貨直播系統,透過ffmpeg推流實現首屏秒開
- 一對一直播開發時常用的推流器,一對一直播開發需要推流器嗎?
- RTMP推流平臺/視訊直播點播分析平臺/人臉識別系統EasyDSS如何實現RTMP負載均衡?負載
- APACHE做負載均衡時出錯Apache負載
- 簡單實踐搭建 nginx 負載均衡Nginx負載
- Nginx如何實現四層負載均衡?Nginx負載
- nginx+tomcat實現負載均衡NginxTomcat負載
- Nginx實現簡單的負載均衡Nginx負載
- Nginx負載均衡詳解Nginx負載
- Nginx負載均衡高可用Nginx負載
- nginx 轉發 rtmp 直播流Nginx
- nginx Win下實現簡單的負載均衡(1)nginx搭建部署Nginx負載
- nginx+php 實現代理與負載均衡 (1臺nginx,2臺php)NginxPHP負載