SRS(Simple Real-time Server)是一个高性能的流媒体服务器,支持 RTMP、HLS、HTTP-FLV 等协议,可以用于推流、拉流、转码等操作。下面将详细讲解如何在 Docker 中配置 SRS 服务器,使用 FFmpeg 推流,最后使用 VLC 播放拉流。
步骤概览
- 配置 Docker 环境并拉取 SRS 镜像
- 配置 SRS 服务器
- 使用 FFmpeg 推流到 SRS 服务器
- 使用 VLC 拉流播放视频流
1. 配置 Docker 环境并拉取 SRS 镜像
1.1 安装 Docker
首先,确保你的服务器已安装 Docker。可以使用以下命令检查 Docker 是否已经安装:
docker --version
如果没有安装 Docker,可以参考 Docker 官网 进行安装。
1.2 拉取 SRS 镜像
接下来,我们需要拉取 SRS 的 Docker 镜像。使用以下命令:
docker pull ossrs/srs
该命令会从 Docker Hub 拉取最新版本的 SRS 镜像。
1.3 运行 SRS 容器
运行 SRS 容器:
docker run -d --name srs -p 1935:1935 -p 8080:8080 ossrs/srs
这会启动一个名为 srs
的容器,并将宿主机的 1935 端口和 8080 端口映射到容器的相同端口。1935 端口用于 RTMP 推流,8080 端口用于 HTTP-FLV 或 HLS 播放。
如果你想使用默认配置启动 SRS,可以直接这样运行。如果需要自定义配置,请在后续步骤中修改配置文件。
2. 配置 SRS 服务器
2.1 修改 SRS 配置文件
SRS 的配置文件位于 /etc/srs/srs.conf
,我们可以在 Docker 容器中进入并进行编辑。
进入 SRS 容器:
docker exec -it srs /bin/bash
配置文件路径为 /usr/local/srs/conf/srs.conf
。可以使用 vi
或 nano
编辑器来修改该配置文件。
vi /usr/local/srs/conf/srs.conf
我们需要确保 RTMP 和 HTTP 服务启用,配置文件示例如下:
# 推流协议
listen 1935;
# HTTP-Flv 播放协议
http_api 127.0.0.1:1985;
http_stream 0.0.0.0:8080;
http_hooks on;
# RTMP 流媒体服务
vhost __defaultVhost__ {
# 允许推流
rtc {
enabled on;
listen 1935;
}
}
这个配置启动了 RTMP 协议(端口 1935)和 HTTP-Flv 服务(端口 8080),可以推流和拉流。
编辑完成后,保存并退出。
2.2 重启 SRS 容器
为了让配置生效,需要重启容器:
docker restart srs
3. 使用 FFmpeg 推流到 SRS 服务器
接下来,我们使用 FFmpeg 进行推流。确保你已经安装了 FFmpeg。如果没有,可以通过以下命令安装(适用于 Ubuntu 系统):
sudo apt-get update
sudo apt-get install ffmpeg
使用以下命令将视频文件推送到 SRS 服务器的 RTMP 流:
ffmpeg -re -i input_video.mp4 -c:v libx264 -c:a aac -f flv rtmp://<SRS_SERVER_IP>/live/stream
input_video.mp4
:输入视频文件的路径。rtmp://<SRS_SERVER_IP>/live/stream
:RTMP 推流 URL,其中<SRS_SERVER_IP>
替换为你 SRS 服务器的 IP 地址,live
是虚拟主机,stream
是推流名称。
例如,假设你的 SRS 服务器 IP 是 192.168.1.100
,命令会是:
ffmpeg -re -i input_video.mp4 -c:v libx264 -c:a aac -f flv rtmp://192.168.1.100/live/stream
3.1 推流设置解释
-re
:以实时速度读取输入文件(模拟实时流)。-i input_video.mp4
:输入的视频文件。-c:v libx264
:使用libx264
编解码器编码视频。-c:a aac
:使用aac
编解码器编码音频。-f flv
:指定输出格式为flv
,这是 RTMP 所需的格式。
4. 使用 VLC 拉流播放视频流
4.1 配置 VLC 播放 RTMP 流
- 打开 VLC 播放器。
- 在顶部菜单选择
媒体 -> 打开网络串流
。 - 在弹出的对话框中输入 RTMP 流 URL。例如:
rtmp://<SRS_SERVER_IP>/live/stream
将<SRS_SERVER_IP>
替换为你的 SRS 服务器 IP 地址。 - 点击
播放
,VLC 将会开始拉流并播放视频。
4.2 播放 HLS 流
如果你希望通过 HLS 进行播放,可以将 rtmp://
地址更改为 http://
并指定 HLS 播放 URL:
http://<SRS_SERVER_IP>:8080/live/stream.m3u8
HLS 是基于 HTTP 协议的,所以你需要使用 SRS 中的 HTTP 服务(8080 端口)。
5. 总结
- 配置 Docker 中的 SRS:通过拉取 SRS 镜像并配置 RTMP 服务,启动流媒体服务器。
- 使用 FFmpeg 推流:通过 RTMP 协议将视频流推送到 SRS 服务器。
- 使用 VLC 播放:通过 VLC 播放器拉流并观看视频。
此方案适用于需要通过 RTMP 协议进行流媒体推流与播放的场景。如果你需要更复杂的流媒体处理,SRS 也支持多种协议(如 HTTP-FLV、HLS)和功能(如转码、直播录制等)。
发表回复