Windows搭建流媒体服务并使用ffmpeg推流播放rtsp和rtmp流

文章目录

  • 搭建流媒体服务
  • 方式一
    • 安装mediamtx
    • 启动meidamtx
    • 关闭meidamtx
  • 方式二
    • 安装ZLMediaKit
    • 启动ZLMediaKit
    • 关闭ZLMediaKit
  • 安装FFmpeg进行推流
    • 使用FFmpeg进行rtmp推流
    • 使用VLC播放rtmp流
    • 停止FFmpeg的rtmp推流
    • 使用FFmpeg进行rtsp推流
    • 使用VLC播放rtmp流
    • 停止FFmpeg的rtsp推流

本文主要是使用Windows搭建流媒体服务器并使用ffmpeg推流播放rtsp和rtmp流。其中搭建流媒体服务器的方式有两种,一种是使用mediamtx进行搭建,另一种是使用ZLMediaKit进行搭建。具体看文章后面的内容,这两种方式都会写到这篇文章中。使用ffempeg进行推流,使用VLC作为流媒体播放器。本文用到的所有素材都可以从这里找到,如果图方便的小伙伴,可以直接从这里下载。
通过百度网盘分享的文件:midiaserver.zip
链接:https://pan.baidu.com/s/14GY97zeb8JJDPXriXQNbvA
提取码:8778
–来自百度网盘超级会员V5的分享

搭建流媒体服务

以下两种方式,任选其中一种即可。需要注意的是,下面两种方式因为都是搭建流媒体服务的,所以两种方式不能同时启用,否则会造成端口号冲突,除非改了端口号。所以建议不修改端口号,在使用是只使用两种方式种的其中一种即可,确保另一个没有在启动状态。

方式一

安装mediamtx

安装mediamtx可以到官网地址:https://github.com/bluenviron/mediamtx/releases。这里下载的是mediamtx_v1.9.3_windows_amd64这个版本。

在这里插入图片描述

下载成功之后,解压
在这里插入图片描述

启动meidamtx

双击mediamtx.exe启动,双击之后,可能会有一个弹窗。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

关闭meidamtx

直接关闭mediamtx启动时的黑色命令窗口即可。
在这里插入图片描述

方式二

安装ZLMediaKit

这个在官网中并没有直接提供对应的运行程序,需要自己单独编译。不过放心,本文章会直接提供我已经编译好的Windows版本的安装包,可以直接使用的。如果想要了解编译的过程,请看我的另一篇文章Windows下编译安装ZLMediaKit流媒体服务框架_zlmediakit windows-CSDN博客,这里面有对应的编译过程。

这里需要注意的是,如果上面已经启动了mediamtx,需要先关闭mediamtx,免得造成端口号冲突,导致启动ZLMediaKit失败。

启动ZLMediaKit

将对应的压缩包解压之后,进入的文件夹中。
在这里插入图片描述
在这里插入图片描述

出现如下界面,说明启动成功了
在这里插入图片描述
从图片中可以发现,有好多个端口号,都是对应流服务的端口号。如rtmp的端口号为1935,rtsp的端口号为554,当然这里也可以到config.ini文件中修改端口号为8554,具体修改可以看后面的图片,里面有修改方法,如果要修改的话,修改的时候记得保存一下,然后再重新启动。这里就不修改了,保持默认。
在这里插入图片描述

关闭ZLMediaKit

直接关闭ZLMediaKit启动时的黑色命令窗口即可。
在这里插入图片描述

安装FFmpeg进行推流

https://ffmpeg.p2hp.com/,这里有关于FFmpeg的详细介绍和下载方式。
在这里插入图片描述
在这里插入图片描述
这里会直接跳转到一个GitHub的下载地址,https://github.com/BtbN/FFmpeg-Builds/releases,从这里可以直接下载了,如下图所示。
在这里插入图片描述
下载完成之后,解压就可以直接使用了,解压之后找到对应的bin目录,等下进行推流需要用到这个目录。我们这里先放一个视频到这bin目录下,视频格式建议是Open H.26 + ACC (.mp4)或者ISO MPEG-4 标准 (.mp4)的格式,因为在FFmpeg转换的时候,我发现如果视频格式出现问题,FFmpeg是会提示的,到时候根据提示进行进行解决即可。这里直接使用提供的视频进行测试吧,这样方便一些。
在这里插入图片描述
这是放了视频之后的bin目录
在这里插入图片描述

使用FFmpeg进行rtmp推流

这里注意了,在进行推流前,得保证rtmp服务是启动着的,也就是上面mediamtx或者ZLMediaKit的其中一个是启动着的,保证对应的流媒体服务是正常启动的。我这里启动的是mediamtx这个流媒体服务。
在这里插入图片描述
从图片中可以看出,对应的流媒体服务已经启动了。之后就是使用FFmpeg进行推流了,找到FFmpeg对应的bin目录。
在这里插入图片描述
在这里插入图片描述
输入

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

