Windows本地搭建rtmp推流服务

前言

开发时偶尔需要使用rtmp直播流做视频流测试,苦于网上开源的rtmp视频流都已经失效,无奈只好尝试在本地自己搭建一个rtmp的推流服务,方便测试使用。

一、工具准备

  1. Nginx:使用nginx-rtmp-win64
  2. 推流工具FFmpeg:官方下载地址
  3. 拉流工具VLC:下载地址

二、搭建说明

1. Nginx的安装使用

做rtmp推流服务的nginx需要包含有rtmp模块,官方的Nignx中没有包含rtmp模块,需要自行下载rtmp模块并安装编译。上面的Nginx版本已经包含了rtmp模块,无需自己重新编译。

  • 下载nginx-rtmp-win64的zip包,解压到本地文件夹中,或者通过git直接拉取到本地。
  • 修改配置文件。打开conf文件夹下的nginx.conf文件。在文件中添加rtmp配置块,可放在http配置块的上面。
rtmp {           
     server {                     
         listen 1935;         
         application live { // live是推流路径的名字              
             live on;         
         }    
     }  
} 
  • 保存配置文件,并启动Nginx。在命令行中输入
start nginx.exe
  • Windows下Nginx的启动、停止等命令汇总
// 1.启动  
start nginx.exe  
nginx.exe // 这种会让cmd窗口一直处于执行中,不能进行其他命令操作  
// 2.停止  
nginx.exe -s stop // 快速停止nginx,可能不保存相关信息;  
nginx.exe -s quit // quit是完整有序的停止nginx,并保存相关信息  
// 3.重新载入Nginx  
nginx.exe -s reload  
// 4.重新打开日志文件  
nginx.exe -s reopen  
// 5.查看Nginx版本  
nginx.exe -v
  • 打开浏览器输入“127.0.0.1”查看nginx是否启动成功。能看到下面的内容即nginx已经启动成功。

2. FFmpeg的安装使用

  • 从FFmped官网下载FFmpeg

  • 下载后在bin文件夹下找个三个exe文件

  • 接下来编写一个简单的批处理脚本,使用ffmpeg做推流。
    • 首先将要推流的视频资源放到ffmpeg.exe的同级目录下,然后创建一个bat文件。

  • 使用编辑器打开批处理文件,写入如下的批处理命令
ffmpeg -re -stream_loop -1 -i .\test.mp4 -vcodec libx264 -acodec aac -f flv  rtmp://127.0.0.1:1935/live/hls
    • -stream_loop:设置输入流的循环次数,-1表示一直循环,0表示不循环。因为我的测试视频较短,故设置一直循环。
    • -i:设置输入流
    • -vcodec:设置视频编解码器
    • -acodec:设置音频编解码器
    • "rtmp://127.0.0.1:1935/live/hls":
      • 127.0.0.1:1935:即nginx的服务器地址及端口,开始推流时要先运行nginx服务器。
      • live:是nginx中配置的推流的路径
      • hls:是自定义的推流地址,拉流时加上此地址即可。
  • 编写好后,在控制台中或者双击启动此批处理。

3. 使用VLC做拉流测试

  • 从官网下载安装VLC

  • 安装后启动,点击媒体->打开网络串流

  • 输入我们使用nginx创建的推流服务地址
rtmp://127.0.0.1:1935/live/hls

  • 验证推流成功

由于是本地推流,拉流地址中的127.0.0.1也可以使用localhost代替。可能偶尔会出现拉流在播放但是黑屏的情况,此时可以停掉批处理的推流服务,重新推流试试。重开后拉流播放器也需要重新拉流。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

el-table 表格表头、单元格、滚动条样式修改

.2023.11.21今天我学习了如何对el-table表格样式进行修改&#xff0c;如图&#xff1a; 运用的两个样式主要是 1.header-cell-class-name&#xff08;设置表头&#xff09; 2.class-name&#xff08;设置行单元格&#xff09; 代码如下&#xff1a; <el-table :data&quo…

一份全面「梳理LLM幻觉问题」的综述

文章目录 一文全面梳理「LLM 幻觉问题」1. 幻觉的分类2. 幻觉的来源2.1 幻觉来自数据2.2 幻觉来自训练2.3 幻觉来自生成/推理 3. 幻觉的检测3.1 事实性幻觉的检测3.2 忠实性幻觉的检测 4. 幻觉的评估5. 幻觉的解决 一文全面梳理「LLM 幻觉问题」 相信大家在使用ChatGPT或者其他…

【开源】基于JAVA的学生日常行为评分管理系统

项目编号&#xff1a; S 010 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S010&#xff0c;文末获取源码。} 项目编号&#xff1a;S010&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、系统设计2.1 功能模块设计2.2.1 登录注册模块2.2…

【Odoo条码】Odoo中二维码或者条码应用场景(生成条码、解释条码)

在本文中&#xff0c;我们将编写一个简短的脚本来使用 Python 生成条形码。我们将使用 python-barcode 模块&#xff0c;它是 pyBarcode 模块的一个分支。该模块为我们提供了以 SVG 格式生成条形码的功能。 Pillow 是生成图像格式(如 png 或 jpg)条码所必需的。 需要的模块 p…

RESTful API 设计指南——为什么要用(上)

引言 在上一篇中&#xff1a;RESTful API 设计指南——开篇词 我们介绍了几个十分有争议的案例&#xff1a; 所有的接口都使用Post请求不管成功还是失败&#xff0c;HTTP状态码都返回200API命名千奇百怪 本章我们来深入分析一下&#xff0c;为什么不要像案例中所说的那样干…

基于 Glibc 版本升级的 DolphinDB 数据查询性能优化实践

