时间:2022-02-09 09:24:30 | 栏目:Nginx | 点击:次
这次我们搭建一个rtmp直播服务器,用于电脑或手机直播推流到服务器,然后其他终端如电脑或手机可以观看直播的视频画面。 我们这里用电脑录屏软件将实时录制的电脑屏幕画面直播给其它人看。总共需要3部分,第一,录屏软件录制电脑屏幕,并传递画面流到服务器; 第二,服务器rtmp搭建,应能接收来自录屏软件上传的画面;第三,视频播放器客户端能连接到rtmp服务器,接收rtmp服务器推送的视频流,从而可实时观看第一部分录屏软件的实时画面。这里最核心的就是第二部分,搭建rtmp服务器。
nginx是一个服务器软件,类似于tomcat,用于发布服务器程序
(1)下载地址:在linux下执行 wget http://nginx.org/download/nginx-1.15.3.tar.gz命令,下载压缩包。
(2)解压,使用tar命令: tar xvf nginx-1.15.3.tar.gz
wget https://codeload.github.com/arut/nginx-rtmp-module/tar.gz/v1.2.1 同样解压tar xvf v1.2.1
./configure --prefix=./bin --add-module=../nginx-rtmp-module-1.2.1
cd nginx-rtmp-module-1.2.1打开文件夹,cd test文件夹,修改nginx.conf文件的内容为:
worker_processes 1; error_log logs/error.log debug; events { worker_connections 1024; } rtmp { server { listen 1935; application myapp { live on; #record keyframes; #record_path /tmp; #record_max_size 128K; #record_interval 30s; #record_suffix .this.is.flv; #on_publish http://localhost:8080/publish; #on_play http://localhost:8080/play; #on_record_done http://localhost:8080/record_done; } } } http { server { listen 8080; location /stat { rtmp_stat all; rtmp_stat_stylesheet stat.xsl; } location /stat.xsl { root /path/to/nginx-rtmp-module/; } location /control { rtmp_control all; } #location /publish { # return 201; #} #location /play { # return 202; #} #location /record_done { # return 203; #} location /rtmp-publisher { root /path/to/nginx-rtmp-module/test; } location / { root /path/to/nginx-rtmp-module/test/www; } } }
到时候推流地址就是 rtmp://IP:PORT/myapp/{abc},其中{abc}中的abc是可选的,一般是一个推流密码,往服务器推送或接收视频流时,可填写一个密码,如abc。rtmp默认服务器端口是1935,如果这个端口被占用,可以杀死占用这个端口的进程,使用如下命令:
kill -9 pid (其中pid是进程id)。
然后用这个conf 替换 nginx-1.15.3/bin/conf下的nginx.conf ,
使用mv nginx.conf nginx.conf.bak命令重命名原来的nginx.conf,可以不用删除原文件。
cd nginx-1.15.3
打开nginx文件夹
/root/nginx-1.15.3/bin/sbin/nginx
启动nginx
启动后,从浏览器里访问122.112.220.253:8080。
如果打不开,
1. 在服务器上建立安全规则,开发入口规则,把1935,8080这两个端口开启,协议是TCP.
2. nginx-1.15.3/bin/conf下的nginx.conf里最顶部 修改用户: user root;
此时,nginx.conf的内容如下:
user root; worker_processes 1; error_log logs/error.log debug; events { worker_connections 1024; } rtmp { server { listen 1935; application myapp { live on; drop_idle_publisher 5s; } } } http { server { listen 8082; location /stat { rtmp_stat all; rtmp_stat_stylesheet stat.xsl; } location /stat.xsl { root /root/nginx-rtmp-module-1.2.1/; } location /control { rtmp_control all; } location /rtmp-publisher { root /root/nginx-rtmp-module-1.2.1/test; } location / { root /root/nginx-rtmp-module-1.2.1/test/www; } } }
3. 重启nginx,再次访问122.112.220.253:8082,成功。
下次我们就用一个录屏软件录制电脑屏幕,使用rtmp协议向服务器上推送电脑屏幕画面,同时用播放器来播放服务器上的rtmp直播流。