Nginx +Nginx-http-flv-module 推流拉流

這兩天為了利用云服務器實現 Nginx 進行OBS Rtmp推流,Flv拉流時發生了諸多情況,記錄實現過程。

環境

  • OS:阿里云CentOS 7.9 64位
  • Nginx:nginx-1.28.0
  • Nginx-http-flv-module:nginx-http-flv-module-1.2.12

安裝Nginx編譯的依賴包:

yum install -y gcc gcc-c++ autoconf automake make
yum install zlib zlib-devel openssl openssl-devel pcre pcre-devel wget httpd-tools vim -y

Nginx配置

2.1 獲取nginx源碼

 wget http://nginx.org/download/nginx-1.28.0.tar.gz

2.2 解壓

tar -xzvf nginx-1.28.0.tar.gz

2.3 重命名

mv nginx-1.28.0 nginx

2.4 移動到/usr/local/

mv nginx/ usr/local/

Nginx-http-flv-module配置

3.1 在/usr/local/nginx中下載

wget https://github.com/winshining/nginx-http-flv-module/archive/refs/tags/v1.2.12.tar.gz

3.2 解壓

tar -xzvf v1.2.12.tar.gz

3.3 關閉防火墻

systemctl disable --now firewalld
setenforce 0
getenforce

3.4 配置nginx編譯環境

./configure --prefix=/usr/local/nginx --add-module=/usr/local/nginx/nginx-http-flv-module-1.2.12

3.5編譯&安裝

make
make install

3.6設置Nginx環境變量

vi /etc/profile # vi 打開環境變量文件
export PATH=$PATH:/usr/local/nginx/sbin # 添加到文件最后一行
source /etc/profile # 立即生效

修改Nginx配置文件

4.1 將下方文本替換/usr/local/nginx/conf/nginx.conf的內容:


