在Centos7上搭建Nginx+rtmp服務器

轉自:https://www.cnblogs.com/xu360/articles/6783539.html

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

1.使用yum安裝git

yum -y install git

2.下載nginx-rtmp-module

// 通過git clone 的方式下載到服務器上
cd /usr/local/src
git clone https://github.com/arut/nginx-rtmp-module.git

3.yum 安裝 openssl

yum -y install openssl openssl-devel

4.yum 安裝 gcc環境

yum -y install gcc glibc glibc-devel make nasm pkgconfig lib-devel openssl-devel expat-devel gettext-devel libtool mhash.x86_64 perl-Digest-SHA1.x86_64

二、安裝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=/usr/local/src/nginx-rtmp-module --with-http_ssl_module
[root~]# make && make install

2.如果已經安裝過Nginx,只需要找到Nginx源碼目錄添加rtmp的支持即可。(如果執行第1項,此項可忽略)

1.查看當前安裝的Nginx版本
/usr/local/nginx/sbin/nginx -v
查詢結果:nginx version: nginx/1.10.3

2.再使用find命令查找其位置
find / -name nginx-1.10.3
查詢結果:/root/nginx-1.10.3

3.cd到查詢到的源目錄
cd  /root/nginx-1.10.3

4.添加rtmp的支持(如果看到一個綠色的 configure 文件就說明查找對了)
./configure --add-module=/替換爲自己的安裝路徑(path/to)/nginx-rtmp-module
make && make install

3.啓動nignx

/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

lsof -i tcp:8080

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

kill 9603

然後重新執行

/usr/local/nginx/sbin/nginx

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

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

vi /usr/local/nginx/conf/nginx.conf

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

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

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

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

(4)安裝FFmpeg

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

yum install -y epel-release

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

sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

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

yum repolist

2.安裝Nux-Dextop源

導入一個Code

sudo rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro

安裝nux-dextop 源

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,這個安裝耗時可能較長。

yum install -y ffmpeg

安裝完成後檢查ffmpeg 版本

ffmpeg -version

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

這樣服務器就完全配置好了,剩下的工作就是通過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直播測試環境還是比較簡單,如果需要投入到生產中去,還是比較複雜的,需要專業的後臺人員搭建專業的直播環境並維護。不過現在有很多成熟完善的第三方直播提供商,環境搭建和集成都有詳細文檔,例如:七牛,騰訊雲等等。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章