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应用hlslive 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-mpegURLvideo/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.rhkb.cn/news/440143.html

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

相关文章

4款专业电脑数据恢复软件,帮你保障数据安全。

电脑里面会出现的数据丢失场景有很多,像硬盘故障、回收站清空、电脑格式化、系统崩溃、病毒入侵等等;如果发现数据丢失后,建议应停止使用电脑,避免新的数据写入覆盖丢失的数据。然后再尝试进行数据找回,如果想自己进行…

合肥企业参访:走进联想合肥智能制造基地参观学习

跟随华研标杆游学高丽华高老师去到联想参观游学 联想合肥智能制造基地成立于2011年,是联想集团全球蕞大的PC研发和制造基地,也是智能制造示范基地。基地占地约500亩,拥有全球PC制造业蕞大的单体厂房以及业界主板、整机生产线。在这里&#xf…

RTSP作为客户端 推流 拉流的过程分析

之前写过一个 rtsp server 作为服务端的简单demo 这次分析下 rtsp作为客户端 推流和拉流时候的过 A.作为客户端拉流 TCP方式 1.Client发送OPTIONS方法 Server回应告诉支持的方法 2.Client发送DESCRIPE方法 这里是从海康摄像机拉流并且设置了用户名密码 Server回复未认证 3.客…

数据结构-3.5.队列的顺序实现

一.队列的顺序实现&#xff0c;初始化操作以及判断队列是否为空&#xff1a; 1.图解&#xff1a; 2.代码&#xff1a; #include<stdio.h> #define MaxSize 10 //定义一个队列最多存储的元素个数 ​ typedef struct {int data[MaxSize]; //用静态数组存放队列元素int f…

使用Buildpacks构建Docker镜像

## 使用Buildpacks构建Docker镜像 ![](../assets/运维手册-Buildpacks-Buildpacks.io.png) ### Buildpacks简介 与Dockerfile相比&#xff0c;Buildpacks为构建应用程序提供了更高层次的抽象。具体来说&#xff0c;Buildpacks&#xff1a; * 提供一个平衡的控制&#xff0c;…

emp.dll丢失损坏怎么办,总结6个解决emp.dll丢失的方法

我们在用电脑的时候&#xff0c;经常会碰到各种各样的问题&#xff0c;其中一个就是emp.dll丢失或缺失。这个东东可是Windows操作系统中非常重要的一个动态链接库文件哦&#xff0c;它是负责管理一些重要系统功能的。假如这个文件丢了&#xff0c;很可能会导致程序无法正常运行…

小程序图片资源等使用阿里服务链接更新问题

同名更换图片&#xff0c;小程序无需发版本更新&#xff0c;存在图片缓存问题解决方法 修改Cache-Control参数即可

深度解析:Python蓝桥杯青少组精英赛道与高端题型概览

目录 一、蓝桥杯青少组简介二、赛项组别与年龄范围三、比赛内容与题型1. 基础知识范围2. 题型设置2.1 选择题2.2 编程题 3. 考试时长 四、奖项设置与激励措施五、总结 一、蓝桥杯青少组简介 蓝桥杯全国软件和信息技术专业人才大赛&#xff08;简称“蓝桥杯”&#xff09;是由工…

【Qt+Python项目构建】- 01-首次配置 Qt Creator 14.01 for Python

前言&#xff1a; 如何用QT实现Python的配置的交互界面。本文从0开始&#xff0c;进行实践的介绍。 在上一节里面&#xff0c;我们做了社区版本的配置&#xff1a; https://blog.csdn.net/yellow_hill/article/details/142597007?spm1001.2014.3001.5501 这一节&#xff0…

【C++11】新特性

前言&#xff1a; C11 是C编程语言的一个重要版本&#xff0c;于2011年发布。它带来了数量可观的变化&#xff0c;包含约 140 个新特性&#xff0c;以及对 C03 标准中约600个缺陷的修正&#xff0c;更像是从 C98/03 中孕育出的新语言 列表初始化 C11 中的列表初始化&#xff0…

探索Kimi:用Spring Boot + Vue打造现代网站

