Windows搭建RTMP服务器

news2024/10/7 1:00:52

 

这里写自定义目录标题

  • 1 Nginx-RTMP服务器搭建
    • 1.1 下载Nginx
    • 1.2 下载Nginx的RTMP扩展包
    • 1.3 配置Nginx
    • 1.4 启动Nginx
    • 1.5 查看Nginx状态
  • 2 FFmpeg推流
    • 2.1 下载FFmpeg
    • 2.2 配置FFmpeg环境变量
    • 2.3 验证FFmpeg配置
  • 3 视频推流
    • 3.1 OBS推流
    • 3.2 FFmpeg推流
  • 4 VLC拉流
    • 4.1 VLC
    • 4.2 打开网络串流配置,获取视频流
    • 4.3 视频流URL

 
 

1 Nginx-RTMP服务器搭建

1.1 下载Nginx

Nginx下载链接
下载Nginx
该版本是带RTMP模块且编译过的Nginx版本,解压完成,可以直接使用。

1.2 下载Nginx的RTMP扩展包

Nginx的RTMP扩展包下载链接
下载RTMP扩展包

下载完成后解压,将解压后的文件夹放入Nginx的解压目录下。
放置扩展包位置

1.3 配置Nginx

在Nginx解压目录中的conf目录下,新建一个文件nginx.conf,内容如下:

worker_processes  1;
 
events {
    worker_connections  1024;
}
 
#RTMP服务
rtmp {
	server { 
		listen		1935;	#监听端口
		chunk_size	4096;	#数据传输块大小
		application live{	#创建名为"live"的应用
		  live on;
		}
		application hls {  # 创建rtmp应用hls
			live on;  # 当路径匹配时,开始播放
			#HLS协议进行m3u8实时直播.如果是http-flv不需要配置下面的
			wait_key on;#保护TS切片
			hls on;  #实时回访
			hls_nested on;#每个流都自动创建一个文件夹
			hls_path C:/tmp/hls; #媒体块ts的位置
			hls_fragment 5s; #每个ts文件为5s的样子
			hls_playlist_length 30s;  #保存m3u8列表长度时间,默认是30秒,可考虑三小时10800秒
			hls_cleanup on; #是否删除列表中已经没有的媒体块TS文件,默认是开启
			hls_continuous on; #连续模式
       	}
    }
}
 
#HTTP服务,可以通过浏览器访问 http://localhost:9091/stat 查看服务器状态(9091为你配置的端口号,可以自由设置)
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile      on;
    keepalive_timeout  65;
	
    server {
        listen       9091;
        server_name  localhost;
		
		location /stat {
			rtmp_stat all;
			rtmp_stat_stylesheet stat.xsl;
		}
 
		location /stat.xsl { 
			root ./nginx-rtmp-module-1.2.2/;	#rtmp拓展包目录
		}
 
        location / {
            root   html;
            index  index.html index.htm;
			add_header Access-Control-Allow-Origin *; # 配置跨域
            add_header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept";
            add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";
        }

	location /control {
            rtmp_control all;
        }

	location /rtmp-publisher {
             root nginx-rtmp-module/test;
        }
		#加入hls支持
        location /hls {
            types {
                application/vnd.apple.mpegurl m3u8; 
                #或 application/x-mpegURL
                video/mp2t ts;
            }
            alias C:/tmp/hls;  #视频流文件目录(自己创建)
            expires -1;
            add_header Cache-Control no-cache; #跨域支持
            add_header Access-Control-Allow-Origin *;
            add_header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept";
            add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";
        }
 
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}                             

注意

  • 端口号可以自行配置,有可能你电脑9091已经被使用了,所以需要换一个。
  • alias属性也需要自行设置,创建一个暂存视频流文件目录

1.4 启动Nginx

使用管理员身份打开命令行界面,进入Nginx目录下,输入nginx.exe -c conf\nginx.conf

启动后,可以在任务管理器中看到Nginx进程

Nginx进程
Nginx常用命令:

