支持的标签及对应的Dockerfile
链接
注意:有每次构建日期的标签。如果你需要"固定"使用的Docker镜像版本,可以选择其中一个标签。例如 tiangolo/nginx-rtmp:latest-2020-08-16
。
nginx-rtmp
这是一个用于实时多媒体(视频)流的Docker镜像,使用Nginx和nginx-rtmp-module模块。
描述
这个Docker镜像可用于创建RTMP服务器,用于多媒体/视频流传输。它使用Nginx和nginx-rtmp-module,从当前最新源代码构建(Nginx 1.15.0和nginx-rtmp-module 1.2.1)。
这个项目的灵感来自于之前类似的镜像,如dvdgiessen、jasonrivers、aevumdecessus,以及一篇OBS Studio文章。
构建它的主要目的(和测试用例)是允许从OBS Studio同时向不同的客户端进行流传输。
GitHub仓库:https://github.com/tiangolo/nginx-rtmp-docker
Docker Hub镜像:https://hub.docker.com/r/tiangolo/nginx-rtmp/
详情
如何使用
- 对于最简单的情况,只需运行这个镜像的容器:
docker run -d -p 1935:1935 --name nginx-rtmp tiangolo/nginx-rtmp
如何用OBS Studio和VLC测试
-
使用上述命令运行容器
-
点击"设置"按钮
-
进入"流"部分
-
在"流类型"中选择"自定义流媒体服务器"
-
在"URL"中输入
rtmp://<主机IP>/live
,将<主机IP>
替换为运行容器的主机IP。例如:rtmp://192.168.0.30/live
-
在"串流密钥"中使用一个"密钥",稍后在客户端URL中用于显示特定的流。例如:
test
-
点击"确定"按钮
-
在"来源"部分点击"添加"按钮(
+
),选择一个源(例如"屏幕捕捉"),并按需配置 -
点击"开始推流"按钮
-
打开VLC播放器(在树莓派上使用
omxplayer
也可以) -
点击"媒体"菜单
-
点击"打开网络串流"
-
输入上面的URL,格式为
rtmp://<主机IP>/live/<密钥>
,将<主机IP>
替换为运行容器的主机IP,<密钥>
替换为你在OBS Studio中创建的密钥。例如:rtmp://192.168.0.30/live/test
-
点击"播放"
-
现在VLC应该开始播放你从OBS Studio传输的内容
调试
如果有什么不工作,你可以通过以下方式查看容器的日志:
docker logs nginx-rtmp
扩展
如果你需要修改配置,可以创建一个nginx.conf
文件,并使用基于此镜像的Dockerfile
来替换镜像中的配置,例如:
FROM tiangolo/nginx-rtmp
COPY nginx.conf /etc/nginx/nginx.conf
当前的nginx.conf
包含:
worker_processes auto;
rtmp_auto_push on;
events {}
rtmp {
server {
listen 1935;
listen [::]:1935 ipv6only=on;
application live {
live on;
record off;
}
}
}
你可以从这里开始,根据需要进行修改。这里是nginx-rtmp-module
相关的文档。
技术细节
-
这个镜像是从与大多数其他官方镜像(如Python、Node、Postgres、Nginx本身等)相同的基础官方镜像构建的。具体来说,是buildpack-deps,它又基于debian。因此,如果你本地有任何其他镜像,可能已经下载了基础镜像层。
-
它是从Nginx和nginx-rtmp-module的官方源代码构建的,没有添加任何其他内容。(令人惊讶的是,大多数可用的包含nginx-rtmp-module的镜像都是从不同的源代码、旧版本制作的,或者添加了其他几个组件)。
-
它有一个简单的默认配置,应该允许你向其发送一个或多个流,并让多个客户端同时接收这些流的多个副本。(它包括
rtmp_auto_push
和自动数量的工作进程)。
发布说明
最新变更
内部
- 👷 更新issue-manager.yml GitHub Action权限。PR #76 由@tiangolo提交。
- 👷 更新issue-manager.yml GitHub Action权限。PR #75 由@tiangolo提交。
- 🔧 添加GitHub讨论和问题模板,以及安全策略。PR #72 由@alejsdev提交。
- 🔧 更新
latest-changes.yml
。PR #70 由@alejsdev提交。
0.0.1
功能
修复
文档
- ✏️ 修复README中的一个拼写错误。PR #20 由@Irishsmurf提交。
升级
- ⬆️ 将Nginx升级到1.23.2,操作系统升级到bullseye。PR #40 由@tiangolo提交。
- ⬆ 升级到nginx-1.19.7。PR #26 由@cesarandreslopez提交。
- ⬆ 更新RTMP模块版本到1.2.2。PR #28 由@louis70109提交。
- 将Nginx升级到1.18.0版本。PR #13 由@Nathanael-Mtd提交。
内部
- 👷 更新令牌以适应最新变更。PR #50 由 @tiangolo 提交。
- 👷 为 Docker Hub 描述添加 GitHub Action。PR #45 由 @tiangolo 提交。
- 将 tiangolo/issue-manager 从 0.3.0 升级到 0.4.0。PR #42 由 @dependabot[bot] 提交。
- 将 actions/checkout 从 2 升级到 3。PR #43 由 @dependabot[bot] 提交。
- 🎨 格式化 CI 配置。PR #44 由 @tiangolo 提交。
- 👷 添加 Dependabot 和资金配置。PR #41 由 @tiangolo 提交。
- 👷 添加定期 CI。PR #39 由 @tiangolo 提交。
- 👷 添加 alls-green GitHub Action。PR #38 由 @tiangolo 提交。
- 👷 在 CI 中为 PR 构建测试,更新 GitHub Actions。PR #37 由 @tiangolo 提交。
- 👷 添加 Latest Changes GitHub Action。PR #29 由 @tiangolo 提交。
- 使用 GitHub actions 添加 CI。PR #15。
- ⬆ 将 peter-evans/dockerhub-description 从 3 升级到 4。PR #63 由 @dependabot[bot] 提交。
- ⬆ 将 tiangolo/issue-manager 从 0.4.1 升级到 0.5.0。PR #64 由 @dependabot[bot] 提交。
- 将 actions/checkout 从 3 升级到 4。PR #52 由 @dependabot[bot] 提交。
- ⬆ 将 tiangolo/issue-manager 从 0.4.0 升级到 0.4.1。PR #61 由 @dependabot[bot] 提交。
- 👷 更新 dependabot。PR #55 由 @tiangolo 提交。
- 👷 更新 latest-changes。PR #54 由 @tiangolo 提交。
许可证
本项目根据 MIT 许可证的条款授权。