#user  nobody;
worker_processes  1;#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;#pid        logs/nginx.pid;events {worker_connections  1024;
}rtmp_auto_push on;
rtmp_auto_push_reconnect 1s;
rtmp_socket_dir /tmp;rtmp {out_queue           4096;out_cork            8;max_streams         128;timeout             15s;drop_idle_publisher 15s;log_interval 5s; #log模塊在access.log中記錄日志的間隔時間,對調試非常有用log_size     1m; #log模塊用來記錄日志的緩沖區大小server {listen 1935;#ffmpeg推流的application application app {live on;allow publish all;allow play all;record off;meta copy;gop_cache on; #打開GOP緩存,減少首屏等待時間}}
}http {include       mime.types;default_type  application/octet-stream;#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '#                  '$status $body_bytes_sent "$http_referer" '#                  '"$http_user_agent" "$http_x_forwarded_for"';#access_log  logs/access.log  main;sendfile        on;#tcp_nopush     on;#keepalive_timeout  0;keepalive_timeout  65;#gzip  on;server {listen       80; # http-flv 拉流端口#server_name  localhost;location /live {flv_live on; #打開HTTP播放FLV直播流功能chunked_transfer_encoding on; #支持'Transfer-Encoding: chunked'方式回復add_header 'Access-Control-Allow-Origin' '*'; #添加額外的HTTP頭add_header 'Access-Control-Allow-Credentials' 'true'; #添加額外的HTTP頭}#charset koi8-r;#access_log  logs/host.access.log  main;location / {root   html;index  index.html index.htm;}#error_page  404              /404.html;# redirect server error pages to the static page /50x.html#error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}# proxy the PHP scripts to Apache listening on 127.0.0.1:80##location ~ \.php$ {#    proxy_pass   http://127.0.0.1;#}# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000##location ~ \.php$ {#    root           html;#    fastcgi_pass   127.0.0.1:9000;#    fastcgi_index  index.php;#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;#    include        fastcgi_params;#}# deny access to .htaccess files, if Apache's document root# concurs with nginx's one##location ~ /\.ht {#    deny  all;#}}# another virtual host using mix of IP-, name-, and port-based configuration##server {#    listen       8000;#    listen       somename:8080;#    server_name  somename  alias  another.alias;#    location / {#        root   html;#        index  index.html index.htm;#    }#}# HTTPS server##server {#    listen       443 ssl;#    server_name  localhost;#    ssl_certificate      cert.pem;#    ssl_certificate_key  cert.key;#    ssl_session_cache    shared:SSL:1m;#    ssl_session_timeout  5m;#    ssl_ciphers  HIGH:!aNULL:!MD5;#    ssl_prefer_server_ciphers  on;#    location / {#        root   html;#        index  index.html index.htm;#    }#}}

4.2 新建/usr/local/nginx/logs文件夾存放日志

sudo mkdir -p /usr/local/nginx/logs # sudo 是使用root權限創建

4.3 測試配置文件是否問題

/usr/local/nginx/sbin/nginx -t

4.4 運行Nginx

nginx

4.5 查看端口,如果1935 & 80端口正在監聽就表明完成了

netstat -tulnp # 查看所有端口 加上 | grep x 可以過濾出端口x的情況

5.OBS推流

rtmp://${服務器公網地址}:1935/app/room-1
使用obs進行推流,其中推流地址和推流碼為:

在這里插入圖片描述

6.使用VLC進行拉流

6.1 rtmp拉流地址為:rtmp://${服務器公網地址}:80/app/room-1

6.2 flv 拉流地址為:http://${服務器公網地址}:80/live?port=1935&app=app&stream=room-1

flv拉流地址,其中live的是配置文件中的http模塊設置的、port的值應該是推流端口、app的值是配置文件中rtmp模塊自定義的名稱、stream的值是OBS推流自定義的推流碼。

效果:

在這里插入圖片描述
( 延遲大概15s )

7. 參考

  • 使用Nginx搭建流媒體服務器
  • nginx+ffmpeg推流環境搭建
  • CentOS7安裝 FFmpeg

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/80487.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/80487.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/80487.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

射頻ADRV9026驅動

參考: ADRV9026 & ADRV9029 Prototyping Platform User Guide [Analog Devices Wiki] 基于ADRV9026的四通道射頻收發FMC子卡-CSDN博客 adrv9026 spi 接口驗證代碼-CSDN博客

使用本地部署的 LLaMA 3 模型進行中文對話生成

以下程序調用本地部署的 LLaMA3 模型進行多輪對話生成,通過 Hugging Face Transformers API 加載、預處理、生成并輸出最終回答。 程序用的是 Chat 模型格式(如 LLaMA3 Instruct 模型),遵循 ChatML 模板,并使用 apply…

Oracle19c中的全局臨時表

應用程序通常使用某種形式的臨時數據存儲來處理過于復雜而無法一次性完成的流程。通常,這些臨時存儲被定義為數據庫表或 PL/SQL 表。從 Oracle 8i 開始,可以使用全局臨時表將臨時表的維護和管理委托給服務器。 一、臨時表分類 Oracle 支持兩種類型的臨…

Windows 安裝 Milvus

說明 操作系統:Window 中間件:docker desktop Milvus:Milvus Standalone(單機版) 安裝 docker desktop 參考:Window、CentOs、Ubuntu 安裝 docker-CSDN博客 安裝 Milvus 參考鏈接:Run Mil…

24、DeepSeek-V3論文筆記

DeepSeek-V3論文筆記 **一、概述****二、核心架構與創新技術**0.匯總:1. **基礎架構**2. **創新策略** 1.DeepSeekMoE無輔助損失負載均衡DeepSeekMoE基礎架構無輔助損失負載均衡互補序列級輔助損失 2.多令牌預測(MTP)1.概念2、原理2.1BPD2.2M…

1.8 梯度

(知識體系演進邏輯樹) 一元導數(1.5) │ ├─→ 多元偏導數(1.6核心突破) │ │ │ └─解決:多變量耦合時的單變量影響分析 │ │ │ ├─幾何:坐標軸切片切線斜率…

274、H指數

題目 給你一個整數數組 citations ,其中 citations[i] 表示研究者的第 i 篇論文被引用的次數。計算并返回該研究者的 h 指數。 根據維基百科上 h 指數的定義:h 代表“高引用次數” ,一名科研人員的 h 指數 是指他(她&#xff09…

【C++11】異常

前言 上文我們學習到了C11中類的新功能【C11】類的新功能-CSDN博客 本文我們來學習C下一個新語法:異常 1.異常的概念 異常的處理機制允許程序在運行時就出現的問題進行相應的處理。異常可以使得我們將問題的發現和問題的解決分開,程序的一部分負…

Linux基礎命令之目錄管理——了解各種操作文件目錄的命令,萬字教學,超詳細!!!(1)

文章目錄 前言1、Linux文件系統1.1 核心特點1.2 重要目錄結構1.3 文件類型1.4 文件和目錄的命名規則1.5 文件與目錄的定位方式 2、查看目錄或文件的詳細信息(ls)2.1 基本語法2.2 常用操作2.3 高級用法 3、切換目錄(cd)3.1 常用操作…

在線caj轉換word

CAJ格式是中國知網特有的一種文獻格式,在學術研究等領域廣泛使用,但有時我們需要將其轉換為Word格式,方便編輯、引用文獻。本文分享如何輕松將CAJ轉換為word的轉換工具,提高閱讀和辦公效率。 如何將CAJ轉換WORD? 1、使用CAJ轉換…

【現代深度學習技術】注意力機制05:多頭注意力

【作者主頁】Francek Chen 【專欄介紹】 ? ? ?PyTorch深度學習 ? ? ? 深度學習 (DL, Deep Learning) 特指基于深層神經網絡模型和方法的機器學習。它是在統計機器學習、人工神經網絡等算法模型基礎上,結合當代大數據和大算力的發展而發展出來的。深度學習最重…

SpringBoot 集成滑塊驗證碼AJ-Captcha行為驗證碼 Redis分布式 接口限流 防爬蟲

介紹 滑塊驗證碼比傳統的字符驗證碼更加直觀和用戶友好,能夠很好防止爬蟲獲取數據。 AJ-Captcha行為驗證碼,包含滑動拼圖、文字點選兩種方式,UI支持彈出和嵌入兩種方式。后端提供Java實現,前端提供了php、angular、html、vue、u…

邊緣網關(邊緣計算)

邊緣網關是邊緣計算架構中的關鍵組件,充當連接終端設備(如傳感器、IoT設備)與云端或核心網絡的橋梁。它在數據源頭附近進行實時處理、分析和過濾,顯著提升效率并降低延遲。 核心功能 協議轉換 ○ 支持多種通信協議(如…

OpenCV定位地板上的書

任務目標是將下面的圖片中的書本找出來: 使用到的技術包括:轉灰度圖、提取顏色分量、二值化、形態學、輪廓提取等。 我們嘗試先把圖片轉為灰度圖,然后二值化,看看效果: 可以看到,二值化后,書的…

機器學習第一講:機器學習本質:讓機器通過數據自動尋找規律

機器學習第一講:機器學習本質:讓機器通過數據自動尋找規律 資料取自《零基礎學機器學習》。 查看總目錄:學習大綱 關于DeepSeek本地部署指南可以看下我之前寫的文章:DeepSeek R1本地與線上滿血版部署:超詳細手把手指…

修改圖像分辨率

在這個教程中,您將學習如何使用Python和深度學習技術來調整圖像的分辨率。我們將從基礎的圖像處理技術開始,逐步深入到使用預訓練的深度學習模型進行圖像超分辨率處理。 一、常規修改方法 1. 安裝Pillow庫 首先,你需要確保你的Python環境中…

jsAPI

環境準備 1 安裝nvm nvm 即 (node version manager),好處是方便切換 node.js 版本 安裝注意事項 要卸載掉現有的 nodejs提示選擇 nvm 和 nodejs 目錄時,一定要避免目錄中出現空格選用【以管理員身份運行】cmd 程序來執行 nvm 命令首次運行前設置好國…

SCDN是什么?

SCDN是安全內容分發網絡的簡稱,它在傳統內容分發網絡(CDN)的基礎上,集成了安全防護能力,旨在同時提升內容傳輸速度和網絡安全性。 SCDN的核心功能有: DDoS防御:識別并抵御大規模分布式拒絕服務…

Qt/C++開發監控GB28181系統/實時視頻預覽/視頻點播/rtp解包解碼顯示

一、前言 通過gb28181做實時視頻預覽,也就是視頻點播功能,是最重要的功能了,絕對是整個系統排第一重要的,這就是核心功能,什么設備注冊、獲取通道等都是為了實時預覽做準備的,當然這個功能也是最難的&…

找銀子 題解(c++)

題目 思路 首先,這道題乍一看,應該可以用搜索來做。 但是,搜索會不會超時間限制呢? 為了防止時間超限,我們可以換一種做法。 先創立兩個二維數組,一個是輸入的數組a,一個是數組b。 假設 i 行 j 列的數…