一 提要說明
利用nginx搭建流媒體直播平臺,目標就是要支持rtmp協議,實現用戶利用rtmp(rtmp://192.168.201.128/myapp)協議推送流隨處事器。然后其他用戶點播該用戶推送的視頻流信息。既然是rtmp協議,所以客戶端可以是flash措施,也可以OBS(Open Broadcaster
Software)這種較量普通化的直播客戶端。小我私家是較量喜歡利用OBS的,誠懇說我其實也是flash和flex開拓者,開拓個多款WEB視頻措施和視頻集會會議系統。java程度也是很高的。接待打臉,香港主機租用
香港高防服務器,我這種人就不怎么謙虛,因為我覺太謙虛就虛偽了.
再世面上有許多流媒體處事器。有貿易的也有開源,好比常用FMS,Red5,wowza.crtmpserver,等,假如是做小型視頻集會會議,我小我私家強烈推薦Red5。Red5有很開放的api,對付開拓及時性要求較量高的很利便。開拓東西和開拓java的人上手也很快。
二 情況籌備
1 籌備一臺linux的操縱系統,我的Centos5。windows
再nignx上本身編譯模塊很貧苦的,所以我就在Centos上測試。我的系統信息如下:
Linux localhost 2.6.18-128.el5 #1 SMP Wed Jan 21 10:44:23 EST
2009 i686 athlon i386 GNU/Linux
2 籌備軟件包
nginx-1.4.7.tar.gz
nginx-rtmp-module-1.1.7.tar.gz
三 開始安裝
1 安裝nginx所需要的依賴包。留意差異系統可能模塊需要的依賴包是紛歧樣的。我這里值安裝最根基的就行了。
"blog_20160205_1_6086627" name="code" >
[[email protected] html]# yum install -y gcc gcc-c++
[[email protected] html]# yum install –y openssl-devel pcre-devel zlib-devel
留意:最好不要用默認的yum源。都統一換成阿里云的yum源。
2 先解壓包,這不沒什么難度吧。然后執行ningx設置文件。執行沒問題后,執行編譯,安裝
[[email protected] local]# tar -zvxf nginx-1.4.7.tar.gz
[[email protected] local]# wget https://github.com/arut/nginx-rtmp-module/archive/v1.1.7.tar.gz
[[email protected] local]# tar nginx-rtmp-module-1.1.7.tar.gz
[[email protected] local]# tar -zxvf nginx-rtmp-module-1.1.7.tar.gz
[[email protected] local]# cd /usr/local/nginx-1.4.7
./configure --prefix=/usr/local/nginx --add-module=/usr/local/nginx-rtmp-module-1.1.7
[[email protected] nginx-1.4.7]# make && make install
輸出日志我就不貼出來了。編譯完成后。就該修改nginx的設置文件,讓nginx支持rtmp協議。
3 修改設置文件后內容如下(改設置文件可以參考):
[[email protected] test]# pwd
/usr/local/nginx-rtmp-module-1.1.7/test
[[email protected] test]# ll
total 56
-rwxrwxr-x 1 root root 49 Mar 24 2015 dump.sh
-rwxrwxr-x 1 root root 84 Mar 24 2015 ffstream.sh
-rw-rw-r-- 1 root root 1245 Mar 24 2015 nginx.conf
-rwxrwxr-x 1 root root 59 Mar 24 2015 play.sh
-rw-rw-r-- 1 root root 499 Mar 24 2015 README.md
drwxrwxr-x 2 root root 4096 Mar 24 2015 rtmp-pu
為了利便我把我的ngin的設置文件完整的貼出來:
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
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 {
include mime.types;
default_type application/octet-stream;
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
#error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
四 啟動處事器,測試
1 執行nginx/sbin/nginx 啟動處事。你應該可以或許看隨處事器也啟用1935端口,就暗示nginx已經支持rtmp推送流了。