音视频开发5 补充 - Nginx搭建rtmp流媒体服务器,目的是让ffmpeg 可以直播推流
第一步 准备工作
安装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 -j4sudo 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 serverserver { listen 1935; #server portchunk_size 4096; #chunk_sizeapplication 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 1application live{ #hunandede live first addlive on;}# live server 2application live_cctv{ #hunandede live addlive on;}
位置在:
rtmp { #RTMP serverserver { listen 1935; #server portchunk_size 4096; #chunk_sizeapplication vod {play /mnt/hgfs/linuxgongxiang/ffmpeg/videofile; #media file position}# live server 1application live{ #hunandede live first addlive on;}# live server 2application live_cctv{ #hunandede live addlive 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_720ffmpeg -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_720ffplay rtmp://192.168.31.104/live_cctv/35
相关文章:

音视频开发5 补充 - Nginx搭建rtmp流媒体服务器,目的是让ffmpeg 可以直播推流
直播推流 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 终端…...

小猫咪的奇幻冒险:一个简单的Python小游戏
新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、游戏简介与演示 二、游戏开发与运行 1. 环境搭建 2. 代码解析 3. 加速机制 三、游戏…...

专注于运动控制芯片、运动控制产品研发、生产与销售为一体的技术型芯片代理商、方案商——青牛科技
深圳市青牛科技实业有限公司,是专注于运 动控制芯片、运动控制产品研发、生产与销售为一体的技术型 芯片代理商、方案商。现今代理了国产品牌GLOBALCHIP,芯谷,矽普,TOPPOWER等品牌。其中代理品牌TOPPOWER为电源模块,他们公司通过了…...

【C++】继承(二)深入理解继承:派生类默认成员函数与友元、静态成员的奥秘
目录 派生类的默认成员函数①派生类的构造函数②派生类的拷贝构造函数③派生类的赋值构造④派生类的析构函数 继承与友元继承与静态成员 前言 我们在上一章讲解了: 继承三部曲,本篇基于上次的基础继续深入了解继承的相关知识,欢迎大家和我一起学习继承 派…...

【MATLAB源码-第214期】基于matlab的遗传算法GA最短路径路由优化算法仿真。
操作环境: MATLAB 2022a 1、算法描述 在现代网络通信和路径规划领域,最短路径路由优化算法是一项关键技术。它涉及在给定的网络拓扑中寻找从源点到目标点的最短或成本最低的路径。近年来,遗传算法(GA)因其出色的全局…...

数据结构(四)顺序栈 链式栈
一、概念 栈是一种先进后出的数据结构。FILO(firt in late out) 逻辑结构:线性结构 二、存储结构: (一) 顺序存储 顺序栈 基于一个数组配合一个栈顶"指针(数组下标)–top" 顺序栈的本质就是对…...

【linux】g++/gcc编译器
目录 背景知识 gcc如何完成 预处理(进行宏替换) 编译(生成汇编) 汇编(生成机器可识别代码) 链接(生成可执行文件或库文件) 在这里涉及到一个重要的概念:函数库 函数库一般分为静态库和动态库两…...

VBA批量合并带有图片、表格与文本框的Word
本文介绍基于VBA语言,对大量含有图片、文本框与表格的Word文档加以批量自动合并,并在每一次合并时添加分页符的方法。 在我们之前的文章基于Python中docx与docxcompose批量合并多个Word文档文件并逐一添加分页符(https://blog.csdn.net/zhebu…...

市面上前 11 名的 Android 数据恢复软件
Android数据恢复软件是恢复无意中删除的文件或文件夹的必要工具。该软件还将帮助您恢复丢失或损坏的信息。本文介绍提供数据备份和磁盘克隆选项的程序,这些选项有助于在Android设备上恢复文件的过程。 如果您正在寻找一种有效的方法来恢复图像,文档&…...

【数据结构与算法 | 基础篇】数组模拟栈
1. 前言 前文我们刚提及了如何用单向链表来模拟栈. 我们还可以用数组来模拟栈.使用栈顶指针top来进行栈顶的操作. 2. 数组模拟栈 (1). 栈接口 public interface stack<E> {//压栈boolean push(E value);//弹栈, 栈非空返回栈顶元素E pop();//返回栈顶元素, 但不弹栈E…...

css卡片横线100%宽度
所需样式: 横线不用border, 用单独一个div, 这样就不会影响父组件的padding <div class"pumpDetailView"><div class"pump_title_name"><span>{{ pumpInfo.pointname }}</span><divclass"point_state":style"…...

回溯大法总结
前言 本篇博客将分两步来进行,首先谈谈我对回溯法的理解,然后通过若干道题来进行讲解,最后总结 对回溯法的理解 回溯法可以看做蛮力法的升级版,它在解决问题时的每一步都尝试所有可能的选项,最终找出所以可行的方案…...

基于Android Studio图书管理,图书借阅系统
目录 项目介绍 图片展示 运行环境 获取方式 项目介绍 用户 书架:搜索书籍,查看书籍,借阅书籍,收藏书籍,借阅书籍必须在一个月之内还书; 我的:可以修改密码,退出登录ÿ…...

SCSS 基本使用详解
一、引言 SCSS 是 Sass(Syntactically Awesome Stylesheets)的其中一种语法,是一种预处理器脚本语言,能够扩展 CSS 的功能,使其更加强大和高效。SCSS 保留了 CSS 的原有语法,同时增加了变量、嵌套规则、混…...

10.3.k8s的附加组件-图形化管理工具dashboard
目录 一、dashboard介绍 二、部署安装dashboard组件 1.下载dashboard本地文件 2.修改nodeport的端口范围 3.创建和查看dashboard 4.电脑浏览器访问测试 5.token登录方式登录dashboard 5.1.查看dashboard的token 5.2.继续查看用户token的secrets资源详细信息 5.3.复制…...

深入理解CPU缓存一致性
存储体系结构 速度快的存储硬件成本高、容量小,速度慢的成本低、容量大。为了权衡成本和速度,计算机存储分了很多层次,有寄存器、L1 cache、L2 cache、L3 cache、主存(内存)和硬盘等。 根据程序的空间局部性和时间局…...

python获取安装路径盘符
文章目录 一、前言二、实现方法一、前言 python写的客户端工具需要安装时,可以给用户一个默认的安装路径,如果直接写死个D、E、F盘什么的,那用户可能没有那个盘符,但是如果直接指定系统盘C盘,又不是那么友好,所以默认指定的安装路径应该尽量满足下面的要求: 盘符存在盘…...

CentOS 7.9安装NVIDIA P40显卡驱动、CUDA和cuDNN
文章目录 1、安装P40显卡驱动1.1 查看机器上有哪些显卡1.2 禁用nouveau1.3 安装依赖1.4 安装驱动 2、安装CUDA2.1 安装2.2 测试是否安装成功 3、安装cuDNN3.1 安装3.2 测试是否安装成功 4、总结 1、安装P40显卡驱动 1.1 查看机器上有哪些显卡 lspci | grep -i vga lspci | gr…...

SpringBoot多数据源启动出现循环依赖问题
在使用SpringBoot的项目中,如果是有使用多数据源,可能会存在启动时数据源循环依赖的报错,是因为使用了多数据源注入,和DataSourceAutoConfiguration数据源自动配置的DataSourceInitializerInvoker互相产生循环依赖导致。 这种错误…...

【一步一步了解Java系列】:何为数组,何为引用类型
看到这句话的时候证明:此刻你我都在努力加油陌生人个人主页:Gu Gu Study专栏:一步一步了解Java 喜欢的一句话: 常常会回顾努力的自己,所以要为自己的努力留下足迹 喜欢的话可以点个赞谢谢了。 数组 数组是一推相同数据…...

2024年5月份最新独角数卡使用USDT详细小白教程
直观配套视频教程 2024年5月份最新独角数卡安装及USDT使用详细小白教程 1、创建服务器 Centos或者Ubuntu2、宝塔面板开心版安装寶塔 Linux 面版 8.0.5 開心版 - 2024年1月12日 - 开心专区 - 异次元 - Powered by Discuz!Centos安装命令(默认安装是 8.0.1 直接在线升…...

【idea】idea2024最新版本下载_安装_破解
1、下载 下载地址:下载 IntelliJ IDEA – 领先的 Java 和 Kotlin IDE 下载完成: idea破解脚本下载链接:https://pan.baidu.com/s/1L5qq26cRABw8XuEn_CngKQ 提取码:6666 下载完成: 2、安装 1、双击idea的安装包&…...

部署CNI网络组件+k8s多master集群部署+负载均衡
一、环境部署 主机服务 192.168.91.5 K8S集群master01192.168.91.8 K8S集群master02192.168.91.6K8S集群node01192.168.91.7K8S集群node02192.168.91.9 负载均衡nginxkeepalive01(master)192.168.91.10 负载均衡nginxkeepalive02(backup&am…...

一个和蔼可亲的Python库,用Gooey为你的程序添加GUI
大家好,你有没有遇到过这样的情况:你写了一个非常棒的命令行程序,但当你分享给朋友或同事时,他们却因为害怕命令行而不愿意使用?这时候,一个简洁美观的图形用户界面(GUI)就派上用场了…...

java抽象类,接口,枚举练习题
第一题: 答案: class Animal{//成员变量protected String name;protected int weight;//构造方法public Animal(){this.name"refer";this.weight50;}public Animal(String name,int weight){this.namename;this.weightweight;}//成员方法publ…...

探索Python技巧:零基础学习缩进与逻辑关系
新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、理解Python的缩进语法 缩进规则详解 二、缩进在逻辑关系中的应用 逻辑块示例 三、实…...

【设计模式】JAVA Design Patterns——Callback(回调模式)
🔍目的 回调是一部分被当为参数来传递给其他代码的可执行代码,接收方的代码可以在一些方便的时候来调用它。 🔍解释 真实世界例子 我们需要被通知当执行的任务结束时。我们为调用者传递一个回调方法然后等它调用通知我们。 通俗描述 回调是一…...

Pandas高效数据清洗与转换技巧指南【数据预处理】
三、数据处理 1.合并数据(join、merge、concat函数,append函数) Concat()函数使用 1.concat操作可以将两个pandas表在垂直方向上进行粘合或者堆叠。 join属性为outer,或默认时,返回列名并集,如ÿ…...

kafka防止消息丢失配置
无消息丢失最佳实践配置: 不要使用 producer.send(msg),而要使用 producer.send(msg, callback) API。设置 acks all。是 Producer 参数。设置成 all,表明所有副本 Broker 都要接收到消息,g该消息才算是“已提交”。设置 retrie…...

Socket CAN中ctrlmode有哪些?
在Linux中,socketcan 的 ctrlmode 是一个用于配置CAN设备控制模式的标志字段。该字段的值由一组标志位组成,这些标志位控制CAN设备的各种操作模式。以下是一些常见的 ctrlmode 标志及其含义: CAN_CTRLMODE_LOOPBACK: 描述:启用回环模式。作用:设备在发送帧的同时会接收它…...