Ubuntu系统使用Nginx搭建RTMP服务器

news2024/12/23 5:08:45

环境:
推流端 rockpi s 主控rk3308 运行ubuntu系统
服务端 ubuntu
播放器 VLC播放器

服务端安装依赖:

apt-get install build-essential libpcre3 libpcre3-dev libssl-dev

创建nginx编译目录:

mkdir my_nginx_rtmp
cd my_nginx_rtmp/

下载 nginx与nginx-rtmp-module包:

wget http://nginx.org/download/nginx-1.21.6.tar.gz
wget https://github.com/arut/nginx-rtmp-module/archive/master.zip

解压缩:

tar -xf nginx-1.21.6.tar.gz
unzip master.zip

编译带nginx-rtmp模块的nginx:

cd nginx-1.21.6/
./configure --with-http_ssl_module --add-module=../nginx-rtmp-module-master
make j4 && make install

检查nginx是否安装完成:

/usr/local/nginx/sbin/nginx -v

将nginx添加到环境变量中:

sudo vi ~/.bashrc

在最后添加:
export PATH=$PATH:/usr/local/nginx/sbin/

添加完成执行source命令:
source ~/.bashrc

修改nginx的配置文件:

vim /usr/local/nginx/conf/nginx.conf

在最后添加:
rtmp {
        server {
                listen 1935;
                chunk_size 4096;
 
                application live {
                        live on;
                        record off;
                }
        }
}

启动ngnix:

ngnix

查看nginx启动情况:

(base) rog@i7:~$ ps -ef | grep nginx | grep -v grep
rog      1312637    2257  0 15:51 ?        00:00:00 nginx: master process nginx
rog      1314761 1312637  0 16:01 ?        00:00:06 nginx: worker process

查看端口:

(base) rog@i7:~$ netstat -anp | grep nginx
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 0.0.0.0:1935            0.0.0.0:*               LISTEN      1312637/nginx: mast
tcp        0      0 0.0.0.0:80            0.0.0.0:*               LISTEN      1312637/nginx: mast
tcp        0      0 192.168.110.30:1935     192.168.110.114:10441   ESTABLISHED 1314761/nginx: work
unix  3      [ ]         STREAM     CONNECTED     22049699 1312637/nginx: mast
unix  3      [ ]         STREAM     CONNECTED     22049700 1312637/nginx: mast

端口80是HTTP服务的默认监听端口,端口1935正是RTMP服务器的默认监听端口

遇到的问题:

 如果缺少zlib库,执行:
sudo apt-get install zlib1g-dev 

找不到openssl库,在 ~/.bashrc中添加openssl库位置
export LD_LIBRARY_PATH=/home/rog/anaconda3/lib:$LD_LIBRARY_PATH   
source ~/.bashrc

执行nginx如果出现如下错误,修改配置文件/usr/local/nginx/conf/nginx.conf将端口号改到1024以后的端口例如8090。
nginx: [emerg] bind() to 0.0.0.0:80 failed (13: Permission denied)  

测试:
测试视频下载地址:https://www.yingshiguang.com/

ffmpeg -re -i test2.mp4 -vcodec h264 -f flv rtmp://192.168.110.30:1935/live/1          ## X64 端本地推流
ffmpeg -re -i test.mp4 -c copy -f flv rtmp://192.168.110.30:1935/live/1                ## ARM 端推流

ffmpeg -re -i /dev/video0 -vcodec h264 -f flv rtmp://192.168.110.30:1935/live/1        ## 摄像头推流
ffmpeg -i /dev/video0 -vcodec libx264 -acodec aac -tune zerolatency -f flv rtmp://192.168.110.30:1935/live/1

部分参数解释:
-tune zerolatency  //设置零延时
-preset ultrafast  //--preset的参数主要调节编码速度和质量的平衡,有ultrafast(转码速度最快,视频往往也最模糊)、superfast、veryfast、faster、fast、medium、slow、slower、veryslow、placebo这10个选项,从快到慢

播放器使用VLC:
播放地址同推流地址一样

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1322007.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

亚马逊,速卖通,shein卖家如何准确有效的测评补单

一、合理规划测评时间和数量 卖家需要合理规划测评的时间和数量。如果卖家过于频繁地进行测评,或者在短时间内进行大量的测评,这可能会被视为恶意行为,从而触犯风控机制。因此,卖家需要根据自己的销售情况和市场需求,…

【机器学习】卷积神经网络(CNN)的特征数计算

