linux nginx搭建
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.安装nginx
1.解压安装包
分别解压nginx,pcre,openss,nginx-rtmp-module,nginx_mod_h264_streaming到/root/work/nginx_download目录下,进入nginx解压后的目录nginx-1.6.2
2.安装nginx
./configure\
--prefix=/root/work/nginx_download/nginx\
--with-pcre=../pcre-8.36\
--with-http_stub_status_module\
--with-http_ssl_module\
--add-module=../nginx_mod_h264_streaming-2.2.7\
--add-module=../nginx-rtmp-module-master\
--with-debug --with-openssl=../openssl-1.0.1 j
make && make install
安装成功后,/root/work/nginx_download/nginx\下会有相关软件生成
出错解决方法:/vblittleboy/article/details/40616405
3.配置nginx
请将文件安装包\nginx\配置文件\nginx_rtmp.conf 拷贝到nginx/conf下
4.启动nginx
./sbin/nginx -c conf/nginx_rtmp.conf
正常运行后,可以发现有三个nginx进程
5.推流
利用ffmpeg可以将视频文件已rtmp格式推送到nginx服务器中。
推送流命令如下:./ffmpeg -re -i 7.mp4 -c copy -f flv rtmp://192.168.1.102/hls/1
6.观看效果
在/tmp/app下存在切片生成的ts流,通过hls协议就可以以点播的形式实现直播技术。
可以在pc上以及安卓系统中通过rtmp协议观看。
也可以在ios系统上通过hls协议观看。
相比,hls协议观看延迟要大些,大概延迟在1分钟左右。
7.nginx配置文件(修改配置文件时了解)
参考文档:
/eguid_1/article/details/51821297
#Nginx用户及组:用户组。window下不指定
user nginx nginx ;
#通常等于CPU数量或者2倍于CPU。
worker_processes 5
进程数改成1,否则客户端点播有问题
#错误日志查看出问题时日志位置
error_log logs/error.log;
#pid(进程标识符):存放路径。
pid logs/nginx.pid;
#指定进程可以打开的最大描述符:数目。
worker_rlimit_nofile 204800;
这个指令是指当一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit -n 的值保持一致。现在在linux 2.6内核下开启文件打开数为65535,worker_rlimit_nofile就相应应该填写65535。这是因为nginx调度时分配请求到进程并不是那么的均衡,所以假如填写10240,总并发量达到3-4万时就有进程可能超过10240了,这时会返回502错误。
events {
#工作进程的最大连接数量,根据硬件调整,和前面工作进程配合起来用,尽量大,但是别把cpu跑到100%就行
4096;
hls_continuous
语法:hls_continuous on|off
上下文:rtmp, server, application
描述:切换HLS 连续模式。这一模式下HLS 序列号由其上次停止的最后时间开始。老的分段保留下来。默认为off。
record off:什么都不录制
record all:录制所有
record video:只录制视频
record audio:只录制音频
record keyframes:只录制关键帧
record maual:通过接口控制录制的启动停止
可以进行组合,比如:record video keyframes:就是只录制视频关键帧
#每一个application下都可以设置录制位置,时长等信息
rtmp
{
application live1
{
}
application live2
{
}
application hls
{
}
}
此段url为:rtmp://*/live/*
http://*/hls/*
hls_playlist_length 300s,代表了m3u8中ts流总长度,同时存储的ts总长度也在五分中左右。
hls关键字不会因为live改变。
application live{
live on;
hls on;
hls_path /tmp/app;
hls_fragment 10s;
hls_playlist_length 300s;
hls_sync 100ms;
meta copy;
#recorder chunked {
# record all;
# record_max_size 6200K;
# record_interval 10s;
# record_suffix -%Y-%m-%d-%H_%M_%S.flv;
# record_path /tmp/video;
# }
# recorder all {
# record all;
# record_suffix -%Y-%m-%d-%H_%M_%S.flv;
# record_max_size 6200000K;
# record_path /tmp/app3;
# }
}
1、recorder块:可以支持多方录制。
创建录制块,可以在application块中添加多个recorder记录,recorder块中可以使用所有录制指令,recorder块继承application块中的录制指令。(所有record开头的都是录制指令)。
目前遇到的问题:除了hls录制外,其他方式不支持分片。
貌似hls直播只能是http://*/hls/
#录制信息参考
application hls {
live on;
hls on;
hls_path /tmp/app; //录制位置(目录需要自己提前创建)
hls_fragment 10s; //每个ts平均大小
hls_playlist_length 60s; //时移时长
hls_sync 100ms; //音画同步差值
meta copy;
recorder chunked {
record all;