音视频开发5 补充 - Nginx搭建rtmp流媒体服务器,目的是让ffmpeg 可以直播推流

news2025/3/17 11:23:55
直播推流
ffmpeg -re -i out.mp4 -c copy flv rtmp://server/live/streamName
-re, 表示按时间戳读取文件
参考: Nginx 搭建 rtmp 流媒体服务器 (Ubuntu 16.04)
https://www.jianshu.com/p/16741e363a77

第一步 准备工作

安装nginx需要的依赖包

打开 ubutun 终端,执行

sudo apt-get update
sudo apt-get install build-essential
sudo apt-get install openssl libssl-dev 
sudo apt-get install libpcre3 libpcre3-dev
sudo apt-get install zlib1g-dev  

第二步 在用户目录创建rtmp, 下载 nginx 和 nginx-rtmp-module,解压

1.创建放置文件的目录

mkdir ~/rtmp
cd ~/rtmp

2.下载 nginx     

官网:https://nginx.org/en/download.html,可以自行从官网下载

也可以直接使用命令在linux上下载,本次使用的如下命令下载的

wget https://nginx.org/download/nginx-1.24.0.tar.gz

3.下载 nginx-rtmp-module           

官网:https://github.com/arut/nginx-rtmp-module  可以自行从官网下载

也可以直接使用命令在linux上下载,如下两个命令任何一个都可以下载。

git clone https://github.com/arut/nginx-rtmp-module.git  这个地址一直下载不了
wget https://github.com/arut/nginx-rtmp-module/archive/v1.2.1.tar.gz

本次使用的 wget https://github.com/arut/nginx-rtmp-module/archive/v1.2.1.tar.gz 下载的。

下载 nginx-rtmp-module  的目的是:nginx要支持rtmp模块,做推拉流,这个module是必须下载的

4. 解压到当前目录下:

5 build nginx

进入到/home/hunandede/rtmp/nginx-1.24.0 目录下

cd /home/hunandede/rtmp/nginx-1.24.0

config文件,注意的是,配置命令中--add-module=/home/hunandede/rtmp/nginx-rtmp-module-1.2.1中/home/hunandede/rtmp/nginx-rtmp-module-1.2.1 这个目录是你通过git clone下来的nginx-rtmp-module的源码目录,每一个人都不一样,切记。

./configure \
 --with-threads \
 --with-http_stub_status_module \
 --with-http_mp4_module \
 --with-http_v2_module \
 --with-http_flv_module \
 --with-http_ssl_module \
 --with-http_realip_module \
 --with-stream \
 --with-stream_ssl_module \
 --add-module=/home/hunandede/rtmp/nginx-rtmp-module-1.2.1

make -j4

sudo make install

# 注意  这里可能会报错
# nginx-rtmp-module/ngx_rtmp_eval.c:160:17: error: this statement may fall through [-Werror=implicit-fallthrough=]

解决方案
# 进入nginx 下载目录的objs 编辑Makefile
vim objs/Makefile
# 第三行 将`-Werror` 删掉
改动的部分:原先为  CFLAGS =  -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g 
# 最终结果为 CFLAGS =  -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -g
# 保存 重新make
make && make install

6.安装完成后,注意的是安装路径,配置文件路径,nginx可执行文件路径如下

默认安装到 /usr/local/nginx

配置文件路径:/usr/local/nginx/conf/nginx.conf

可执行文件路径: /usr/local/nginx/sbin/nginx -s reload

第三步:配置nginx -- 点播配置

1. 建立媒体文件夹,这个文件夹下放置你要推流出去的  影音文件

我是放在这个下面的,这个无所谓的,你想放哪里放哪里,我这样放置,是因为我的linux和windows有一个共享文件夹,是放在这里的,主要是为了方便从windows上拷贝 影音文件。

/mnt/hgfs/linuxgongxiang/ffmpeg/videofile

在这个文件夹下面放置了一个 : rtmp_h264_aac_1280_720.mp4文件

该文件是有格式要求的: 符合AAC+H264的格式即可。

2. 在配置文件中,将你的影音文件夹 配置进去

配置文件路径:/usr/local/nginx/conf/nginx.conf
 

打开 /usr/local/nginx/conf/nginx.conf

添加 如下的代码,如下的几行代码的意思是,我配置一个 rtmp,是一个server,监听1935端口,组块大小为4096 bytes,名字是vod,对应的文件夹就是 你的video file的文件夹

rtmp {  #RTMP server
    server {    
        listen 1935;  #server port
        chunk_size 4096;  #chunk_size
        application vod {
            play /mnt/hgfs/linuxgongxiang/ffmpeg/videofile; #media file position
        }
    }
}

对比改动前和改动后,注意这里只是为了对比,里面的内容 和我这里写的不一样。

