注意:这里不会讲到nginx流媒体模块如何安装的问题,只研究rtmp,hls直播和录制相关的nginx服务器配置文件的详细用法和说明。可以对照这些命令详解配置nginx -rtmp服务

一、nginx的hls配置实例

注:nginx采用nginx1.9.x版本

实例配置如下(下面会讲解每个指令的含义和用法):

rtmp
{server{listen 1935;chunk_size 8192;#vod configapplication vod{play /var/vod/flv;}#live configapplication live{live on;max_connections 1024;allow play all;record_path /var/live;recorder audio{record audio;record_suffix -%d-%b-%y-%T.flv;} recorder chunked{record all;#record_max_size 5120K;record_interval 15s;record_path /var/live/chunked;}}#hlsapplication hls{live on;hls on;hls_path /var/hls;hls_playlist_length 30s;hls_sync 100ms;        meta on;recorder chunked{record all;#record_max_size 5120K;record_interval 15s;record_path /var/hls/Chunked;}recorder audio {record audio;record_suffix -%d-%b-%y-%T.flv;}}}
}

二、配置详解

注:配置指令的解释基于nginx官方的2013年nginx-rtmp-model文档

1、rtmp{}

是一个用于保存所有rtmp配置的块

在这里就是rtmp直播录播配置的根

2、server{}

server块里面放服务器实例,比如配置里的三个application(application在第6个解释)

3、listen

listen比较好理解,监听某个端口,让nginx监听并接收rtmp连接

4、chunk_size

接收网络流的块大小,接触过NIO的应该比较清楚,基于块比基于流效率要高,chunk_size默认值是4096,至少128,数字越大服务器负载越高,服务器调优这里较为重要

5、注释:#

nginx配置文件里使用‘#’作为注释

6、application

见名知意,创建一个应用/实例,后面接上应用实例类型,如上配置,创建了三个应用,比如上面配置的三个服务器应用实例:(1)rtmp录播(vod),(2)rtmp直播(live),(3)hls直播(hls)

重要:rtmp模块的配置与nginx的http模块是两种不同的配置指令,两者不要混淆

7、vod(录播)配置详解

play  录播的播放目录

8、live(直播)配置详解

(1)live   on/off

直播模式,一对多广播

(2)max_connections

最大连接数,rtmp直播流协议属于长连接协议,服务器能开多少连接要把握好,hls协议是基于http的协议,所以理论上要比rtmp协议并发量要高很多

(3)allow play/publish all/ip地址

允许来自指定的地址/所有地址播放和发布

比如上面配置使用allow play all允许所有地址播放实时流,如果设置成allow play 127.0.0.1 就是只允许本地播放;

再举个例子:allow publish 127.0.0.1就是允许本机发布实时流,其他地址都不能发布。

(4)record_path

用来指定录制文件的目录,默认是/tmp

(5)record  off/all/video/audio/keyframes/maual

record off:什么都不录制

record all:录制所有

record video:只录制视频

record audio:只录制音频

record keyframes:只录制关键帧

record maual:通过接口控制录制的启动停止

可以进行组合,比如:record video keyframes:就是只录制视频关键帧

(6)record suffix

录制文件的文件名后缀,默认是.flv

比如上面的配置 record suffix -%d-%b-%y-%T.flv,录制文件生成文件名就是这样(举例):应用名-24-Jul-04-17:07:45.flv

(7)record_max_size

上面配置:record_size 5120k,录制文件的最大值是5M

(8)record_interval

配置里的:record_interval 15s,就是录制文件的间隔,间隔15秒开始下一个片段的录制;

设置成 record_interval 0就是录制视频文件没有间隔;

设置成record-interval off就会把所有视频流全都写到一个文件里去。

重要:想要把流媒体保存文件,这个可以用来做文件分片,可以按天或者按小时生成新的文件,很实用的功能

9、hls直播配置详解

(1)hls on

这个参考 live on就行了,很简单,就是开不开启hls,hls off就是不开启

(2)hls_path

就是录制视频文件的目录/路径

(3)hls_playlist_length

hls播放列表长度,默认30分钟,这里设置成30秒:hls_playlist_length 30s

(4)hls_sync

设置hls时间戳同步阈值,通俗一点就是强制的音/视频同步,可以防止音画不同步的现象,默认是2ms,

(5)meta on

切换发送视频元数据到客户端,默认就是meta on,如果想要用修改后的视频得用meta off了

三、本篇文章的配置文件就只有上面那么多,下面补充一些常用到的nginx rtmp指令

1、recorder块

创建录制块,可以在application块中添加多个recorder记录,recorder块中可以使用所有录制指令,recorder块继承application块中的录制指令。(所有record开头的都是录制指令)。


live指令补充:

2、wait_key

wait_key指令是否等待视频从一个关键帧开始(录播想要实现视频的进度随意控制就需要视频中存在关键帧),

默认是off:不开启,设置为on:开启。

3、drop_idle_publisher

终止指定时间内空闲的发布连接,默认是不开启,如

drop_idle_publisher 10s; 推荐开启该功能

4、sync

同步音频和视频,默认是 sync 300ms。

这是很常见的问题,如果用户的带宽不足就会自动丢掉一些帧,这时就会产生同步问题;

sync指令作用就是隔一段时间发送一个时间戳来同步音频和视频。

5、meta

发送元数据到客户端,默认是 meta on;meta off就是不发送元数据,一般不需要更改。

(音视频的元数据包含一些视频的基本信息,比如标题,文件大小,关键帧,视频长度等等信息)

record指令补充:

1、record_unique

是否添加时间戳到录制文件,默认是 record_unique off:不添加

不开启的效果就是同样的录制文件每次录制的时候都会被覆盖重写,当然可以通过给文件名添加时间后缀的形式避免,其实两个效果是一样的,一个可以控制格式,一个不能控制格式的问题

2、record_append

切换文件的附加模式,默认是record_append off

如果设置成on开启的话录制的时候就会在老文件后面追加视频,不开启的效果就是上面讲到的覆盖重写

3、record_lock

录制的时候锁定文件,默认是off;

不锁定的话,客户端可以实时播放录制的视频,可以达到跟直播一样的效果了

4、record_max_frames

录制文件的最大视频帧数量,比如record_max_frames 20 就是这个录制文件最大20个视频帧(视频帧的作用上面已经解释过了,用来控制进度拖放的)

HLS指令补充:

未完待续

实时监控、直播流、流媒体、视频网站开发方案流媒体服务器搭建及配置详解:使用nginx搭建rtmp直播、rtmp点播、,hls直播服务配置详解相关推荐

  1. 【解决方案】基于EasyGBS搭建的移动终端视频实时监控国家安全局无线视频指挥系统技术方案

    一.方案背景 国家安全局是人民政府的一个组成部门,主管全市安全工作.在省委.省政府.市委.市政府和国家安全部的领导下,负责和管理地区防范.打击危害国家安全行为的工作,开展隐蔽战线的对敌斗争,保卫国家安 ...

  2. 专业的直播APP音视频互动开发平台

    专业的直播APP音视频互动开发平台,全互动音视频直播SDK,多人随机连麦,重现现场互动 云智真全互动音视频直播SDK,全球首个基于 UDP 的直播 SDK,只有毫秒级的延迟,10000 人语音连麦,多 ...

  3. 音视频开发(15)---IPC+NVR+路由器+ffmpeg+nginx实现网页/Android/IOS的HLS直播

    海康IPC+NVR+路由器+ffmpeg+nginx实现网页/Android/IOS的HLS直播 研究摄像头直播有一个月了,最终领导决定使用HLS协议进行摄像头实时预览,原因是HLS对移动端和Web端 ...

  4. 流媒体视频网站Go语言实现

    项目开源地址 Github:https://github.com/JIeJaitt/stmsrv API 设计 List all videos:URL:user/ 总结一下 api 根据 Handle ...

  5. SSM整合+视频网站开发

    课程目标 使用SpringMVC+Mybatis+Spring+Maven进行分模块整合 简单实现视频网站开发 一.项目演示 视频网站构建模式 分为:自建模式和第三方模式 自建模式:需要自己搭建服务器 ...

  6. 在线视频播放网站服务器配置,在线播放视频网站应该如何选择服务器

    原标题:在线播放视频网站应该如何选择服务器 我们都知道视频类应用对服务器的要求是非常高的,特别是在线播放的视频类网站.要满足大量用户同时在线观看视频,并且做到随意拖动进度条都能流畅播放,对服务器的配置 ...

  7. 实时监控、直播流、流媒体、视频网站开发方案设计简要

    快速传送至:javacv入门指南:序章 快速传送至:从零开始开发和搭建直播平台-教程汇总篇 javaCV系列文章: javacv开发详解之1:调用本机摄像头视频 javaCV开发详解之2:推流器实现, ...

  8. flv直播流播放视频,websocket响应造成内存泄漏 浏览器崩溃

    项目现状: 问题:公司做了个监控设备的直播流大屏,技术使用了flv 和websocket,项目写好了,拿到他们那边使用运行了40分钟 浏览器崩溃了,报内存不足 ## 解决思路一:第一个我想到的是flv ...

  9. py 网站实时监控+可手动回溯回放网站数据的实现

    这里以xxx壁纸网站为例,实现可回溯数据与实时监控,其实要实现实时监控并不难,但是要实现数据回溯所涉及的细节就特别的多了 先说实时监控,先获取主网页的信息,对当前主网页的信息进行提取,从而获取时间信息 ...

最新文章

  1. 理解shared_ptrT
  2. Linux安装HDF5及遇到的问题总结
  3. 面试官问你 SpringMVC 的工作原理,你还不知道吗?
  4. 单个像素 亮度 HTML,YUV与像素值之间的关系
  5. 英特尔表示:元宇宙的路还很长
  6. Spring的任务调度@Scheduled注解——task:scheduler和task:executor的解析
  7. 如何隐藏win32 console application的console窗口
  8. 输入图像四通道 输出图像四通道
  9. 计算机硬件中板卡目前设备有哪几种,呼叫中心所需的硬件设备都有哪些?
  10. Kotlin Weekly 中文周报 —— 102
  11. apache高性能配置
  12. 计算机无法识别建行网银盾,建行网银盾无法识别怎么办 几招办法教你轻松解决...
  13. 投影幕布尺寸计算器_投影幕布:投影幕布的尺寸计算
  14. 完美解决Sudo doesn‘t work: “/etc/sudoers is owned by uid 1000, should be 0”
  15. python输入包含20个数的列表_学习笔记20:Python基础使用(参数,嵌套,列表,元组,字典,字符串等)...
  16. 苹果官方mfi认证名单_阿里六星级运营服务商名单出炉!获得官方认证的公司花落谁家?...
  17. 60个Vue常见问题汇总及解决方案
  18. matlab声音信号调制-3种方法(附matlab代码)
  19. Android P (9.0)刘海屏(DisplayCutout)适配方法
  20. MIPI屏和LVDS屏有什么区别

热门文章

  1. 注册表文件(.reg)编写方法
  2. atm取款机代码 java_ATM取款机java代码
  3. 带你走进我的家乡---隆回
  4. 如何用公式编辑器打除号?
  5. uniapp v-html不生效(浏览器内生效)
  6. Markdown查看器-typora
  7. 低成本免服务器微信小程序源码多功能集合搭建
  8. 视觉SLAM十四讲(一)——罗德里格斯转换公式推导
  9. 【Django 开发】面试招聘信息网站(用户登录注册投在线递简历)
  10. 秦岭土蜂蜜价格 秦岭土蜂蜜多少钱一斤