nginx.exe -s stop    //快速终止服务器,可能不保存相关信息
nginx.exe -s quit    //完整有序停止服务器,保存相关信息
nginx.exe -s reload  //重新载入Nginx,当配置信息修改,需要重新载入这些配置时使用此命令

1.5 查看Nginx状态

在浏览器地址栏输入http://localhost:9091/stat(如果改变了端口,记得改变访问链接端口号),可以看到服务器状态信息
Nginx状态

2 FFmpeg推流

2.1 下载FFmpeg

下载FFmpeg
下载
选择一个版本下载
选择一个版本下载
下载解压后在bin目录中找到这三个exe文件,复制路径即可。
exe文件

2.2 配置FFmpeg环境变量

找到我的电脑→右击→属性→选择【高级系统设置】–>弹出框中选择【环境变量-】→找到【path】双击→弹出框中选择 【新建】→将复制的bin文件夹的路径粘贴进来点击保存
配置环境变量

2.3 验证FFmpeg配置

打开命令行界面输入ffmpeg –version,如果出现FFmpeg版本说明配置成功。
验证FFmpeg配置

3 视频推流

3.1 OBS推流

OBS下载地址
OBS配置
分为四步:

  1. 添加场景
    软件默认有一个场景,我们可以不用再去添加,直接去步骤2添加来源即可

  2. 添加来源
    可以添加显示器捕获、视频捕获、音频捕获、媒体源等,此处根据需要进行选择。
    将本地视频作为媒体源进行推流
    媒体源配置

  3. 推流设置
    推流设置

  • 服务:自定义
  • 服务器: rtmp://127.0.0.1:1935/live
  • 串流秘钥: 123456
  1. 开始推流
    点击开始推流按钮
    开始推流

  2. 查看Nginx服务器状态
    打开浏览器输入http://localhost:9091/stat可以看到推流信息
    推流信息
    推流的视频会暂存在Nginx配置的暂存地址中,123456是OBS中配置的串流密码。
    推流视频暂存地址

3.2 FFmpeg推流

ffmpeg -re -stream_loop -1 -i ./flow1.mp4 -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -q 10 rtmp://127.0.0.1:1935/hls/flow1
  • -re: 使 ffmpeg 在读取输入文件时模拟实时流。这意味着它将以恒定的速度发送数据包,就像它在实时接收数据一样。
  • -stream_loop -1: 这个选项让 ffmpeg 无限循环播放输入文件。如果没有这个选项,ffmpeg 只会播放一次源文件然后停止。
  • -i ./flow1.mp4: 指定输入文件的位置和名称,在这里就是当前目录下的 flow1.mp4 文件。
  • -vcodec libx264: 设置输出视频编解码器为 H.264,使用的是 x264 库来编码视频。
  • -vprofile baseline: 设置视频的配置文件为 Baseline Profile,这通常用于兼容性要求较高的场景,如移动设备或一些老的硬件。
  • -acodec aac: 设置音频编解码器为 AAC(Advanced Audio Coding)。
  • -ar 44100: 设置音频采样率为 44.1 kHz,这是 CD 音质的标准采样率。
  • -strict -2: 允许使用所有 AAC 规范允许的工具,即使某些工具可能不完全符合 MPEG-4 标准。
  • -ac 1: 设置输出音频的声道数为单声道(1 通道)。
  • -f flv: 设置输出格式为 FLV(Flash Video),这是一种常用的流媒体格式。
  • -q 10: 设置视频质量等级为 10,数值范围通常是 1 到 31,数值越小质量越高。
  • rtmp://127.0.0.1:1935/hls/flow1: 这是 RTMP 推流的目标地址,表示将流媒体数据发送到本地主机的 1935 端口上的 /hls/flow1 路径。(这就是文件暂存在Nginx配置的目录的flow1文件夹中)

输入FFmpeg命令:
输入命令
查看Nginx服务器情况:
查看推流情况
推流视频暂存文件位置:
推流视频暂存位置

4 VLC拉流

4.1 VLC

VLC下载
下载按照后就可以直接使用了!

4.2 打开网络串流配置,获取视频流

