使用Nginx搭載rtmp直播服務器的方法

       這次我們搭建一個rtmp直播服務器,用於電腦或手機直播推流到服務器,然後其他終端如電腦或手機可以觀看直播的視頻畫面。 我們這裡用電腦錄屏軟件將實時錄制的電腦屏幕畫面直播給其它人看。總共需要3部分,第一,錄屏軟件錄制電腦屏幕,並傳遞畫面流到服務器; 第二,服務器rtmp搭建,應能接收來自錄屏軟件上傳的畫面;第三,視頻播放器客戶端能連接到rtmp服務器,接收rtmp服務器推送的視頻流,從而可實時觀看第一部分錄屏軟件的實時畫面。這裡最核心的就是第二部分,搭建rtmp服務器。

1. 下載nginx

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

2. 下載nginx rtmp模塊

​    wget https://codeload.github.com/arut/nginx-rtmp-module/tar.gz/v1.2.1 同樣解壓tar xvf v1.2.1  

3. 編譯nginx

./configure –prefix=./bin –add-module=../nginx-rtmp-module-1.2.1

4. 修改nginx-rtmp-module中的conf文件

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,可以不用刪除原文件。

5. 啟動nginx

cd nginx-1.15.3  

打開nginx文件夾

/root/nginx-1.15.3/bin/sbin/nginx 

啟動nginx

6. 驗證nginx rtmp流媒體是否部署成功

啟動後,從瀏覽器裡訪問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直播流。

到此這篇關於使用Nginx搭載rtmp直播服務器的文章就介紹到這瞭,更多相關rtmp直播服務器內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: