Docker RTMP服务器搭建与视频流推送示例(流媒体服务器tiangolo/nginx | 您所在的位置:网站首页 › 串流播放器怎么用手机播放 › Docker RTMP服务器搭建与视频流推送示例(流媒体服务器tiangolo/nginx |
文章目录
RTMP服务器搭建与视频流推送第一部分:搭建RTMP服务器(流媒体服务器)1.1 安装Docker1.2 搭建RTMP服务器
第二部分:使用ffmpeg进行视频推流(推流客户端)2.1 安装ffmpeg2.2 使用ffmpeg推流
第三部分:使用VLC播放RTMP流3.1 安装VLC3.2 使用VLC播放RTMP流`-stream_loop`参数实现视频流重复播放
总结
RTMP服务器搭建与视频流推送
在这篇文章中,我将详述如何搭建一个RTMP(Real-Time Messaging Protocol)服务器,并使用ffmpeg技术进行本地视频的推流。最后,我们将使用VLC播放器来播放这个RTMP流。 第一部分:搭建RTMP服务器(流媒体服务器)首先,我们需要搭建一个RTMP服务器。为了方便起见,我们将选择Docker作为服务器的环境。Docker的轻量化和可移植性使得它成为构建和部署应用的理想选择。 1.1 安装Docker安装Docker的步骤会根据操作系统的不同而变化。下面是在Ubuntu上安装Docker的命令: sudo apt-get update sudo apt-get install docker.io如果你使用的是其他操作系统,请参照Docker的官方文档进行安装。 1.2 搭建RTMP服务器我们将使用开源项目nginx-rtmp-docker来搭建RTMP服务器。首先,克隆该项目到你的本地目录: git clone https://github.com/tiangolo/nginx-rtmp-docker.git cd nginx-rtmp-docker我克隆不了,我直接上页面上把代码下载下来了: 然后,使用Docker运行服务器: docker run -d -p 1935:1935 --name=nginx-rtmp tiangolo/nginx-rtmp
此时,你已经成功地在本地启动了一个RTMP服务器,它监听在1935端口。 注意: 实际上我们并未用到上面git clone https://github.com/tiangolo/nginx-rtmp-docker.git下载的文件,我们用的是镜像tiangolo/nginx-rtmp中默认的nginx.conf,如果要自定义nginx内容,可以编辑nginx.conf,然后将这个文件在创建容器时挂载进去。不懂的可以参考项目主页。 第二部分:使用ffmpeg进行视频推流(推流客户端)接下来,我们将使用ffmpeg对视频进行推流。ffmpeg是一款强大的多媒体处理工具,支持几乎所有的音视频格式。 2.1 安装ffmpeg在Ubuntu上,你可以使用下面的命令安装ffmpeg: sudo apt-get update sudo apt-get install ffmpeg如果你使用的是其他操作系统,请参照ffmpeg的官方文档进行安装。 2.2 使用ffmpeg推流首先,你需要有一个视频文件用于推流。然后,使用以下命令进行推流: ffmpeg -re -i input.mp4 -c copy -f flv rtmp://localhost/live/stream这里,“input.mp4”是你的视频文件,“rtmp://localhost/live/stream”是你的RTMP服务器地址。 在这个例子中,ffmpeg是用于将视频文件推送(stream)到我们建立的RTMP服务器。而这个RTMP服务器就是通过Docker运行的nginx-rtmp容器提供的。 docker run -d -p 1935:1935 --name=nginx-rtmp tiangolo/nginx-rtmp命令启动了一个名为"nginx-rtmp"的容器,它监听主机的1935端口。 ffmpeg -re -i input.mp4 -c copy -f flv rtmp://localhost/live/stream命令将名为"input.mp4"的视频文件转换成流,然后推送到"rtmp://localhost/live/stream"。其中"localhost"指的是本地主机,即RTMP服务器所在的主机。“1935"是RTMP协议默认的端口号,如果没有特别指定,就会使用这个端口。”/live/stream"是推流的路径和名称,你可以根据需要自定义。 所以,在URL上看,ffmpeg推流到"rtmp://localhost/live/stream"实际上就是推流到了我们通过Docker启动的nginx-rtmp容器的1935端口。 简单来说,ffmpeg是推流客户端,而nginx-rtmp容器是流媒体服务器,二者之间通过RTMP协议进行通信。 因为我的流媒体服务器(nginx-rtmp)和ffmpeg推流客户端是在我的ubuntu虚拟机(192.168.121.50)上运行,我希望我的windows电脑能够用VLC播放我的RTMP流,所以我执行以下命令: ffmpeg -re -i forest4kTest.mp4 -c copy -f flv rtmp://192.168.121.50/live/stream注意: 因为RTMP协议通常使用FLV容器格式进行流媒体传输,所以-f选项后应该是flv而不是mp4。 第三部分:使用VLC播放RTMP流VLC是一款开源的跨平台多媒体播放器,它可以播放几乎所有的媒体文件,也可以播放网络流。 3.1 安装VLC在Ubuntu上,你可以使用下面的命令安装VLC: sudo apt-get update sudo apt-get install vlc如果你使用的是其他操作系统,请参照VLC的官方文档进行安装。 Windows直接到VLC官网下载安装包安装即可。 3.2 使用VLC播放RTMP流打开VLC,然后在“媒体”菜单下选择“打开网络串流”。在弹出的对话框中,输入你的RTMP服务器地址,比如"rtmp://localhost/live/stream",然后点击“播放”。 我在我的windows上用VLC打开视频流地址:rtmp://192.168.121.50/live/stream 可以看到视频流能被正常播放出来。 我的测试视频文件,需要的话可从此处下载。 -stream_loop参数实现视频流重复播放注意: 如果发现在ffmpeg命令运行结束后就无法用VLC播放rtmp://192.168.121.50/live/stream了,解决这个问题的一个方法是保持ffmpeg持续运行以提供实时流。如果你想要流源(如视频文件)在播放完毕后自动重复播放,可以添加-stream_loop选项来使ffmpeg循环播放视频: ffmpeg -re -stream_loop -1 -i forest4kTest.mp4 -c copy -f flv rtmp://192.168.121.50/live/stream其中-stream_loop -1表示无限循环播放输入的视频。 总结本文详细介绍了如何搭建一个RTMP服务器,如何使用ffmpeg进行视频推流,以及如何使用VLC播放RTMP流。希望这些信息能够帮助你快速地实现视频推流和播放。 |
CopyRight 2018-2019 实验室设备网 版权所有 |