当前位置: 首页 > article >正文

Windows搭建RTMP服务器

 

这里写自定义目录标题

  • 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.kler.cn/news/335699.html

相关文章:

  • SpringBoot:让开发更加简单
  • 爬虫案例——爬取情话网数据
  • 程序bug的修复
  • C# 文件与文件夹操作指南:深入探索流、文件流及文件夹管理
  • ReGCL Rethinking Message Passingin Graph Contrastive Learning
  • Python知识点:如何使用Edge Impulse与Python进行机器学习模型部署
  • 实现mnist手写数字识别
  • Elasticsearch——数据聚合、数据同步与集群搭建
  • vscode提交修改Failed to connect to github.com port 443: Timed out
  • 研究生系统化入门教程(四)【机器学习】分类算法:决策树(信息熵,信息增益);集成学习方法之随机森林:估计器的工作流程是什么?为何采用BootStrap抽样?
  • Redis:cpp.redis++通用接口
  • Prometheus+Grafana备忘
  • T-Sql分支判断语句
  • 排版套料系统设计说明
  • 算法修炼之路之二分查找
  • 影刀RPA实战:Excel拆分与合并工作表
  • cnn突破五(三层bpnet网络公式)
  • Python(四)——元组
  • No.8 笔记 | SQL 查询语句:数据探索的钥匙
  • STM32PWM应用