音视频开发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 终端,执行

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

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

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

相关文章

社会网络,生态网络,贸易网络,复杂网络边介数蓄意和随机攻击

​边介数(Edge Betweenness) # ” 边介数(Edge Betweenness) 1 边介数(Edge Betweenness) Summer IS HERE 边介数(Edge Betweenness)是一种度量边在网络中重要性的指标。它定义为…

OpenStack平台Nova管理

1. 规划节点 使用OpenStack平台节点规划 IP主机名节点192.168.100.10controller控制节点192.168.100.20compute计算节点 2. 基础准备 部署的OpenStack平台 1. Nova运维命令 (1)Nova管理安全组规划 安全组(security group)是…

设计模式八股文

什么是设计模式? 设计模式是软件开发过程中经常遇到的问题的通用解决方案。类似于前人总结的经验,遇到相似问题的时候有个参考。 设计模式七大基本原则? 单一职责:一个类应该只作一件事情。将功能分为小的独立的单元。开放封闭…

CTF之Web_python_block_chain

这种题对于我来说只能看大佬的wp(但是这一题是wp都看不懂,只能表达一下我的理解了) (最后有简单方法,前面一种没看懂没关系) 下面这一部分是首页的有用部分 访问/source_code,得到源码: # -*-…

宁夏银川、山东济南、中国最厉害的改名大师的老师颜廷利教授的前沿思想观点

在当代社会,一个响亮的声音穿越了传统的迷雾,它来自东方哲学的殿堂,由一位现代学者颜廷利教授所发出。他的话语,如同一股清泉,在混沌的世界里激荡着思考的波澜:"有‘智’不在年高,无‘智’…

太空几乎没有阻力,飞船理论上能一直加速,为何还说星际旅行很难

太空几乎没有阻力,飞船理论上能一直加速,为何还说星际旅行很难? 答案 现代科学认为,我们的地球诞生于46亿年前,也就是太阳系诞生初期,在太阳系中一共有八大行星,而地球是唯一一颗诞生了生命的…

起保停电路工作原理

一、电路组成 起保停电路由电源保护设备(空气开关)、交流接触器、启动按钮、停止按钮和用电设备组成。 起保停电路的组成部分通常可分为四个部分: 保护部分:(空气开关)在电流或电压超出一定范围时自动切断…

异步获取线程执行结果,JDK中的Future、Netty中的Future和Promise对比

JDK中的Future和Netty中的Future、Promise的关系 三者源头追溯 Netty中的Future与JDK中的Future同名,但是是两个不同的接口。Netty中的Future继承自JDK的Future,而Promise又对Netty中的Future进行了扩展。 JDK中的Future源自JUC并发包: Net…

电商API接口(api商品数据)【电商商品实时数据采集API接口】

众多品牌选择电商API实时数据采集接口进行采购,主要是出于以下几个重要原因: 第一,高效便捷。比价工具通过自动化的方式获取价格信息,避免了繁琐的人工操作,大大节省了时间和精力。 第二,精准比较。API比价…

如何使用ssh将vscode 连接到服务器上,手把手指导

一、背景 我们在开发时,经常是window上安装一个vscode编辑器,去连接一个虚拟机上的linux,这里常用的是SSH协议,了解其中的操作非常必要。 二、SSH协议 SSH(Secure Shell)是一种安全协议,用于…

C#屏蔽基类成员

可以用与积累成员名称相同的成员来屏蔽 要让编译器知道你在故意屏蔽继承的成员,可以用new修饰符。否则程序可以成功编译,但是编译器会警告你隐藏了一个继承的成员 using System;class someClass {public string F1 "Someclass F1";public v…

YOLOv10 | 手把手教你利用yolov10训练自己数据集(含环境搭建 + 参数解析 + 数据集查找 + 模型训练、推理、导出)

一、前言 本文内含YOLOv10网络结构图 各个创新模块手撕结构图 训练教程 推理教程 参数解析 环境搭建 数据集获取等一些有关YOLOv10的内容! 目录 一、 前言 二、整体网络结构图 三、空间-通道分离下采样 3.1 SCDown介绍 3.2 C2fUIB介绍 3.3 PSA介绍 …

微服务下认证授权框架的探讨

前言 市面上关于认证授权的框架已经比较丰富了,大都是关于单体应用的认证授权,在分布式架构下,使用比较多的方案是--<应用网关>,网关里集中认证,将认证通过的请求再转发给代理的服务,这种中心化的方式并不适用于微服务,这里讨论另一种方案--<认证中心>,利用jwt去中…

【数据库基础-mysql详解之索引的魅力(N叉树)】

索引的魅力目录 &#x1f308;索引的概念&#x1f308;使用场景&#x1f308;索引的使用&#x1f31e;&#x1f31e;&#x1f31e;查看MySQL中的默认索引&#x1f31e;&#x1f31e;&#x1f31e;创建索引&#x1f31e;&#x1f31e;&#x1f31e;删除索引 站在索引背后的那个男…

sheng的学习笔记-docker部署Greenplum

目录 docker安装gp数据库 mac版本 搭建gp数据库 连接数据库 windows版本 搭建gp数据库 连接数据库 docker安装gp数据库 mac版本 搭建gp数据库 打开终端&#xff0c;输入代码&#xff0c;查看版本 ocker search greenplum docker pull projectairws/greenplum docker…

Virtual Box安装Ubuntu及设置

Virtual Box安装Ubuntu及设置 本文包含以下内容&#xff1a; 使用Virtual Box安装Ubuntu Desktop。设置虚拟机中的Ubuntu&#xff0c;使之可访问互联网并可通过SSH访问。 Ubuntu Desktop下载 从官网下载&#xff0c;地址为&#xff1a;Download Ubuntu Desktop | Ubuntu U…

HTTP交互导致ECONNABORTED的原因之一

背景&#xff1a; 本次记录的&#xff0c;是一次使用HTTP交互过程中遇到的问题&#xff0c;问题不大&#xff0c;就是给题目上这个报错补充一种可能的解决方案。 程序大致流程&#xff1a; 1. 设备向服务器A请求信息 2. 拿到回复记录下回复内容中的数据包下载地址等信息 3…

games 101 作业4

games 101 作业4 题目题解作业答案 题目 Bzier 曲线是一种用于计算机图形学的参数曲线。在本次作业中&#xff0c;你需要实 现 de Casteljau 算法来绘制由 4 个控制点表示的 Bzier 曲线 (当你正确实现该 算法时&#xff0c;你可以支持绘制由更多点来控制的 Bzier 曲线)。 你需…

IntelliJ IDEA实用插件:轻松生成时序图和类图

IntelliJ IDEA生成时序图、类图 一、SequenceDiagram1.1 插件安装1.2 插件设置1.3 生成时序图 二、PlantUML Integration2.1 插件安装2.2 插件设置2.3 生成类图 在软件建模课程的学习中&#xff0c;大家学习过多种图形表示方法&#xff0c;这些图形主要用于软件产品设计。在传统…

C++实现定长内存池

项目介绍 本项目实现的是一个高并发的内存池&#xff0c;它的原型是Google的一个开源项目tcmalloc&#xff0c;tcmalloc全称Thread-Caching Malloc&#xff0c;即线程缓存的malloc&#xff0c;实现了高效的多线程内存管理&#xff0c;用于替换系统的内存分配相关函数malloc和fr…