【发布时间】:2019-12-29 01:58:06
【问题描述】:
我一直在使用 react、redux、node media server 和 json server 开发这个类似 Twitch 的应用程序。它允许用户通过将其 OBS 配置到服务器 URL 来直接流式传输视频/音频,其中 Stream Key 等于在 react 应用程序中创建的流的 ID。可以在您正在查看的流的结束 URL 上找到。
你可以在https://github.com/XorinNebulas/Streamy查看我的完整回购
您还可以通过https://streamy-app.herokuapp.com/https://streamy-app.herokuapp.com/查看我在 Heroku 上当前部署的站点版本
这是我对位于 streams/rtmpserver/index.js 中的 node-media-server 的配置
const NodeMediaServer = require("node-media-server");
const HTTP_PORT = process.env.HTTP_PORT || 8000;
const config = {
rtmp: {
port: 1935,
chunk_size: 60000,
gop_cache: true,
ping: 30,
ping_timeout: 60
},
http: {
port: HTTP_PORT,
allow_origin: "*"
}
};
var nms = new NodeMediaServer(config);
nms.run();
在本地运行项目时一切正常,我只需进入我的 OBS 流设置,使用 rtmp://localhost/live 的 URL,Stream Key 等于流的 ID。
但是,在将我的节点应用程序部署到 Heroku 之后,我不确定应该使用哪个服务器 URL。我还想指出 node-media-server 在 Heroku 上成功运行。使用heroku logs --tail 我回来了
[INFO] Node Media Server v2.1.2
[1] 8/23/2019 17:22:22 78 [INFO] Node Media Rtmp Server started on port: 1935
[1] 8/23/2019 17:22:22 78 [INFO] Node Media Http Server started on port: 8000
[1] 8/23/2019 17:22:22 78 [INFO] Node Media WebSocket Server started on port: 8000
到目前为止,我已经尝试了一些简单的方法,例如通过将 localhost 替换为我的网站名称 rtmp://streamy-app.herokuapp.com/live 来修改 OBS 中的 URL
我希望我的 OBS 开始发布到我在端口 1935 上部署的 Heroku 应用程序,但是在单击 OBS 中的开始流式传输后,我收到了这条消息
连接服务器失败
连接超时。确保您已配置有效的流式传输>服务并且没有防火墙阻止连接。
我真的很感激任何建议,我已经为此工作了几天。
【问题讨论】:
-
如果它在端口 1935 上,您需要将 OBS 指向该端口。
rtmp://streamy-app.herokuapp.com:1935/live通过不添加端口号,它只是假设您想要端口 80。 -
感谢您的建议,但我似乎仍然收到相同的错误消息。我什至尝试禁用我的防火墙。也许这是 Heroku 不允许外部连接的问题?
-
可能是防火墙问题。您是否还包括流名称?
tmp://streamy-app.herokuapp.com:1935/live/streamname或者直接在OBS中填写流名字段。 -
不,但是我确实使用了等于流 id 的流密钥,然后我可以通过带有 url
/live/${id}.flv的 flv 检索它,但我的主要问题是首先尝试确保 OBS 流到我的 Heroku 应用程序。 -
我不知道我在想什么。由于协议是 RTMP,因此您不需要 url 中的端口号。 OBS 中需要流密钥才能流式传输到您的 Heroku 应用程序。我刚刚用上面的代码创建了自己的实例,效果很好。
标签: node.js reactjs heroku rtmp