在Centos7上搭建Nginx+rtmp服務器
在VPS服務器上配置一個直播環境,在iOS客戶端實現推流到直播服務器,通過VLC播放器實現拉取服務器上的流觀看直播。
效果圖
Demo_01Centos7上搭建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服務器