我一直在使用react、redux、节点媒体服务器和json服务器来开发类似Twitch的应用程序。它允许用户通过将他们的OBS配置到服务器URL来直接流视频/音频,其流键等于在react应用程序中创建的流的ID。它可以在您正在查看的流的结尾URL上找到。
您可以在https://github.com/XorinNebulas/Streamy上查看我的完整回购
您还可以在https://streamy-app.herokuapp.com/的Heroku上查看我当前部署的站点版本。
以下是我对位于streams/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();在本地运行项目时,一切都运行良好,我只需使用rtmp://localhost/live的URL (rtmp://localhost/live与流的ID相等)进入OBS流设置。
然而,在将我的节点应用部署到Heroku之后,我不确定我应该使用哪个服务器URL。我还想指出,节点媒体服务器正在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到目前为止,我已经尝试了一些简单的方法,比如修改OBS中的URL,用我的网站名称rtmp://streamy-app.herokuapp.com/live替换localhost
我希望我的OBS开始发布到1935年端口上的Heroku部署应用程序,但是在单击开始流OBS之后,我得到了以下消息
未能连接到服务器 连接超时。确保您已经配置了有效的流>服务,并且没有防火墙阻止连接。
我真的很感激你的任何建议,我已经为此做了几天的工作。
发布于 2021-12-27 09:01:23
我认为这是因为heroku不支持RTMP协议,不管端口是1935还是80。因此,即使是RTMP服务器也会在80时监听,两者都不能工作。
有一个解决办法,要使用RTMPT、POST或protocols,都有基于HTTP(S)的协议。使用服务器将FLV/HLS隐藏到其他实时流协议中。它可能对heroku有效。
注意:据我所知,没有nodejs或POST HTTP/HLS服务器,但是有一些c++服务器。我不知道有多少用户想要在heroku上构建实时流媒体服务器,但很明显,docker(或者像AWS LightSail)是一个合适的解决方案。
将来,我们可能会使用HTTP/3、QUIC或WebTransport以HTTP/HTTPS方式发布实时流。但是现在,在2021.12的时候,它是不可用的。
https://stackoverflow.com/questions/57631427
复制相似问题