首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法连接到远程rtmp服务器。

无法连接到远程rtmp服务器。
EN

Stack Overflow用户
提问于 2021-01-12 12:01:16
回答 1查看 974关注 0票数 0

我正在尝试用Go构建一个私有流服务器(RTMP/HLS)。基本概念类似于抽筋。用户可以使用OBS (和唯一的键)直播视频。

我偶然发现了一个名为Seal的Go框架,它似乎完全符合我的意愿。https://github.com/calabashdad/seal

然而,OBS无法连接到远程服务器,尽管server表示它列出了流端口(rtmp.myserver.com:1935)。

OBS流链接:

代码语言:javascript
复制
rtmp://rtmp.myserver.com/live/test

密封运行日志(./seal -c conf/seal.yaml):

代码语言:javascript
复制
2021/01/12 12:08:26.003814 seal.go:55: load conf file success, conf={System:{CPUNums:0} Rtmp:{Listen:1935 TimeOut:30 ChunkSize:60000 Atc:false AtcAuto:true TimeJitter:1 ConsumerQueueSize:5} Hls:{Enable:true HlsFragment:4 HlsWindow:20 HlsPath:/var/www/go_projects/src/seal/hls_files HttpListen:7001}}
2021/01/12 12:08:26.003961 seal.go:60: app run on auto cpu nums= 2
2021/01/12 12:08:26.004415 rtmp_server.go:29: rtmp server start liste at :1935
2021/01/12 12:08:26.004010 hls_server.go:34: start hls server, listen at : 7001

Apache VirtualHost配置:

代码语言:javascript
复制
<VirtualHost *:80>
ProxyPreserveHost On
    ProxyRequests Off

ServerName rtmp.myserver.com
ServerAlias rtmp.myserver.com
ServerAdmin webmaster@rtmp.myserver.com
DocumentRoot /var/www/go_projects/src/seal

<Proxy *>
    Order deny,allow
    Allow from all
</Proxy>

ProxyPass / rtmp://rtmp.myserver.com:1935/
ProxyPassReverse / rtmp://rtmp.myserver.com:1935/

<Directory /var/www/go_projects/src/seal>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Order allow,deny
            allow from all
</Directory>

OBS错误:连接到服务器失败。连接超时。

我甚至试图在Apache文件中用HTTP替换RTMP,而且似乎可以建立连接,但是出现了超时错误。

代码语言:javascript
复制
2021/01/12 13:36:23.221275 rtmp_server.go:36: one rtmp connection come in, remote= xx.xx.xx.105:44720
2021/01/12 13:36:53.222093 cycle.go:79: rtmp handshake failed.err= read tcp xx.xx.xx.105:1935->xx.xx.xx.105:44720: i/o timeout

xx.xx.xx.105是我的远程服务器

知道我做错了什么吗?

编辑 (Ubuntu)防火墙规则

代码语言:javascript
复制
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
25/tcp (Postfix)           ALLOW IN    Anywhere                  
3306                       ALLOW IN    Anywhere                  
1935/tcp                   ALLOW IN    Anywhere                  
25/tcp (Postfix (v6))      ALLOW IN    Anywhere (v6)             
3306 (v6)                  ALLOW IN    Anywhere (v6)             
1935/tcp (v6)              ALLOW IN    Anywhere (v6)

rtmpdump结果[rtmpdump -v -r "rtmp://rtmp.myserver.com/live/test“-s swf auth vlc -]:

代码语言:javascript
复制
VLC media player 3.0.11.1 Vetinari (revision 3.0.11.1-0-g52483f3ca2)
RTMPDump v2.4
(c) 2010 Andrej Stepanchuk, Howard Chu, The Flvstreamer Team; license: GPL
WARNING: You haven't specified an output file (-o filename), using stdout
Connecting ...
[000055e60d2775b0] main libvlc: Running vlc with the default interface. Use 'cvlc' to use vlc without interface.
QFont::fromString: Invalid description '(empty)'
QFont::fromString: Invalid description '(empty)'
ERROR: RTMP_Connect0, failed to connect socket. 110 (Connection timed out)
[00007f6558001160] mjpeg demux error: cannot peek
EN

回答 1

Stack Overflow用户

发布于 2021-01-12 16:00:58

这还不清楚为什么会发生此错误。超时最流行的问题是防火墙。

另一个问题,但我不确定是否需要SWF身份验证。

你能多做些调试吗?

  1. 让我们看看你在xx.105服务器上的防火墙?
  2. 你能用rtmpdump程序做更多的调试吗?它将提供解决问题所需的大量有用信息。
代码语言:javascript
复制
rtmpdump -v -r  "rtmp://rtmp.myserver.com:1935/" [ -s swf auth ]  | vlc -
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65683544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档