很多人在做直播时,用OBS或者FFmpeg推流到本地服务器没问题,但朋友在外网却看不到画面。问题就出在——直播流只在内网通,没打通外网访问。
为什么外网访问不了你的直播流?
你在家用电脑开个直播服务,默认是局域网内部使用的。路由器像一堵墙,把外面的人挡住了。即使你告诉别人你的IP和端口,他们也连不上,因为公网根本找不到你这台设备。
关键一步:端口转发(Port Forwarding)
进你家路由器后台,在“虚拟服务器”或“端口转发”页面添加一条规则。比如你的直播服务跑在192.168.1.100的1935端口(RTMP常用),那就把外部端口1935映射到这个内网地址和端口。
外部端口:1935
内部IP:192.168.1.100
内部端口:1935
协议:TCP
保存后,重启路由器生效。这时别人就可以通过你的公网IP加端口来访问了,比如:rtmp://你的公网IP:1935/live/streamkey。
动态公网IP怎么办?
大多数家庭宽带没有固定公网IP,重启路由器IP就变。这时候得上DDNS(动态域名解析)。注册一个免费域名,比如xxx.synology.me 或 xxx.ddns.net,然后在路由器里启用DDNS功能,绑定你的账号。
这样即使IP变了,域名也会自动指向新IP。别人只需记一个域名,不用每次问你新IP是多少。
防火墙别忘了关
除了路由器,电脑系统自带的防火墙也可能拦掉入站连接。检查Windows防火墙或macOS防火墙设置,放行1935端口的TCP流量,不然数据包到门口还是进不来。
测试外网能不能连
自己在家测试不了外网效果。可以让朋友用VLC播放器打开你的rtmp地址试试,或者用手机切到4G网络拉流。如果能播出来,说明外网访问通了。
安全提醒
开放端口等于把家门钥匙挂网上。建议别用默认端口,比如把1935改成随机高位端口如8765,减少被扫描攻击的风险。也不要用弱密码,直播密钥尽量复杂点。
如果你只是临时分享一路监控或小范围直播,这种方式最直接。要是长期对外服务,建议还是上云服务器搭SRS或Nginx-rtmp,稳定又安全。