Fms 端口 媒体服务器端口
FMS (端口问题)如何穿透防火墙
先1111 是管理端口,就是fms2_console文件连接到server远程管理的时候需要用到的。
首先明确关系:
- RTMP (默认端口:1935 )
- RTMPT ( http 隧道 - 默认端口: 80 )
- RTMPS ( https 隧道- 默认端口: 443 )
-
nc.connect( "rtmp ://127.0.0.1:1935 /myapp"); -
nc.connect( "rtmpt ://127.0.0.1:80 /myapp"); -
nc.connect( "rtmps ://127.0.0.1:443 /myapp");
rtmps 用得很少。。。
连接为难题:
fms_nc.connect("rtmp://127.0.0.1/test");
这行代码会自动尝试RTMP:1935 以及 RTMPT:80 两种连接方式。
如果你想提高效率,指定端口来连接,那么就这样写:
fms_nc.connect("rtmp://127.0.0.1:1935 /test"); 这样他不会再尝试其他端口。说明:127.0.0.1是本地网关地址
当然你会问如果要改成其他端口,在哪里可以更改:
X(c/d..):\Program Files\Macromedia\Flash Media Server 2\conf\_defaultRoot_\Adaptor.xml
第42行:
修改为:<HostPort>:1935,443,8080 </HostPort>或者你想要的:<HostPort>:8080,80 </HostPort>
如果你的server有多个ip:
<HostPort>XXX.XXX.XXX.XXX:1935, 443, 80 </HostPort>
然后重启FMS(先stop,再start),如果你的iis或者web站点占用了80 ,那么会报错,更改端口为空闲的端口。
协议:
rtmp 全名为:real time message protocol
如果rtmp 的连接方式失败(通常是防火墙阻止了该协议),那么flash可以使用rtmpt 协议来建立 HTTP tunneling.
fms_nc.connect("rtmpt://ip/test")
就可以连接成功了。
若防火墙关闭了1935 ,只允许80 端口。那么此时你需要这么写:fms_nc.connect("rtmpt://ip:80/test")
防火墙允许1935、80 端口。
服务器端我们如果可以控制,当然会尽可能的打开常用端口,当然也会允许rtmp协议。如果问题出现在客户端呢?看下图:
客户端只允许80端口,那么此时只有80端口可以连接成功。
总结:
鉴于客户端端口以及协议的不确定性,你需要准备好处理各种情况:
思路如下:
1、<HostPort>:1935,8080,80</HostPort>
2、默认使用rtmp协议以及1935、8080、80来连接,尝试2次。如果仍然failed,那么:
3、使用rtmpt协议(HTTP tunneling)来连接。
//开始
fms_nc.connect("rtmp://127.0.0.1/test"); //会自动尝试可以使用的端口
//在onStatus函数里面监测状态 如果连续两次failed,
fms_nc.connect("rtmpt://127.0.0.1:8080/test")
//结束
通过HTTP tunneling建立的连接在传输视频的时候会不稳定,所以你要时刻监测nc的状况,如果断开要自动重连,简单的办法就是通过js刷新页面。
本文详细介绍了FMS端口媒体服务器的各种端口配置方法,包括RTMP、RTMPT及RTMPS等协议的应用场景。针对防火墙问题,提供了多种连接方式和解决方案,并指导如何修改Adaptor.xml文件以支持自定义端口。
793

被折叠的 条评论
为什么被折叠?



