You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将Docker容器部署到Azure容器Web应用后RTMP推流失败求助

解决Azure Web App for Containers部署RTMP流媒体服务器推流失败问题

核心原因

Azure Web App for Containers默认仅代理HTTP/HTTPS协议(80/443端口),RTMP基于TCP协议,无法通过默认配置直接对外暴露,导致推流连接失败。

具体解决方案

1. 启用Web App自定义TCP端口(需高级计划支持)

  • 登录Azure门户,进入目标Web App,依次点击 设置 > 配置 > 常规设置
  • 在传入端口中添加1935端口,保存配置
  • 同时设置WEBSITES_PORT环境变量为你的HTTP服务端口(比如3000或8000,Web App依赖HTTP端口做健康检查)
  • 注意:免费/共享层计划不支持自定义TCP端口,必须升级到S1及以上的高级计划

2. 修正OBS推流地址

推流地址必须使用Web App公网域名+自定义TCP端口,格式如下:

rtmp://{你的应用名称}.azurewebsites.net:1935/live/{你的流密钥}

禁止使用容器内部地址(如rtmp://localhost:1935),必须用公网可访问的域名。

3. 测试端口连通性

  • 本地执行命令测试1935端口是否可访问:
    telnet 你的应用名称.azurewebsites.net 1935
    
  • 如果连接失败,检查Azure网络防火墙是否允许1935端口的入站TCP流量,或本地网络是否有端口限制

4. 简化node-media-server配置

去掉未使用的集群配置,避免路由错误:

const rtmpConfig = {
  port: 1935,
  chunk_size: 60000,
  gop_cache: true,
  ping: 10,
  ping_timeout: 60,
  // 注释掉以下集群配置(无实际边缘服务器时无需启用)
  // cluster: {
  //   master: "rtmp://media-server:1935/live",
  //   urls: ["rtmp://media-edge-server:1940/live"],
  // },
};

确保HTTP服务的端口与WEBSITES_PORT一致:

const PORT = process.env.WEBSITES_PORT || 3000;

5. 验证容器内监听状态

查看Azure容器日志,确认node-media-server已成功监听1935端口:

[NodeMediaServer] RTMP server listening on port 1935

如果日志显示监听正常但外部无法访问,优先检查Web App的自定义端口是否正确配置。


内容的提问来源于stack exchange,提问作者Austin Howard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 07:46:05