一开始想到要弄一个简单的 rtmp 服务器是为了给同学上课投射屏幕用。因为我用的是 Linux ,没法用国产的那些课室软件给他们投放屏幕,于是只好出此下策了。
我使用的系统是 CentOS 7 和 Ubuntu 16.04 ,所以就想到最简单的方式搭建:使用现成的 Docker 镜像。因为重新编译安装 nginx 对我来说不太现实,会直接影响到我的开发环境。
先安装好 docker
CentOS 7 :
sudo yum install docker
Ubuntu 16.04 :
sudo apt-get install docker.io
安装好之后执行 systemctl status docker
查看一下 docker 有没有被启动,没有的话执行 sudo systemctl start docker
启动。如果想日后自动启动 docker ,可以执行 sudo systemctl enable docker
。
docker 需要使用 root 权限来操作,如果嫌麻烦可以把自己加入 docker 的用户组里,或者直接 su root
。
这里我直接使用 tiangolo/nginx-rtmp
来搭建 rtmp 服务器。
sudo docker pull tiangolo/nginx-rtmp
等下载完成之后就可以启动这个镜像
sudo docker run -d -p 1935:1935 --name nginx-rtmp tiangolo/nginx-rtmp
然后就可以直接使用 OBS 推流了。在推流的地址上填写 rtmp://你电脑的 ip 地址/live
,密钥随便填写。然后可以开始串流了。
在可以看串流的客户端上(例如 vlc )打开网络串流,地址就是 rtmp://你电脑的 ip 地址/live/你的密钥
。
因为 CentOS 和 Ubuntu 都有防火墙,如果没法推流或者接收推流的话,有可能是因为防火墙的问题。这时最好让防火墙打开 1935 端口的访问,或者直接关掉防火墙(一般是叫做 firewall 的服务或者 ufirewall )。