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.mzph.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 列的数…