文章目录 基本步骤示例图解过程 基本步骤 在卷积神经网络(CNN)中,计算最后的特征数通常涉及到以下步骤: 确定输入尺寸: 首先,你需要知道输入数据的尺寸。对于图像数据,这通常是 (batch_size, c…

ST股票预测模型(机器学习_人工智能)

知己知彼,百战不殆;不知彼而知己,一胜一负;不知彼,不知己,每战必贻。--《孙子兵法》谋攻篇 ST股票 ST股票是指因连续两年净利润为负而被暂停上市的股票,其风险较高,投资者需要谨慎…

域架构下的功能安全思考

来源:联合电子 随着整车电子电气架构的发展,功能域控架构向整车集中式区域控制演进。新的区域控制架构下,车身控制模块(BCM),整车控制单元(VCU),热管理系统(TMS)和动力底…

JDK各个版本特性讲解-JDK14特性

JDK各个版本特性讲解-JDK14特性 一、Java14概述二、语法层面的变化1. instanceof2. switch表达式3. 文本块的改进4. Records记录类型 二、关于GC1.G1的NUMA内存分配优化2. 弃用SerialCMS,ParNewSerial Old3.删除CMS4.ZGC on macOS and Windows 三、其他变化1.友好的空指针异常提…

利用python在abaqus中画Voronoi多面体简单示例

利用python在abaqus中画Voronoi多面体简单示例 利用scipy.spatial库得到Voronoi多面体顶点坐标abaqus中绘制多面体CAE操作得到相应rpy文件0、 将vertices.csv和ridge_vertices.csv导入abaqus1、 新建一个part2、创建点3、画线4、画面 完整代码 利用scipy.spatial库得到Voronoi多…

【03】GeoScene创建海图或者电子航道图数据

1 配置Nautical属性 1.1 管理长名称 长名称(LNAM)是一个必要的对象标识符,是生产机构(AGEN)、要素识别号码(FIDN)和要素识别子项(FIDS)组件的串联。这三个子组件用于数…

azkaban编译时报错的解决方案

大数据单机学习环境搭建(11)Azkaban单机部署,关于Azkaban和gradle下载,本文编译不限于单机solo模式。 一.大多数报错处理 1.1首先操作 1)安装 git yum install git -y 2)替换 azkaban 目录下的 build.gradle 文件的 2处 repositories 信息。改为 阿里…

回归预测 | MATLAB实现GA-LSSVM基于遗传算法优化最小二乘向量机的多输入单输出数据回归预测模型 (多指标,多图)

回归预测 | MATLAB实现GA-LSSVM基于遗传算法优化最小二乘向量机的多输入单输出数据回归预测模型 (多指标,多图) 目录 回归预测 | MATLAB实现GA-LSSVM基于遗传算法优化最小二乘向量机的多输入单输出数据回归预测模型 (多指标&#…

【HCIP学习记录】OSPF之DD报文

1.OSPF报文格式 24字节 字段长度含义Version1字节版本,OSPF的版本号。对于OSPFv2来说,其值为2。Type1字节类型,OSPF报文的类型,有下面几种类型: 1:Hello报文;● 2:DD报文&#xff1…

使用Kaptcha实现的验证码功能

目录 一.需求 二.验证码功能实现步骤 验证码 引入kaptcha依赖 完成application.yml配置文件 浏览器显示验证码 前端页面 登录页面 验证成功页面 后端 此验证码功能是以SpringBoot框架下基于kaptcha插件来实现的。 一.需求 1.页面生成验证码 2.输入验证码&#xff…

vue中echarts柱状图点击x轴数据复制

参考自:Vue 3 使用 vue-echarts 的柱状图 barItem 和 x, y 轴点击事件实现_echarts x轴点击事件-CSDN博客 例如柱状图如下: 步骤: 一、数据处理的时候需要在 xAxis 对象中添加:triggerEvent: true 这个键值对,以增加…

ES索引误删的名场面

慌了3秒,果断发个邮件; 01 最近,在版本发布时; ES线上未备份的索引,被当场「误删」了; 对于新手来说,妥妥的社死名场面; 对于老手来说,慌它3秒表示一下态度&#xff1…

Python3,100行代码,写一段新年祝福视频,为新年喝彩。

新年祝福 1、引言2、代码示例2.1 思路2.2 介绍2.2.1 画布2.2.2 用法 2.3 实例 3、总结 1、引言 小屌丝:鱼哥, 这2023年马上就结束了, 是不是要表示表示。 小鱼:我也在思考这个事情。 小屌丝:这还需要思考?…

kubernetesr安全篇之云原生安全概述

云原生 4C 安全模型 云原生 4C 安全模型,是指在四个层面上考虑云原生的安全: Cloud(云或基础设施层)Cluster(Kubernetes 集群层)Container(容器层)Code(代码层&#xf…

modelsim使用技巧

Modelsim关闭Add items to the Project后,该如何添加existing file: 在project页面下,右键选择add to project-add existing file 设置modelsim的仿真波形时间单位: 打开Modelsim后,在Wave-Wave Preferences后&#…

从零开始学习Web自动化:用Python和Selenium实现网站登录功能!

Web自动化测试实战项目:使用Selenium和Python完成网站登录功能的自动化测试 本文将介绍如何使用Selenium和Python编写自动化测试脚本,对网站登录功能进行测试。我们将通过模拟用户在网站上输入用户名和密码,并点击登录按钮,来检验…

JavaWeb编程语言—登录校验

一、前言&简介 前言:小编的上一篇文章“JavaWeb编程语言—登录功能实现”,介绍了如何通过Java代码实现通过接收前端传来的账号、密码信息来登录后端服务器,但是没有实现登录校验功能,这代表着用户不需要登录也能直接访问服务器…

设计模式 原型模式 与 Spring 原型模式源码解析(包含Bean的创建过程)

原型模式 原型模式(Prototype模式)是指:用原型实例指定创建对象的种类,并且通过拷贝这些原型,创建新的对象。 原型模式是一种创建型设计模式,允许一个对象再创建另外一个可定制的对象,无需知道如何创建的细节。 工作原…

技术分享-Jenkins

持续集成及Jenkins介绍 软件开发生命周期叫SDLC(Software Development Life Cycle),集合了计划、开发、测试、部署过程。 在平常的开发过程中, 需要频繁地(一天多次)将代码集成到主干,这个叫持…