测试使用的系统为CentOS7.3、所有文章中涉及到的包打包在以下地址:
链接:http://pan.baidu.com/s/1nuF3gLV 密码:fo8q
Nginx-Rtmp-Module 安装
1). 安装依赖包
yum -y install gcc glibc glibc-devel make nasm pkgconfig openssl-devel expat-devel gettext-devel libtool perl-Digest-SHA1.x86_64
2). yum 安装相关工具包及 ffmpeg 依赖包
yum -y install git zlib pcre openssl
3). 手动编译安装工具包和依赖包
a). yadmi
tar xzvf yamdi-1.9.tar.gz cd yamdi-1.9 make && make install cd ..
b). yasm
tar xzvf yasm-1.3.0.tar.gz cd yasm-1.3.0 ./configure make && make install cd ..
c). x264
tar -xjvf x264.tar.bz2 cd x264-snapshot-20170111-2245 ./configure --enable-shared make && make install cd ..
d). lame
tar xzvf lame-3.99.5.tar.gz cd lame-3.99.5 ./configure --enable-nasm make && make install cd ..
e). faad2
tar zxvf faad2-2.7.tar.gz cd faad2-2.7 ./configure make && make install cd ..
f). faac
tar zxvf faac-1.28.tar.gz
cd faac-1.28
./configure
make && make install
cd ..
```
g). **xvid**
tar zxvf xvidcore-1.3.3.tar.gz
cd xvidcore/build/generic
./configure
make && make install
cd ..
```
h). ffmpeg
tar -xjvf ffmpeg-3.2.4.tar.bz2
cd ffmpeg-3.2.4
./configure --prefix=/opt/ffmpeg/ --enable-version3 --enable-libvpx --enable-libmp3lame --enable-libvorbis --enable-libx264 --enable-libxvid --enable-shared --enable-gpl --enable-postproc--enable-nonfree --enable-avfilter --enable-pthreads
make && make install
cd ..
```
i). 修改/etc/ld.so.conf如下:
```
include ld.so.conf.d/*.conf
/lib
/lib64
/usr/lib
/usr/lib64
/usr/local/lib
/usr/local/lib64
/opt/ffmpeg/lib
ldconfig
```
4). 安装 Nginx
```
tar zxvf nginx-1.9.9.tar.gz
unzip nginx-rtmp-module-master.zip
tar zxvf openssl-1.0.2k.tar.gz
cd nginx-1.9.9
./configure --add-module=../nginx-rtmp-module-master --without-http_rewrite_module --with-openssl=../openssl-1.0.2k
make & make install
cd ..
```
## nginx.conf配置
# nginx.conf Start
worker_processes 1; # nginx对外提供 web 服务时的 worker 进程数
error_log logs/error.log debug; # 错误日志路径
pid logs/nginx.pid; # pid 文件路径
worker_rlimit_nofile 51200; # worker 进程的最大打开文件数限制
events { # events 模块中包含 nginx 中所有处理连接的设置。
use epoll; # 设置用于复用客户端线程的轮询方法。
worker_connections 51200; #由一个 worker 进程同时打开的最大连接数。
}
rtmp_auto_push on; # 切换自动推送(多 worker 直播流)模式
rtmp_auto_push_reconnect 1s; # 当 worker 被干掉时设置自动推送连接超时时间。默认为 100 毫秒。
rtmp { # 保存所有 RTMP 配置的块。
server { # 声明一个 RTMP 实例。
listen 1935; # 监听的端口号
chunk_size 4096; # 流整合的最大的块大小。默认值为 4096。
application vod { # 创建一个 RTMP 应用。
play /opt/media/nginxrtmp/flv; # 点播文件路径
}
application live { # 创建一个 RTMP 应用。
live on; # 是否直播
hls on; # 是否开启hls
hls_path /usr/local/nginx/html/live; # 设置 HLS 播放列表和分段目录。
hls_fragment 1s; # 设置 HLS 分段长度。
max_connections 1024; # 最大连接数
hls_playlist_length 30s; # HLS 播放列表长度
hls_sync 100ms; # HLS 时间戳同步阈值
meta copy; # 是否发送元数据到客户端
recorder manual { # 创建一个录制应用
record all manual; # 设置录制模式
record_suffix %Y-%m-%d-%H_%M_%S.flv; # 设置录制文件名
record_max_size 6200000K; # 设置录制文件的最大值
record_path /usr/local/nginx/html/Rec; # 指定录制的 flv 文件存放目录
}
#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;
}
# application hls {
# live on;
# hls on;
# hls_path /tmp/app;
# hls_fragment 5s;
# }
# application hls{
# live on;
# hls on;
# hls_path /usr/local/nginx/html/hls;
# hls_fragment 5s;
# }
}
}
http {
server {
listen 5000;
keepalive_timeout 65;
location /stat {
rtmp_stat all;
rtmp_stat_stylesheet stat.xsl;
}
location /stat.xsl {
root /opt/nginx-rtmp-server/nginx-rtmp-module/;
}
location /control {
rtmp_control all;
}
location /rtmp-publisher {
root /opt/nginx-rtmp-server/nginx-rtmp-module/test;
}
location / {
root /opt/nginx-rtmp-server/nginx-rtmp-module/test/www;
}
location /crplayer {
root /opt/nginx-rtmp-server/nginx-rtmp-module/test;
}
location /live {
#server hls fragments
types{
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
root html;
expires -1;
}
}
}
# nginx.conf End
## 运行Nginx服务
/usr/local/nginx/sbin/nginx -c /root/nginx/nginx.conf