1. 程式人生 > >在Centos7上搭建Nginx+rtmp服務器

在Centos7上搭建Nginx+rtmp服務器

nginx服務 onf 重新 成了 現在 str pid 安裝 host

在VPS服務器上配置一個直播環境,在iOS客戶端實現推流到直播服務器,通過VLC播放器實現拉取服務器上的流觀看直播。

效果圖

技術分享圖片 Demo_01

Centos7上搭建Nginx+rtmp服務器

今天第一次在Centos7上搭建Nginx+rtmp服務器,以前在Mac上成功搭建,所以今天想在Centos7上試一試,在此記錄一下,過程還是比較順利。

(1)準備需要的模塊及工具(nginx-rtmp-module,openssl和git)

1.使用yum安裝git

[root~]# yum -y install git

2.下載nginx-rtmp-module,官方github地址

// 通過git clone 的方式下載到服務器上
[root~]# git clone https://github.com/arut/nginx-rtmp-module.git

3.yum 安裝 openssl

[root~]# yum -y install openssl openssl-devel

(2)安裝Nginx服務器。官網地址

1.下載Nginx解壓,並添加rtmp和openssl支持

//這裏我安裝的是 nginx-1.10.3 版本
[root~]# wget http://nginx.org/download/nginx-1.10.3.tar.gz 
[root~]# tar -zxvf nginx-1.10.3.tar.gz 
[root~]# cd nginx-1.10.3
//添加rtmp和openssl支持
[root~]# ./configure --add-module=/替換為自己的安裝路徑(path/to)/nginx-rtmp-module --with-http_ssl_module
[root~]# make && make install

2.如果已經安裝過Nginx,只需要找到Nginx源碼目錄添加rtmp的支持即可。

1.查看當前安裝的Nginx版本
[root~]# /usr/local/nginx/sbin/nginx -v
查詢結果:nginx version: nginx/1.10.3
2.再使用find命令查找其位置
[root~]# find / -name nginx-1.10.3
查詢結果:/root/nginx-1.10.3
3.cd到查詢到的源目錄
[root~]# cd  /root/nginx-1.10.3
4.添加rtmp的支持(如果看到一個綠色的 configure 文件就說明查找對了)
[root~]# ./configure --add-module=/替換為自己的安裝路徑(path/to)/nginx-rtmp-module
[root~]#  make && make install
5.啟動nignx
[root~]# /usr/local/nginx/sbin/nginx 

這樣nginx和rtmp模塊就安裝完成了,此時在瀏覽器中打開 自己的ip地址或者綁定的域名:8080

技術分享圖片 安裝成功
如果終端上出現了:

nginx: [emerg] bind() to 0.0.0.0:8080 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:8080 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:8080 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:8080 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:8080 failed (48: Address already in use)
nginx: [emerg] still could not bind()

則表示8080端口被占用了,查看端口PID

[root~]# lsof -i tcp:8080

根據端口PID, kill掉(這兒的9603換成你自己8080端口的PID)

[root~]# kill 9603

然後重新執行

[root~]# /usr/local/nginx/sbin/nginx 

(3)修改Nginx的配置文件nginx.conf

使用vim命令打開 nginx.conf,輸入 i 進入編輯狀態

[root~]# vim /usr/local/nginx/conf/nginx.conf  

直接滾到最後一行, 在最後一個}(即最後的空白處, 沒有任何{})後面添加

# 在http節點後面加上rtmp配置:
rtmp {
    server {
        listen 1935;
        application rtmplive {
            live on;
            record off;
        }
    }
}

最後一步保存退出,並重啟nginx

[root~]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

(4)安裝FFmpeg

1.安裝EPEL Release,因為安裝需要使用其他的repo源,所以需要EPEL支持

[root~]# yum install -y epel-release 

如果出現缺少Code提示,可以:

[root~]# sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

安裝完成之後,可以查看是否安裝成功

[root~]# yum repolist 

2.安裝Nux-Dextop源
導入一個Code

[root~]# sudo rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro 

安裝nux-dextop 源

[root~]# sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpm

3.使用yum ffmpeg,這個安裝耗時可能較長。

[root~]# yum install -y ffmpeg

安裝完成後檢查ffmpeg 版本

[root~]# ffmpeg -version

如果看到這樣的信息,表示安裝成功

技術分享圖片 版本信息.png
這樣服務器就完全配置好了,剩下的工作就是通過VLC實現拉流觀看直播,通過iOS客戶端推流到服務器。

快速集成iOS直播推流

這裏的直播推流我使用的是優酷土豆旗下來瘋直播開源的iOS推流框架LFLiveKit,是用OC寫的,文檔註釋很詳細,很適合學習。

使用LFLiveKit快速集成iOS直播推流

直接從GitHub上下載LFLiveKit,裏面有簡單的Demo,真機運行提供的Demo,將Demo中的 **stream.url ** 替換為自己的地址即可。
直播推流地址:

rtmp://www.自己的域名或者ip地址:1935/rtmplive/room(room可以自己命名,但是必須與VLC中拉流地址一致)

使用VLC觀看推流到服務器的直播視頻

將視頻推流到服務器後,打開VLC,然後File->open network->輸入:

rtmp://www.自己的域名或者ip地址:1935/rtmplive/room(必須與iOS端的推流地址一致)

總結

總體來說,在Centos7上搭建Nginx+rtmp直播測試環境還是比較簡單,如果需要投入到生產中去,還是比較復雜的,需要專業的後臺人員搭建專業的直播環境並維護。不過現在有很多成熟完善的第三方直播提供商,環境搭建和集成都有詳細文檔,例如:七牛,騰訊雲等等。



作者:MichleMin
鏈接:https://www.jianshu.com/p/4ed63b041bd9
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並註明出處。

在Centos7上搭建Nginx+rtmp服務器