Windows搭建RTMP视频流服务(Nginx服务器版)

文章目录

  • 引言
  • 1、安装FFmpeg
  • 2、安装Nginx服务器
  • 3、实现本地视频推流服务
  • 4、使用VLC或PotPlayer可视化播放器播放视频
  • 5、RTSP / RTMP系列文章

引言

RTSP和RTMP视频流的区别

  1. RTSP (Real-Time Streaming Protocol)实时流媒体协议。 RTSP定义流格式,流数据经由RTP传输;RTSP实时效果非常好,适合视频聊天,视频监控等方向。
  2. RTMP(Real Time Message Protocol)实时消息协议。 用来解决多媒体数据传输流的多路复用(Multiplexing)和分包(packetizing)的问题,优势在于低延迟,稳定性高,支持所有摄像头格式,浏览器加载 flash插件就可以直接播放。
  3. RTSP是服务器端推送到客户端,而RTMP是点对点传输。
  4. RTSP是基于UDP或TCP,传输数据时具有较小的延迟,可用于实时流媒体的传输。
  5. RTMP是基于TCP,具有高可靠性,能够自动重连,即使在网络环境不稳定时也能够保证流媒体传输的质量。
  6. RTSP也支持多种编码格式,但通常只用于传输单个音视频轨道。RTMP支持多种编码格式,包括H.264和AAC等,支持多个音视频轨道。
  7. RTSP旨在建立和维护原始数据源(客户端)和流服务器之间的连接,允许控制流媒体服务器内的娱乐和通信系统,允许暂停和播放功能。RTMP支持整合文本、视频和音频,支持MP3和AAC音频流,也支持MP4、FLV和F4V视频。

推流和拉流的区别

  1. 推流:指的是将摄像头、屏幕等设备上的数据通过网络传输到服务器,并由服务器进行处理、存储或直播。比如,在进行网络直播时,主播需要将自己的摄像头数据通过网络上传到服务器,这个过程就是推流。
  2. 拉流:指的是从服务器上获取视频流并在本地播放的过程,也叫做播放。 比如,在观看网络上的直播时,用户需要从服务器上获取视频流才能进行观看,这个过程就是拉流。

FFmpeg概念

FFmpeg是将音频和视频转为流的开源计算机程序。

EasyDarwin实现RTSP视频流服务步骤

  1. 安装FFmpeg
  2. 安装EasyDarWin
  3. 启动本地摄像头
  4. 使用VLC或PotPlayer可视化播放器播放视频

1、安装FFmpeg

下载FFmpeg并配置环境 ,执行 ffmpeg -version 测试安装是否成功。

  1. FFmpeg官网
  2. 下载好的FFmpeg版本

在这里插入图片描述
在这里插入图片描述

成功配置ffmpeg版本:

在这里插入图片描述

2、安装Nginx服务器

  • Nginx 是一个高性能的HTTP和反向代理轻量级web服务器,同时也提供了IMAP/POP3/SMTP服务。
  • 在Nginx官网上下载的Nginx是不带RTMP模块的。所以本文需要下载Gryphton版本的Nginx服务器,即RTMP服务器就是基于Nginx开发的module
  • nginx 1.7.11.3 Gryphon该版本Nginx包含RTMP组件,通过RTMP组件,提供流媒体服务,让Nginx成为RTMP流媒体服务器。
  • Nginx——其他window版本下载

实现