打开网络串流配置
配置VLC的网络URL:rtmp://127.0.0.1:1935/hls/flow1

  • rtmp://: 这是一个协议前缀,表明接下来的部分是一个 RTMP 地址。
  • 127.0.0.1: 这是 IP 地址,指代本地主机(即运行应用程序的同一台计算机)。你可以用实际服务器的 IP 地址或域名替换这个地址。
  • 1935: 这是端口号,RTMP 流服务通常运行在这个端口上。不过,根据实际服务器的配置,这个端口号也可以是其他数字。
  • /hls/: 这是应用程序名,用来标识 RTMP 服务器上运行的应用程序或服务。(就是Nginx配置的hls)
  • flow1: 这是流名称或流键,用来唯一标识从客户端发送到服务器的流或从服务器接收的流。
    配置网络URL
    点击播放,即可获取推流视频。
    播放视频

4.3 视频流URL

通过Http链接访问视频流

  • http://127.0.0.1:9091/hls/flow1/index.m3u8

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

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

相关文章

vue3+PPTXjs 在线ppt预览

- 使用PPTXjs做ppt预览,有完整的代码包,基于jquery - vue3使用iframe引入用于预览ppt的网页,通过url参数传递需要预览的ppt链接 - 通过网页选择文件上传也可以通过下面的函数把文件转换成链接,实现在文件上传到服务器前就可以预…

【深度强化学习】DDPG实现的4个细节(OUNoise等)

文章目录 前言一、论文内容简述创新点(特点,与DQN的区别):可借鉴参数:细节补充: 二、细节1:weight_decay原理代码 三、细节2:OUNoise原理代码 四、细节3:ObsNorm原理代码…

PostgreSQL分区表,实战细节满满

📢📢📢📣📣📣 作者:IT邦德 中国DBA联盟(ACDU)成员,10余年DBA工作经验, Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主,全网粉丝10万 擅长主流Oracle、My…

茄子病虫害数据集。四类:果肉腐烂、蛀虫、健康、黄斑病。4000张图片,已经按照8:2的比例划分好训练集、验证集 txt格式 含类别yaml文件 已经标注好

茄子病虫害数据集。可用于筛选茄子品质、质量,训练采摘机器人视觉算法模型……数据集大部分图片来源于真实果园拍摄的图片(生长在果树之上的),图片分辨率高,数据集分为四类:果肉腐烂、蛀虫、健康、黄斑病。…

如何使用ssm实现基于Java的民宿预订管理系统的设计与实现

TOC ssm773基于Java的民宿预订管理系统的设计与实现jsp 绪论 1.1课题研究背景意义 随着科技的发展,计算机的应用,人们的生活方方面面都和互联网密不可分。计算机的普及使得人们的生活更加方便快捷,网络也遍及到我们生活的每个角落&#x…

Vue - 打包部署

vscode找到NPM脚本,点击build。 目录下出现dist目录则表示安装成功。 安装Nginxnginx: download 目录用途conf配置文件目录html静态资源文件目录logs日志文件目录temp临时文件目录 将刚刚打包好的文件放到html目录下。 点击nginx.exe,用localhost:默认…

Windows应急响应-QQ巨盗病毒

文章目录 病毒背景样本分析开启监控感染病毒分析病毒行为C盘文件监控D盘文件监控进程监控排查服务排查启动项排查 查杀1.杀掉进程2.异常服务3.映像劫持处理4.hosts文件处理5.D盘文件删除6.其他异常排查 重启排查 病毒背景 简介:Win32.PSWTroj.QQPass,名…

模拟退火算法简介

什么是模拟退火算法? 模拟退火算法(Simulated Annealing,SA)是一种基于随机化搜索的优化算法,灵感来源于金属退火过程。在金属制造中,金属被加热到高温并缓慢冷却,这一过程可以减少内部缺陷&am…

【前端】-音乐播放器(源代码和结构讲解,大家可以将自己喜欢的歌曲添加到数据当中,js实现页面动态显示音乐)