在这里插入图片描述
在这里插入图片描述
推流成功之后,我们可以查看上面启动的mediamtx窗口,可以看到对应流媒体服务的推流信息。
在这里插入图片描述

使用VLC播放rtmp流

找打对应的VLC安装目录
在这里插入图片描述
就不要更新了,不然后面启动就是一堆广告。
在这里插入图片描述
在这里插入图片描述
因为上面使用FFmpeg进行rtmp推流的命令是这样的

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

所以这里的rtmp流的播放地址就是命令的后面那一段

rtmp://127.0.0.1:1935/live/test

在这里插入图片描述
在这里插入图片描述
点击播放之后,需要等几秒钟,才能出视频,因为在转换流中。
在这里插入图片描述
到这里说明适用VLC播放rtmp流成功了。至于停止播放rtmp流,直接关闭VLC即可。

停止FFmpeg的rtmp推流

找到上面步骤进行的推流窗口,直接关闭窗口就是了。
在这里插入图片描述

使用FFmpeg进行rtsp推流

这里注意了,在进行推流前,得保证rtsp服务是启动着的,也就是上面mediamtx或者ZLMediaKit的其中一个是启动着的,保证对应的流媒体服务是正常启动的。我这里启动的是mediamtx这个流媒体服务。
在这里插入图片描述
从图片中可以看出,对应的流媒体服务已经启动了。之后就是使用FFmpeg进行推流了,找到FFmpeg对应的bin目录。
在这里插入图片描述
在这里插入图片描述
输入

ffmpeg -re -stream_loop -1 -i 测试视频.mp4 -c copy -f rtsp rtsp://127.0.0.1:8554/video

这里需要注意的是,如果启动的是mediamtx这个流媒体服务,rtsp的端口号就是8554,如果启动的是ZLMediaKit这个流媒体服务,端口号就是554,这个在文章前一部分ZLMediaKit安装那里有提到。因为我这里启动的是mediamtx这个流媒体服务器,所以使用的是8554这个端口号。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
推流成功之后,我们可以查看上面启动的mediamtx窗口,可以看到对应流媒体服务的推流信息。
在这里插入图片描述

使用VLC播放rtmp流

找打对应的VLC安装目录
在这里插入图片描述
就不要更新了,不然后面启动就是一堆广告。
在这里插入图片描述
在这里插入图片描述
因为上面使用FFmpeg进行rtsp推流的命令是这样的

ffmpeg -re -stream_loop -1 -i 测试视频.mp4 -c copy -f rtsp rtsp://127.0.0.1:8554/video

所以这里的rtsp流的播放地址就是命令的后面那一段

rtsp://127.0.0.1:8554/video

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

点击播放之后,需要等几秒钟,才能出视频,因为在转换流中。
在这里插入图片描述
到这里说明适用VLC播放rtsp流成功了。至于停止播放rtsp流,直接关闭VLC即可。

停止FFmpeg的rtsp推流

找到上面步骤进行的推流窗口,直接关闭窗口就是了。
在这里插入图片描述

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

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

相关文章

[ Linux 命令基础 5 ] Linux 命令详解-网络管理命令

🍬 博主介绍 👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…

深入浅出WebSocket(实践聊天室demo)

文章目录 什么是WebSocket?WebSocket连接过程WebSocket与Http的区别重连机制完整代码使用方法心跳机制实现聊天室demo(基于Socket.io)参考文章、视频小广告~什么是WebSocket? WebSocket 是一种在单个TCP连接上进行全双工通信的协议(计算机网络应用层的协议) 在 WebSocket A…

时序预测 | 改进图卷积+informer时间序列预测,pytorch架构

时序预测 | 改进图卷积informer时间序列预测,pytorch架构 目录 时序预测 | 改进图卷积informer时间序列预测,pytorch架构预测效果基本介绍参考资料 预测效果 基本介绍 改进图卷积informer时间序列预测代码 CTR-GC卷积,informer,CTR-GC 图卷积…

vue+Leaflet.PM插件实现创建和编辑几何图形(点、线、面、圆等)

场景 VueLeaflet实现加载OSM显示地图:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/122317394在上面加载显示OSM的基础上,使用Leaflet.pm插件实现在页面上绘制、编辑、剪切、移动几何元素。Leaflet.pm插件 用于创建和编辑几何图层的插件可…

网站架构知识之Ansible进阶2(day023)

1.include文件 应用场景: 1个ansible剧本内容过多,涉及到多个play(- host:web),可读性变弱,不方便调试。 于是人们想出把单个大的剧本拆分为多个小的剧本, 多个小的剧本可以通过include功能合并使用。 使用方法,书写好对应的剧本文件&#…

订单日记助力“实峰科技”提升业务效率

感谢北京实峰科技有限公司选择使用订单日记! 北京实峰科技有限公司,成立于2022年,位于北京市石景区,是一家以从事生产、销售微特电机、输配电及控制设备等业务为主的企业。 在业务不断壮大的过程中,想使用一种既能提…

论文阅读:DualDn Dual-domain Denoising via Differentiable ISP