3. 重新启动一下nginx


 

sudo /usr/local/nginx/sbin/nginx -s reload

如果报错

nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)
则说明nginx没有启动,所以需要先启动

4. 在Windows使用ffplay进行播放


注意的是:虚拟机安装的Ubuntu网络连接需要选择"桥接模式",使得windows和Ubuntu是同一网段的IP。

unbutun上 使用ifconfig 查看,IP地址为,192.168.31.104 

这里也将windows 的IP 截图了,只是对比查看,在桥接模式下,linux 和windows的IP都是在192.168.31下的

ffplay rtmp://192.168.31.104/vod/rtmp_h264_aac_1280_720.mp4

成功。

第四步 配置nginx -- 直播配置

配置

RTMP服务添加一个application这个名字可以任意起,也可以起多个名字,由于是直播我就叫做它live,如果打算弄多个序列的直播就可以live_cctv。

配置文件路径:/usr/local/nginx/conf/nginx.conf
 

打开 /usr/local/nginx/conf/nginx.conf

添加的部分为

        # live server 1
        application live{ #hunandede live first add
            live on;
        }

        # live server 2
        application live_cctv{ #hunandede live  add
            live on;
        }

位置在:

rtmp {  #RTMP server
    server {    
        listen 1935;  #server port
        chunk_size 4096;  #chunk_size
        application vod {
            play /mnt/hgfs/linuxgongxiang/ffmpeg/videofile; #media file position
        }
        
        # live server 1
        application live{ #hunandede live first add
            live on;
        }

        # live server 2
        application live_cctv{ #hunandede live  add
            live on;
        }
    }
}

在linux上推流


在Ubuntu端用ffmpeg产生一个模拟直播源,向rtmp服务器推送

注意,源文件必须是H.264+AAC编码的。

ffmpeg -re -i /mnt/hgfs/linuxgongxiang/ffmpeg/videofile/rtmp_h264_aac_1280_720.mp4 -c copy -f flv rtmp://192.168.31.104/live/rtmp_h264_aac_1280_720

ffmpeg -re -i /mnt/hgfs/linuxgongxiang/ffmpeg/videofile/rtmp_h264_aac_1280_720.mp4 -c copy -f flv rtmp://192.168.31.104/live_cctv/35


windows 上拉流

ffplay rtmp://192.168.31.104/live/rtmp_h264_aac_1280_720

ffplay rtmp://192.168.31.104/live_cctv/35

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

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

相关文章

2024年5月26日 十二生肖 今日运势

小运播报:2024年5月26日,星期日,农历四月十九 (甲辰年己巳月庚寅日),法定节假日。 红榜生肖:马、猪、狗 需要注意:牛、蛇、猴 喜神方位:西北方 财神方位:…

