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

文章目录

本文主要是使用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目录。

输入

bash 复制代码
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推流的命令是这样的

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

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

bash 复制代码
rtmp://127.0.0.1:1935/live/test


点击播放之后,需要等几秒钟,才能出视频,因为在转换流中。

到这里说明适用VLC播放rtmp流成功了。至于停止播放rtmp流,直接关闭VLC即可。

停止FFmpeg的rtmp推流

找到上面步骤进行的推流窗口,直接关闭窗口就是了。

使用FFmpeg进行rtsp推流

这里注意了,在进行推流前,得保证rtsp服务是启动着的,也就是上面mediamtx或者ZLMediaKit的其中一个是启动着的,保证对应的流媒体服务是正常启动的。我这里启动的是mediamtx这个流媒体服务。

从图片中可以看出,对应的流媒体服务已经启动了。之后就是使用FFmpeg进行推流了,找到FFmpeg对应的bin目录。

输入

bash 复制代码
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推流的命令是这样的

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

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

bash 复制代码
rtsp://127.0.0.1:8554/video


点击播放之后,需要等几秒钟,才能出视频,因为在转换流中。

到这里说明适用VLC播放rtsp流成功了。至于停止播放rtsp流,直接关闭VLC即可。

停止FFmpeg的rtsp推流

找到上面步骤进行的推流窗口,直接关闭窗口就是了。

相关推荐
我是苏苏7 小时前
Web开发:ABP框架6——appsetting.json的读取以及实例的注入
前端·windows·json
橘子味的茶二7 小时前
ffmpeg内存模型
ffmpeg
TPCloud7 小时前
windows 11编译安装ffmpeg(包含ffplay)
windows·ffmpeg·源码安装·mysys
password大鸭梨7 小时前
一个简单ASP.NET购物车设计
windows·microsoft·asp.net
Aniay_ivy9 小时前
Java中的不可变集合:性能与安全并重的最佳实践
java·windows·安全
积跬步至千里-积滴水成江海9 小时前
如何查看电脑关机时间
windows·系统安全
喜欢打篮球的普通人9 小时前
Rust面向对象特性
开发语言·windows·rust
晨曦_子画9 小时前
C#中:Any() 与 Count,选择哪一个??
开发语言·windows·c#
醇氧11 小时前
【Windows】CMD命令学习——系统命令
windows
人生の三重奏11 小时前
windows虚拟环境搭建
windows·python·虚拟环境