音视频开发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 喜欢的一句话: 常常会回顾努力的自己,所以要为自己的努力留下足迹 喜欢的话可以点个赞谢谢了。 数组 数组是一推相同数据…...
【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...
突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...
模型参数、模型存储精度、参数与显存
模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...
UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...
高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...
python爬虫——气象数据爬取
一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用: 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests:发送 …...
【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验
Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...