前言:音乐播放器是前端开发中的一个经典项目,通过它可以掌握很多核心技术,如音频处理、DOM操作、事件监听、动画效果等。这个项目不仅能提升前端开发的技能,还能让开发者深入理解JavaScript与HTML的协同作用。 页面展示&#xff1…

精准选择大模型:消费品行业的营销与体验创新之路

在消费品行业,大模型技术的引入正逐渐从一个新兴趋势转变为行业标配。随着人工智能的快速发展,特别是OpenAI等领军企业推出的创新技术,如Sora,大模型在市场营销、消费者行为分析、个性化推荐等方面展现出巨大潜力。然而&#xff0…

基础算法(5)——位运算

1. 常见位运算总结 1) 基础位运算 2) 给一个数 n,确定它的二进制表示中的第 x 位是 0 还是 1 3) 将一个数 n 的二进制表示的第 x 位修改成 1 4) 将一个数 n 的二进制表示的第 x 位修改成 0 5) 位图的思想 位图的本质就是 哈希表 6) 提取一个数 n 二进制表示中最右…

如 有 任 何 问 题 ,请 及 时 联 系 我 们 反 馈 !

如有任何问题, 请及时联系我们反馈 !https://support.qq.com/products/671606 如有任何问题, 请及时联系我们反馈 !

Bluetooth Channel Sounding中关于CS Procedure的详细介绍

目录 BLE CS 过程定义: BLE CS 过程的组成部分 开始一个BLE CS 过程 与BLE CS过程相关的参数设置 BLE CS 过程定义: BLE 的CS特性包含一组LL层和空口协议的组合过程,该过程可以使得两个BLE 设备以紧密互锁的方式,在多个信道上…

Ubuntu 上安装 MySQL 并且实现远程登录

目录 1. 安装MySQL 2. 安全配置MySQL 3. 配置MySQL远程登录 3.1. 允许远程连接 3.2. 重启MySQL服务 3.3. 为用户分配远程访问权限 进入MySQL后,执行以下命令: 3.4. 创建新用户 3.5. 授予权限 3.6. 刷新权限 3.7. 退出 MySQL 控制台 4. 配置防火…

2024.9月29日~10月6日 SSM框架项目-《电信资费管理系统》

一、数据库介绍: 1、account:帐务信息表 2、admin_info:管理员信息表 3、admin_role:管理员角色信息表 4、cost:资费信息表 5、privilege_info:权限信息表 6、role_info:角色信息表 7、role_pri…

在CentOS7上安装mysql

目录 1.下载安装文件 2.上传到CentOS7上 3.解压MySQL文件 4.清理系统中残留的MySQL 5.安装MySQL 6.启动MySQL 并 设置开机自启动 7.查找临时密码,并修改密码 注意: 教程:在Linux上安装mysql(超详细版)_哔哩哔哩…

人工智能新闻和发展 (24001)- By 10/4/2024

1. 谷歌增强了搜索中的人工智能,允许对图像进行语音提问。 Google adding AI to answer voiced questions about images | AP NewsGoogle is pumping more artificial intelligence into its search engine. New features will enable people to voice questions a…

[C#]使用onnxruntime部署yolov11-onnx实例分割模型

【官方框架地址】 https://github.com/ultralytics/ultralytics.git 【算法介绍】 在C#中使用ONNX Runtime部署YOLOv11-ONNX实例分割模型,涉及到模型的加载、数据预处理、模型推理和后处理几个关键步骤。 首先,需要确保已经安装了ONNX Runtime的NuGe…

【数据结构】【链表代码】随机链表的复制

/*** Definition for a Node.* struct Node {* int val;* struct Node *next;* struct Node *random;* };*/typedef struct Node Node; struct Node* copyRandomList(struct Node* head) {if(headNULL)return NULL;//1.拷贝结点,连接到原结点的后面Node…

[Linux] 进程创建、退出和等待

标题:[Linux] 进程创建、退出和等待 个人主页水墨不写bug (图片来源于AI) 目录 一、进程创建fork() 1) fork的返回值: 2)写时拷贝 ​编辑3)fork常规用法 4&#xff…