1、下载Nginx

  • 下载[nginx 1.7.11.3 Gryphon](http://nginx-win.ecsds.eu/download/nginx 1.7.11.3 Gryphon.zip),解压nginx 1.7.11.3 Gryphon.zip

![

2、下载trmp压缩包

  • 下载nginx-rtmp-module,将nginx-rtmp-module-master.zip解压到nginx 1.7.11.3 Gryphon目录中,并重命名文件夹为nginx-rtmp-module

在这里插入图片描述](https://img-blog.csdnimg.cn/direct/f1e7c424a9244617882f38448d7042ee.png)

在这里插入图片描述
在这里插入图片描述

3、进入nginx 1.7.11.3 Gryphon文件夹的conf目录下, 创建并编辑 nginx.conf 文件

worker_processes  2;events {worker_connections  8192;
}rtmp {server {listen 1935;#监听端口,若被占用,可以更改chunk_size 4000;#上传flv文件块儿的大小application live { #创建一个叫live的应用live on;#开启live的应用allow publish 127.0.0.1;#allow play all;}}
}http {include       mime.types;default_type  application/octet-stream;sendfile        off;#tcp_nopush     on;server_names_hash_bucket_size 128;## Start: Timeouts ##client_body_timeout   10;client_header_timeout 10;keepalive_timeout     30;send_timeout          10;keepalive_requests    10;
## End: Timeouts ##server {listen       80;server_name  localhost;location / {root   html;index  index.html index.htm;}}}

在这里插入图片描述

4、启动RTMP服务器

打开CMD,进入nginx 1.7.11.3 Gryphon目录下,执行如下指令,检查nginx的配置文件是否正确。

nginx.exe -t

在这里插入图片描述

启动nginx服务器

start nginx 命令的作用是载入缺省./conf/nginx.conf配置文件,启动nginx。

start nginx

采用别的配置去开启nginx命令如下

nginx.exe -c conf\nginx-win.conf

如何停止nginx服务器?

打开cmd,输入如下命令

taskkill /f /im  nginx.exe

3、实现本地视频推流服务

步骤

  1. 准备一个视频放到FFmpeg文件夹下
  2. FFmpeg实现推流

实现

1、准备一个视频放到FFmpeg\bin文件夹下

在这里插入图片描述

2、FFmpeg实现推流

语法

ffmpeg -re -stream_loop -1 -i 视频文件.mp4 -c copy -f flv 播放地址

播放地址根据nginx.conf文件一一对应,如本文实现推流地址为 rtmp://127.0.0.1:1935/live/test

配置好FFmpeg环境,直接打开 cmd 输入如下命令,如果没配置FFmpeg环境,需要来到FFmpeg\bin目录下。

ffmpeg -re -stream_loop -1 -i 测试视频.mp4 -c copy -f flv rtmp://127.0.0.1:1935/live/test

在这里插入图片描述

要想在推流指令中使用其它推流目录,比如改为使用“ mydir ”,就在 nginx.conf1 修改 live ==》 mydir

可以看到这里的数值在动,就说明推流成功了

在这里插入图片描述

4、使用VLC或PotPlayer可视化播放器播放视频

  1. 方式一:下载PotPlayer播放器,任意一个浏览器,输入播放地址 rtmp://127.0.0.1:1935/live/test,回车,打开PotPlayer播放。
  2. 方式二:打开PotPlayer,右下角选择【添加】—【添加链接】—【填写播放地址】

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.方式三:下载 VLC播放器,选择【媒体】—【打开网络串流】—【网络】,粘贴地址,【播放】即可。
在这里插入图片描述

在这里插入图片描述

5、RTSP / RTMP系列文章

1.Windows搭建RTSP视频流服务(EasyDarWin服务器版)

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

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

相关文章

2023总结与展望--Empirefree

今年一篇博客都没写过了,好像完全在忙在工作和生活上面了,珍惜自我,保持热情,2024对我好点 文章目录 🔥1. 年终总结1.1.学习工作计划1.2. 生活计划1.3 个人总结 🔥2. 未来展望 🔥1. 年终总结 1…

MySQL函数、AVG | MIN | MAX | COUNT | SUM、慢查询

MySQL函数、慢查询 1、函数1.日期函数2.两个日期的时间差3.查询距离时间的间隔时间4.常用的字符串函数5.常用的数学函数6.常用的聚合函数 2、慢查询1.什么是慢查询? 从需求出发,在数据的操作过程中经常会有以下的问题;求和、最大值、最小值、…

未来十年,量子计算将改变物流行业

近年来,供应链和物流行业面临的挑战越来越多,从劳动力短缺到无法预测的天气以及供需变化,都使物流行业变得更加复杂。 因此,现在急需一种不同的方法来解决这些挑战,优化单个功能或整个业务的传统方法已无法应对这些困…

Linux C 中 multiple definition of ‘xxx‘

在多文件的项目中,我们可以发现有时会出现multiple definition of ‘xxx‘的问题。这个问题一般有以下表现和处理。 原因 (1)变量或者函数在某一个头文件中定义(不是声明),而这个头文件被多个源文件包含&a…

react中package.json中版本号的规则

react中package.json中版本号的规则 ^:只会执行不更改左边非零数字的更新 2.:如果写入的是0.13.0,则当运行npm update时i,会更新到补丁版本 3.>:接收高于指定版本的任何版本 4.>:接受等于或者高于指定…

Vue 2 将于 12 月 31 日到达生命周期终点

随着2024年即将到来,我们借此机会提醒Vue社区,Vue 2将于2023年12月31日终止更新(EOL)。 Vue 2.0在7年多前的2016年发布。它是Vue成为主流框架旅程中的一个重要里程碑。许多现在的Vue开发者是在Vue 2时代开始使用Vue的,有许多伟大的项目是用它建立的。 然而我们无法持续同…

Mysql使用Mybatis进行时间操作

MySQL中支持以下日期时间类型: DATE:存储年月日(例如:2023-04-05)。范围从"1000-01-01"到"9999-12-31" TIME:存储时分秒(例如:11:22:22)。范围从&q…

Docker搭建kafka集群

Docker搭建kafka集群 kafka概念 broker:消息中间件处理节点,一个broker就是一个kafka节点,一个或者多个broker就组成了一个kafka集群topic:kafka根据topic对消息进行归类,发布到kafka集群的每个消息,都要…

Authing 分级管理员重磅上线,实现权限超细粒度分级管

数字化时代企业的现代化建设日益重要,身份权限管理系统的数字化变革已经成为企业数字化转型的核心要素之一,同时也对身份权限管理的“最后一公里”提出了更高的要求。管理员作为关键人员,往往掌握整个企业的数据核心访问权限,需要…

Seata AT TM->RC->RM一次完整的交互过程

原理 TM两阶段: 阶段1:TM向TC申请全局事务,netty客户端发起了一次记录xid的请求 阶段2:TC协调之后,决定执行RM是否提交或者回滚。 spring公共组件部分 1、SeataAutoConfiguration类加载 利用springboot自动装配机…

js实现前端下载图片和文件资料

说明:下载图片和文档资料是两种不同的方式,所以需要先判断下载的是图片还是word,excel等文件资料 目录 1.文件资料下载: 2.图片资源下载 1.文件资料下载: window.location.href 文件路径; handleClick(item) {let…

Delphi套接字库:构建高效网络应用的利器

在Delphi编程语言中,套接字库(Socket Library)是一个关键的组成部分,为开发者提供了在网络环境下构建高效应用的强大工具。套接字库通过简化网络通信的复杂性,使得开发者能够轻松地实现客户端和服务器之间的数据传输&a…

如何使用Spoofy检测目标域名是否存在欺骗攻击风险

关于Spoofy Spoofy是一款功能强大的域名安全检测工具,在该工具的帮助下,广大研究人员可以轻松检测单个目标域名或域名列表中的域名是否存在遭受欺诈攻击的风险。 该工具基于纯Python开发,可以根据SPF和DMARC记录来检测和判断目标域名是否可…

C++ 类和对象 (上)

类的引入: 由于C语言是面向过程的编程语言,我们在完成一件事的时候通常习惯将一件事拆分成一个一个小过程来实现,而到了C就习惯将一件事分成不同的模块,交给不同的对象来处理,每一个对象中承载着数据类型和函数。 &am…

Jackson进行Json反序列化对于一个小写字母开头后跟大写字母无法识别反序列成功问题

问题描述 json数据:{“pTargetId”:“123”} javaBean: Datapublic static class Test {private String pTargetId;}运行下面代码: public static void main(String[] args) throws JsonProcessingException {String json "{\"pT…

We are a team - 华为OD统一考试

OD统一考试 题解&#xff1a; Java / Python / C 题目描述 总共有 n 个人在机房&#xff0c;每个人有一个标号 (1<标号<n) &#xff0c;他们分成了多个团队&#xff0c;需要你根据收到的 m 条消息判定指定的两个人是否在一个团队中&#xff0c;具体的: 消息构成为 a b …

智慧启航:机场管理系统的革新与飞机航天展馆的视觉盛宴

随着科技的飞速发展&#xff0c;我们的生活方式正在不断地被改变和提升。而在航空领域&#xff0c;这种变化则更加明显。从机场的智慧管理系统大屏&#xff0c;到飞机航天展馆的三维可视化&#xff0c;再到飞机涡轮发动机的3D模型&#xff0c;科技的力量正在带我们进入一个前所…

ArkUI按钮组件深入学习:通过点击按钮实现图片大小调整效果

文章目录 前言Button组件控制 Button 样式实现点击按钮改变图片大小文章总结技术回顾前言 在前面几节课中,我们已经学习了 ArkUI 提供的一些常见组件,通过一个小案例实现了 image text 和 text input 组件的使用。我们成功地让用户通过输入来改变图片的宽度,从而实现了一个…

bat命令清理Window应用注册表(Unity开发Window应用)

bat命令清理Window应用注册表&#xff08;Unity开发Window应用&#xff09; 介绍出现的问题方案一方案二方案二解决方案1. 首先使用【Win】【R】组合快捷键&#xff0c;快速打开运行命令框&#xff0c;在打开后面键入命令&#xff1a;【Regedit】2. 完后后按回车键&#xff08;…

(一)window使用VMware运行Centos7

前言&#xff1a;为了学习微服务环境搭建&#xff0c;需要自己重新弄一套linux环境&#xff0c;捡起几年前使用VMware虚拟机运行linux的知识。。。不想买云盘&#xff0c;好贵 一、下载安装包 WMware安装包下载 附赠一个破解码&#xff1a;JU090-6039P-08409-8J0QH-2YR7F 如…