这篇文章是 2024 ECCV 的一篇文章,介绍的是降噪相关的工作。 Abstract 图像去噪是相机图像信号处理 (ISP) 流程中的一个关键组成部分。将去噪器融入 ISP 流程有两种典型方式:直接对拍摄的原始帧(RAW域)应用去噪器,或…

详解MySQL安装

目录 Ubantu 1. 使⽤apt安装MySQL 2.查看MySQL状态 3. MySQL 安装安全设置 4.设置密码 卸载MySQL Centos 1. 确认当前的系统版本 2.下载MySQL源 3.安装MySQL 4.启动mysqld 5.查看MySQL状态 6.设置开机自启动 7.查看MySQL密码,并登录 8.修改密码 Ubant…

AndroidStudio-视图基础

一、设置视图的宽高 1.在XML文件中设置视图宽高 视图宽度通过属性android:layout_width表达,视图高度通过属性android:layout_height表达,宽高的取值主要有下列三种: (1)wrap_content:表示与内容自适应。对于文本视图来说&…

【LQ_tips】在DEVc++中的带空格的输入格式

目标输入: 3 4 5 6 关于cin.ignore();的解释: 在 DEV C 或任何其他 C 环境中,如果你的代码没有输出,这可能是由于输入缓冲区的问题。当你使用 cin 读取输入时,如果输入中包含空格,cin 会停止读取。因此&a…

dolphin 配置data 从文件导入hive 实践(一)

datax 支持多种数据源的相互读写,作为开源软件,提供了离线采集功能,方便系统开发,过程中遇到诸多配置,需要开发者自己探索,免费同样有成本 配置模板 {"setting": {},"job": {"s…

计算机网络综合题

IP数据报的划分 CRC差错检测 冗余码的计算 因此,余数是1110,传输的数为11010110111110。在传输过程中最后两位变成o,接收端能够发现,因为11010110111110除以10011余数不为0。 子网划分 暴力求解法 (定长子网划分大量…

Linux系统程序设计--2. 文件I/O

文件I/O 标准C的I/O FILE结构体 下面只列出了5个成员 可以观察到,有些函数没有FILE类型的结构体指针例如printf主要是一些标准输出,因为其内部用到了stdin,stdout,stderr查找文件所在的位置:find \ -name stat.h查找头文件所…

Modbus TCP 西门子PLC与 多个设备进行通讯 使用Modbus Slave模拟多个设备ID

目录 1前言 2相同地址不同ID 1创建连接数据 2创建连接程序 3模块参数设置 4Modbus Slave设置 5成果展示 3结语 1前言 本篇文章讲了PLC如何与同一地址的多个ID设备进行通讯,如果看不懂这篇文章就去看一下这篇博客学一下基础。 Modbus TCP 西门子PLC指令以太…

group_concat配置影响程序出bug

在 ThinkPHP 5 中,想要临时修改 MySQL 数据库的 group_concat_max_len 参数,可以使用 原生 SQL 执行 来修改该值。你可以通过 Db 类来执行 SQL 语句,从而修改会话(Session)级别的变量。 步骤 设置 group_concat_max_l…

UnixBench和Geekbench进行服务器跑分

1 概述 服务器的基准测试,常见的测试工具有UnixBench、Geekbench、sysbench等。本文主要介绍UnixBench和Geekbench。 1.1 UnixBench UnixBench是一款开源的测试UNIX系统基本性能的工具(https://github.com/kdlucas/byte-unixbench)&#x…

皮卡超级壁纸 1.4.1 | 解锁会员版的全景壁纸、动态壁纸和超级壁纸

皮卡超级壁纸是一款提供海量壁纸的应用,不仅包含静态的精美壁纸,还提供了独特的超级壁纸。这些超级壁纸不仅仅是动态效果,还能自动匹配用户的手机UI,提供更加个性化的体验。解锁会员版后,用户可以享受更多高级功能和壁…

怎么查看navicat的数据库密码

步骤1:打开navicat连接数据库工具&#xff0c;顶部的文件栏-导出结果-勾选导出密码-导出 步骤2&#xff1a;导出结果使用NotePad或文本打开&#xff0c;找到&#xff0c;数据库对应的的Password"995E66F64A15F6776“”的值复制下来 <Connection ConnectionName"…

09 Oracle数据拯救:Flashback Technologies精细级数据恢复指南

文章目录 09 Oracle数据拯救&#xff1a;Flashback Technologies精细级数据恢复指南一、Flashback Technologies概览二、Flashback Query&#xff1a;查询过去的数据三、Flashback Table&#xff1a;恢复整个表四、Flashback Database&#xff1a;恢复整个数据库五、总结与最佳…

在vscode中如何利用git 查看某一个文件的提交记录

在 Visual Studio Code (VSCode) 中&#xff0c;你可以使用内置的 Git 集成来查看某个文件的提交历史。以下是具体步骤&#xff1a; 使用 VSCode 内置 Git 功能 打开项目&#xff1a; 打开你的项目文件夹&#xff0c;确保该项目已经是一个 Git 仓库&#xff08;即项目根目录下…