在数字化时代&#xff0c;网站成为了企业和个人展示自己的窗口。今天&#xff0c;我将带你一起探索如何利用Spring Boot和Vue.js这两个强大的技术栈&#xff0c;结合Kimi的智能助手功能&#xff0c;来构建一个现代的网站。这不仅是一个技术分享&#xff0c;更是一次实战演示&am…

ubuntu22.04桌面美化

文章目录 原桌面自动隐藏任务栏图标居中去除桌面上的Home文件夹去除硬盘图标和垃圾箱图标壁纸网站 原桌面 自动隐藏任务栏图标居中 效果&#xff1a; 去除桌面上的Home文件夹 去除硬盘图标和垃圾箱图标 壁纸网站 https://hdqwalls.com/wallpaper/3840x2160/cherry-blossom-p…

【C++】二叉搜索树+变身 = AVL树

&#x1f680;个人主页&#xff1a;小羊 &#x1f680;所属专栏&#xff1a;C 很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~ 目录 前言一、AVL树二、AVL树的实现2.1 平衡因子2.2 旋转处理2.2.1 左单旋&#xff1a;插入新节点后单纯的右边高2.2.2 …

MySQL--聚合查询、联合查询、子查询、合并查询(上万字超详解!!!)

目录 一、前言二、聚合查询2.1 聚合函数2.1.1 COUNT():统计所有行2.1.2 SUM(列名) 求和2.1.3 AVG()2.1.4 MAX()、MIN() 2.2 GROUP BY子句&#xff08;分组查询&#xff09;2.3 HAVING 三、联合查询3.1表的笛卡儿积3.2内连接3.2.1 例题一3.2.2 例题二 3.3外连接3.3.1 右外连接3.…

使用 Python 遍历文件夹

要解决这个问题&#xff0c;使用 Python 的标准库可以很好地完成。我们要做的是遍历目录树&#xff0c;找到所有的 text 文件&#xff0c;读取内容&#xff0c;处理空行和空格&#xff0c;并将处理后的内容合并到一个新的文件中。 整体思路&#xff1a; 遍历子目录&#xff1…

ConcurrentHashMap在JDK1.7和1.8的区别,详解

目录 1.了解HashMap底层插入原理 2.ConcurrentHashMap 是什么&#xff1f; HashTable的实现 3.ConcurrentHashMap 1.7和1.8的区别 4、JDK1.7 中的ConcurrentHashMap实现原理 6、JDK1.8中的ConcurrentHashMap 7.链表转红黑树条件 1.8 put方法 8.并发扩容 9.总结 首先呢…

Vite多环境配置与打包:

环境变量必须以VITE开头 1.VITE_BASE_API&#xff1a; 在开发环境中设置为 /dev-api&#xff0c;这是一个本地 mock 地址&#xff0c;通常用于模拟后端接口。 2.VITE_ENABLE_ERUDA&#xff1a; 设置为 "true"&#xff0c;表示启用调试工具&#xff0c;通常是为了…

Android Framework AMS(01)AMS启动及相关初始化1-4

该系列文章总纲链接&#xff1a;专题总纲目录 Android Framework 总纲 本章关键点总结 & 说明&#xff1a; 说明&#xff1a;本章节主要涉及systemserver启动AMS及初始化AMS相关操作。同时由于该部分内容分析过多&#xff0c;因此拆成2个章节&#xff0c;本章节是第一章节&…

用户在网页上输入一个网址,它整个页面响应的流程是什么?

目录 一、流程的大致过程 二、流程的详细分析 1. 浏览器先分析超链接中的URL 2. DNS解析 3. 建立TCP连接 建立连接&#xff08;三次握手&#xff09; HTTP中的请求报文 4. 浏览器发送HTTP请求 5. 服务器处理请求并发送响应 HTTP的响应报文 6. 浏览器接收响应 7. 渲…

音视频入门基础:FLV专题(12)——FFmpeg源码中,解析DOUBLE类型的ScriptDataValue的实现

一、引言 从《音视频入门基础&#xff1a;FLV专题&#xff08;9&#xff09;——Script Tag简介》中可以知道&#xff0c;根据《video_file_format_spec_v10_1.pdf》第80到81页&#xff0c;SCRIPTDATAVALUE类型由一个8位&#xff08;1字节&#xff09;的Type和一个ScriptDataV…