【2024最新华为OD-C卷试题汇总】传递悄悄话的最长时间(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 文章目录 前…

3.Redis之Redis的环境搭建redis客户端介绍

1.版本的选取 安装 Redis:Redis 5 系列~~ 在 Linux 中进行安装~~ Redis 官方是不支持 Windows 版本的~~ 微软维护了一个 Windows 版本的 Redis 分支 Centos和Ubuntu.Docker 2.如何进行安装??? 1.ubuntu 2.centos yum instal…

欧拉函数、快速幂、扩展欧几里得算法、中国剩余定理和高斯消元

欧拉函数 给定 n 个正整数 ai,请你求出每个数的欧拉函数。 欧拉函数的定义1∼N 中与 N 互质的数的个数被称为欧拉函数,记为 ϕ(N)。 若在算数基本定理中,Np1a11p2a2…pmm,则:ϕ(N) Np1−1/p1p2−1/p2…pm−1/pm 输…

最热门好用骨传导耳机推荐!!分享六大实用选购技巧助你挑选!

耳机基本是每人人手一台,不管是在地铁上还是在公交上,都可以看到很多人戴着耳机度过空余的时光,甚至现在人们在耳机的选择方面更加偏向于骨传导耳机,开放耳道的奇特设计在户外佩戴的时候可以更好的感知到周围的环境音,…

视频汇聚平台LntonCVS视频监控系统前端错误日志记录及Debug模式详细讲解

LntonCVS作为一种支持GB28181标准的流媒体服务平台,旨在提供一个能够整合不同厂商设备、便于管理和扩展的解决方案,以适应日益复杂的视频监控环境。通过实现设备的统一管理和流媒体的高效传输,LntonCVS帮助构建更加灵活和强大的视频监控系统。…

记录docker ps查找指定容器的几个命令

1.docker ps | grep registry 查询包含registry的容器 2.docker ps | grep -E "reigistry\s" 开启正则匹配模式,匹配registry后面为空格的容器,若是匹配一整行可以这样写docker ps | grep -E "^([0-9a-f]{12})\sregistry\s.*" 这…

中药垂直大模型汇总

中药垂直大模型汇总 2023 ShenNong-TCM Paper: ShenNong-TCM: A Traditional Chinese Medicine Large Language Model Data: https://huggingface.co/datasets/michaelwzhu/ShenNong_TCM_Dataset Code:https://github.com/michael-wzhu/ShenNong-TCM-LLM ShenNong-TCM由华东…

开关电源AC-DC(15W 3-18V可调)

简介: 该模块使用PI的TNY268PN电源芯片制作的开关电源,实现最大功率15W 3-18V可调输出(更改反馈电阻)隔离式反激电源; 简介:该模块使用PI的TNY268PN电源芯片制作的开关电源,实现最大功率15W 3-18V可调输出(更改反馈电阻,现电路图输出5V)隔离式反激电源; 一、产品简…

全域运营是本地生活服务的新模式吗?

最近,本地生活赛道又出现了一个新的说法,即全域运营是本地生活的下半场。事实上,这一论断并非空穴来风,而是有真凭实据。 作为多家互联网大厂重点布局的业务板块,本地生活的火爆程度早已有目共睹。根据多家互联网大厂…

国赛练习(1)

Unzip 软连接 软连接是linux中一个常用命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接。换句话说,也可以理解成Windows中的快捷方式 注意:在创建软连接的文件的所有目录下不能有重名的文件 打开环境,是文件上传&am…

在Linux上面部署ELK

注明:一下的软件需要自己准备 一、准备环境: 1.两台elasticsearch主机4G内存 2.两台elasticsearch配置主机名node1和node2(可以省略) #vim /etc/hostname #reboot 3. 两台elasticsearch配置hosts文件 #vim /etc/hosts 192.168.1.1 node1 192…

测试基础05:软件测试的分类

课程大纲 1、两种架构(Architecture) 1.1、B/S(Browser/Server) 浏览器服务器架构(大体3步):用户通过浏览器向服务器发出请求,服务器处理请求,将结果通过网络返回到用户…

【论文阅读】AID(ICCV‘23)

paper:https://arxiv.org/abs/2310.05666 code:https://github.com/YilongLv/AID Anchor-Intermediate Detector: Decoupling and Coupling Bounding Boxes for Accurate Object Detection

F.费用报销【蓝桥杯】/01背包

费用报销 01背包 思路&#xff1a;f[i][j]表示前i个票据在容量为j的背包中能占的最大值。 #include<iostream> #include<algorithm> using namespace std; int day[13]{0,31,28,31,30,31,30,31,31,30,31,30,31}; int dp[1005][5005]; int s[13]; int last[1005];…

Dockerfile使用

1.Dockerfile是什么 官网地址 https://docs.docker.com/reference/dockerfile/概念 是什么 Dockerfile 是用于构建 Docker 镜像的文本文件&#xff0c;它包含一系列的指令&#xff08;instructions&#xff09;和参数&#xff0c;用于描述如何构建和配置镜像。 Dockerfile 是…

aws sqs基础概念和队列参数解析

分布式队列的组成部分 生产者&#xff0c;向队列发送消息的组件消费者&#xff0c;接受队列消息队列&#xff0c;多个sqs服务器存储冗余存储消息 sqs自动删除超过最大留存时间的消息&#xff08;默认4天&#xff09;&#xff0c;可以通过SetQueueAttributes调整为&#xff08…

Java语言-面向对象程序设计-自定义Date类

在Java中&#xff0c;不建议直接自定义Date类&#xff0c;因为java.util.Date和java.util.Calendar类已经提供了处理日期和时间的基本功能&#xff0c;可以使用SimpleDateFormat类格式化日期&#xff08;较常用的方式&#xff09;等。 这里将自定义封装一个Date类&#xff0c;用…

Spring框架学习笔记(五):JdbcTemplate 和 声明式事务

基本介绍&#xff1a;通过 Spring 框架可以配置数据源&#xff0c;从而完成对数据表的操作。JdbcTemplate 是 Spring 提供的访问数据库的技术。将 JDBC 的常用操作封装为模板方法 1 JdbcTemplate 使用前需进行如下配置 1.1 在maven项目的pom文件加入以下依赖 <dependencies…

通过Wirtinger流进行相位恢复:理论与算法

文章目录 1. 简介2. 算法描述2.1 初始化(Initialization)2.2 迭代更新(Iterative Updates)2.3 学习率调整&#xff08;Learning Rate Adjustment&#xff09; 3. 代码实现3.1 一维信号测试 &#xff08;Gaussian model&#xff09;3.2 一维信号测试 &#xff08;Coded diffract…