在高并发查询、查询需要涉及很多个分区的情况下&#xff0c;低版本的 glibc&#xff08;低于2.23&#xff09;会严重影响查询性能。需要升级 glibc 解决该问题优化性能。我们撰写了本文&#xff0c;通过 patchelf 工具修改可执行文件和动态库的 rpath&#xff0c;达到无需升级系…

火爆全球的生成式AI,为创业者带来了哪些机遇?

众所周知&#xff0c;由生成式AI&#xff08;Artificial Intelligence Generated Content&#xff0c;也称AIGC&#xff09;和大语言模型引发的人工智能热潮正在席卷全球。其给整个科技产业带来的巨大变革&#xff0c;不亚于当年云计算的横空出世。 来自麦肯锡的《生成式人工智…

kubernetes测试部署一个nginx

在kubenetes集群中部署一个nginx程序测试集群是否能正常工作 #部署nginx程序 [rootmaster ~]# kubectl create deployment nginx --imagenginx:1.18-alpine #开放端口 [rootmaster ~]# kubectl expose deployment nginx --port80 --typeNodePort #查看pod状态 [rootmaster …

Thinkphp6实现定时任务功能

本文主要介绍命令启动定时任务的功能&#xff0c;按照CRMEB标准版的程序为大家详细的进行实现过程的介绍 首先创建安装Worker&#xff0c;执行composer require topthink/think-worker 安装在config/console.php中定义指令 timer > \crmeb\command\Timer::class 3. 对应图1…

sortablejs拖拽后新增和删除行时顺序错乱

问题描述&#xff1a;如下图所示&#xff0c;使用sortablejs拖拽后&#xff0c;在序号2后新增行会出现新增行跑到第一行的错误顺序。 解决&#xff1a;在进行拖拽后&#xff0c;对表格数据进行清空重新赋值。

【STL】string类(中)

目录 1&#xff0c;rbegin 和 rend 2&#xff0c;reserve & capacity 3&#xff0c;max_size ( ) 4&#xff0c;size&#xff08;&#xff09;& resize 1&#xff0c;void resize (size_t&#xff0c;char c&#xff09; 5&#xff0c;push_back & append 1…

PHP/Laravel通过经纬度计算距离获取附近商家

实际开发中,常常需要获取用户附近的商家,思路是 获取用户位置(经纬度信息)在数据库中查询在距离范围内的商家 注: 本文章内计算距离所使用地球半径统一为 6378.138 km public function mpa_list($latitude,$longitude,$distance){// $latitude 34.306465;// $longitude 10…

海外服务器相较于国内服务器有何特点?亚马逊海外服务器为何零跑全球

随着数字时代的迅猛发展&#xff0c;云计算基础设施的重要性愈发凸显。在这个信息爆炸的全球化时代&#xff0c;很多企业的海外业务的成功往往取决于是否拥有安全、可靠、高性能、可扩展、灵活且全球覆盖的云基础设施&#xff0c;因此对很多企业来说&#xff0c;选择一款优质的…

谈谈Redis中的多路复用

目录 前言 什么是多路服用 Redis中的多路复用 Redis单线程&#xff1f;多线程&#xff1f; 前言 redis是单线程的&#xff08;不严谨的讲法的哈&#xff09;&#xff0c;为什么还这么快&#xff0c;很多人相信会回答因为redis是基于内存操作的, 内存的读写速度是非常快的。…

【工具与中间件】IDEA工具的使用:热部署、快捷键与版本控制

文章目录 0. 前言1. IDEA 配置热部署2. IDEA 常用快捷键3. IDEA 绑定GIT4. 小结 IDEA工具配置热部署&#xff0c;让我们的开发更有效率 0. 前言 以下是水文字&#xff0c;心急的读者可以直接阅读下面的章节。 有时&#xff0c;新&#xff0c;先进的东西确实可以给这个时代的…

微信小程序校园运动场预约系统xuvvt

本论文的内容是关于运动场预约&#xff0c;主要内容不仅包括了小程序的分析和设计还对几个主要模块进行详细阐述与分析。此微信小程序运动场预约分为管理员操作和教师操作、学生操作。学生的操作主要是可以在网页上浏览到场地信息、运动视频、心情动态等功能&#xff0c;用户可…

什么是代码签名证书?

代码签名证书&#xff08;Code Signing Certificate&#xff09;是为了保证软件源码完整性而存在的数字签名形式之一。它由可信任的第三方认证机构颁发&#xff0c;并且能够验证软件开发者的真实身份。以下是有关代码签名证书的详细解释。 如何使用代码签名证书&#xff1f; …

Python的运算

按照下面要求&#xff0c;在ide中运行&#xff0c;看看得到的结果和用小学数学知识运算之后得到的结果是否一致 >>> 25 7 >>> 5-2 3 >>> 10/2 5 >>> 5*2 10 >>> 10/51 3 >>> 2*3-4 2 上面的运算中&…

什么是加工制造业ERP系统?加工制造业ERP软件有哪些作用

化工、电子、五金、来料加工等不同性质的加工企业有差异化的业务特点&#xff0c;传统的管理模式难以解决多仓库、多工厂、多门店、多渠道信息统一和实时共享等问题。 另外如何实时掌握车间产能、科学制定生产计划、多门店数据统一和实时同步等问题&#xff0c;是很多加工制造…

利用OpenCV实现图片中导线的识别

下面是一个需求&#xff0c;识别图片中的导线&#xff0c;要在图像中检测导线&#xff0c;我们需要采用不同于直线检测的方法。由于OpenCV没有直接的曲线检测函数&#xff0c;如同它对直线提供的HoughLines或HoughLinesP&#xff0c;检测曲线通常需要更多的图像处理步骤和算法&…