文章目录
本文主要是使用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推流
找到上面步骤进行的推流窗口,直接关闭窗口就是了。