Xor*_*ula 6 heroku rtmp node.js reactjs
我一直在使用 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/在 Heroku 上查看我当前部署的站点版本
这是我对位于流/rtmpserver/index.js 中的节点媒体服务器的配置
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();
Run Code Online (Sandbox Code Playgroud)
在本地运行项目时一切正常,我只需进入我的 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
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经尝试了一些简单的方法,例如通过将 localhost 替换为我的网站名称来修改 OBS 中的 URL rtmp://streamy-app.herokuapp.com/live
我希望我的 OBS 开始在端口 1935 上发布到我的 Heroku 部署的应用程序,但是在单击 OBS 中的开始流式传输后,我收到了这条消息
无法连接服务器
连接超时。确保您已配置有效的流媒体 > 服务并且没有防火墙阻止连接。
我真的很感激任何建议,已经为此工作了好几天。
我认为这是因为heroku不支持RTMP协议,无论端口是1935还是80。所以即使RTMP服务器监听80,它也不起作用。
有一个解决方法,可以使用RTMPT、 POST HTTP-FLV 或 POST HTTP-HLS ,所有这些都是基于 HTTP(S) 的协议。使用服务器将FLV/HLS转换为其他直播流协议。它可能适用于heroku。
注意:据我所知,没有nodejs RTMPT 或POST HTTP-FLV/HLS 服务器,但有一些c++ 服务器。我不知道有多少用户想在heroku上构建直播服务器,但显然docker(或像AWS LightSail)是一个合适的解决方案。
未来,我们可能会使用 HTTP/3、QUIC 或 WebTransport 以 HTTP/HTTPS 方式发布直播流。但现在,2021.12,它不可用。
| 归档时间: |
|
| 查看次数: |
2931 次 |
| 最近记录: |