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推流

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

相关推荐
cpsvps_net13 小时前
美国服务器环境下Windows容器工作负载智能弹性伸缩
windows
甄超锋13 小时前
Java ArrayList的介绍及用法
java·windows·spring boot·python·spring·spring cloud·tomcat
cpsvps15 小时前
美国服务器环境下Windows容器工作负载基于指标的自动扩缩
windows
胡耀超17 小时前
DataOceanAI Dolphin(ffmpeg音频转化教程) 多语言(中国方言)语音识别系统部署与应用指南
python·深度学习·ffmpeg·音视频·语音识别·多模态·asr
byxdaz17 小时前
FFmpeg QoS 处理
ffmpeg
网硕互联的小客服18 小时前
Apache 如何支持SHTML(SSI)的配置方法
运维·服务器·网络·windows·php
etcix19 小时前
implement copy file content to clipboard on Windows
windows·stm32·单片机
许泽宇的技术分享19 小时前
Windows MCP.Net:基于.NET的Windows桌面自动化MCP服务器深度解析
windows·自动化·.net
非凡ghost20 小时前
AMS PhotoMaster:全方位提升你的照片编辑体验
windows·学习·信息可视化·软件需求
mortimer21 小时前
一次与“顽固”外部程序的艰难交锋:subprocess 调用exe踩坑实录
windows·python·ai编程