1

今天突发奇想,想做一个本地通过obs直播,然后本地作为推流服务器,手机端的mxplayer作为接收器,来直播电脑上的内容,

经过了解之后,发现nginx可以直接设为stmp服务器,于是准备开始

装了一大顿,遇到各种问题,一一解决后,到最后一步,发现起点错误,于是推翻重做。借着报错,找到这篇stack overflow上的问题,一步一步来

unknown directive “rtmp” in /etc/nginx/nginx.conf:76 - Stack Overflow

首先,

安装nginx

When installing nginx for rtmp the program must be compiled from source. (e.g. as desecribed here)

必须使用源码编译的nginx才有rtmp

sudo apt-get install build-essential libpcre3 libpcre3-dev libssl-dev
wget http://nginx.org/download/nginx-1.21.6.tar.gz
wget https://github.com/arut/nginx-rtmp-module/archive/master.zip
unzip master.zip     
tar -zxvf nginx-1.21.6.tar.gz

In case you want to use the lastest version from http://nginx.org/download/, then change the version number appropriate.

如果要使用最新版本的nginx,则使用那个链接下面的最新版的tar.gz就好了

cd nginx-1.21.6
./configure --with-http_ssl_module --add-module=../nginx-rtmp-module-master
make
sudo make install

之后

配置nginx.conf

rtmp {
    server {
        listen 1935;
        application rtmplive{
         	live on;
    	}
    }
}

将这段添加到http段前面

image-20220306040640540

这是一个最小化配置的,在端口1935监听的rtmp服务,名叫rtmplive,启用了直播(live on)。更详细配置参见这里

之后重启服务

./nginx -s reload

这时,stmp服务就已开启

我们转到obs端设置推流:

文件-->设置-->推流

服务选择自定义,服务器填写rtmp://127.0.0.1:1935/rtmplive/

确定,保存之后,点击开始推流

image-20220306041126574

当右下角绿色方块亮起,说明推流成功。

此时,我们找一个可以接收串流信号的播放器,比如potplayer,右键,打开-->打开链接

image-20220306041326198

填写rtmp://127.0.0.1:1935/rtmplive/

image-20220306041508467

确定,加载一小会就可以得到推流到的画面

移动端适配

然后,移动端则是个大难题。因为stmp服务器是部署在电脑上的wsl2上面,wsl2上的网络能在本地用127.0.0.1访问,但是对外却有很大问题,研究了一早上没研究出来,经过咨询大佬,了解到

使用 WSL 访问网络应用程序 | Microsoft Docs

需要网络转发

需要设置的是:netsh interface portproxy add v4tov4 listenport=4000 listenaddress=0.0.0.0 connectport=wsl上的服务对应端口 connectaddress=你wsl的ip

image-20220306135942755

wsl的ip是在wsl中使用ifconfig得到,在这个方案中,服务对应端口是1935的stmp端口,所以,最终win下的cmd中执行

netsh interface portproxy add v4tov4 listenport=4001 listenaddress=0.0.0.0 connectport=1935 connectaddress=172.22.145.208

这之后,电脑开启热点,手机连上,再关闭防火墙,手机上就可以访问了

不想关闭防火墙这么粗暴的话,那就在防火墙配置4001端口入站放行就行了,stmp是tcp协议的

image-20220306141246459

搞完之后,为了安全,想删除上面的配置的话,netsh interface portproxy delete v4tov4 listenport=4001 listenaddress=0.0.0.0

注意指定一下端口就行

手机设置:

实测,mxplayer支持stmp协议,所以这里用mxplayer

imgimg

网络串流–>输入地址 stmp://你的pc热点的网关地址:4001/rtmplive

网关地址从手机wifi那里可以查到,一般是192.168开头,.1结尾的。

效果:

img

展望一下

按照上面的部署方案,用jio想一想,感觉完全可以部署在自己的vps上,刨去带宽的影响,一个妥妥的可以提供小型推流服务的服务器欸

还不用wsl,方便了一大截

以上