Nginx-rtmp-module(基础篇)

目前市场上很多直播平台,已经步入全民直播的时代!作为开发者,Nginx-rtmp-module是一个上手简单但功能又不俗的学习切入点。

1. Nginx-rtmp-module 简介

Nginx-rtmp-module包含以下特性:

  • 支持RTMP、HLS、MPEG-DASH
  • 支持RTMP、HLS点播
  • 可将直播视频分段存储
  • 支持 H.264 视频编解码、AAC 音频编解码
  • 支持 FFmpeg 命令内嵌
  • 支持回调 HTTP
  • 可使用 HTTP 对直播进行删除、录播等控制
  • 具有强大的缓冲功能,可确保在效率与码率间达到平衡
  • 支持多种操作系统(Linux、MacOS、Windows)

2. RTMP 协议与 HLS 协议

RTMP(Real Time Messaging Protocol)实时消息传输协议,它是 Adobe 公司为 Flash播放器和服务器间传输音视频和数据而开发的私有协议。

HLS(HTTP Live Streaming)是苹果公司的开发标准协议。最初是针对 iPhone、iPod、iTouch 和 iPad等移动设备而开发的。由于 HLS 协议是基于 HTTP的,因此它继承了很多 HTTP 的优点。

2.1 RTMP 协议

RTMP 协议是为了在 Adobe Flash 平台技术(包括 Adobe Flash Player 和l Adobe AIR)之间 高性能传输音/视频和数据而设计的。 RTMP 协议是一个开放的规范,通过此规范可以创建产品 和技术,可以通过 OpenAMF, SWF、 FLY 和 F4V 格式,提供与 Adobe Flash Play巳I 兼容的视/ 音频和数据。

2.1.1 关键特性

RTMP 协议是应用层协议,需要靠底层可靠的传输层协议(通常是 TCP) 来保证信息传输 的可靠性。 在建立完基于传输层协议的链接后, RTMP 协议也需要客户端和服务器端通过“握 手”来建立基于传输层连接之上的 RTMP 连接。 在连接上会传输一些控制信息,如 SetChunkSize 和 SetACKWindowSize。 其中 CreateStream 命令会创建一个 Stream 链接,用于传输具体的音/ 视频等数据,以及控制这些信息传输的命令信息。 RTMP 协议在传输时会对数据进行格式化, 这种被格式化的消息被称为 RTMP Message。 而在实际传输时,为了更好地实现多路复用、分 包和信息的公平性,发送端会把 Message 划分为带有 Message ID 的 Chunk。每个 Chunk 可能是 一个单独的 Message,也可能是 Message 的一部分,在接收端会根据 chunk 中包含的 data 的长 度、 message id 和 message 的长度,把 chunk 还原成完整的 Message,从而实现信息的收发。

2.1.2 握手流程

一个 RTMP 连接以“握手”开始。 这里的“握手”和其他协议的“握手”不一样。这里的 “握手”由 3 个固定大小的 chunk 组成,而不是由可变大小的带有头文件的 chunk 组成。

客户端(发起连接的一方)和服务器端各自发送 3 个相同的块。这些块如果是客户端发送 的,则记为 C0、 C1和 C2,如果是服务器端发送的,则记为 S0、 S1 和 S2,如下图所示。


rtmp握手.png

2.1.3 交互流程

参考上图

  • 客户端要等收到 S1 之后才能发送 C2
  • 客户端要等收到 S2 之后才能发送其他信息(控制信息和真实音/视频等数据)
  • 服务器端要等收到 C0 之后才能发送 S1
  • 服务器端必须要等收到 C1之后才能发送 S2
  • 服务器端必须要等收到 C2 之后才能发送其他信息(控制信息和真实音/视频等数据)。

2.2 HLS 协议

HLS 用于将实时和按需的音视频内容流到 iPhone、 iPad、 iPod Touch、 Apple TV 和 Mac 中。 HTTP 允许用户使用普通的 Web 服务器(而不是专门的流媒体服务器)轻松地将媒体内容部署到流中。

HLS 流的行为类似于常规的 Web 流量。它们使用现有的缓存基础设施,如内容传递网络 (CDNS), 并可靠地通过典型的防火墙和路由器。
HLS 可以适应可变的网络条件,动态地调 整回放,以匹配有线和无线连接的可用速度。除可靠和易于部署外, HLS 还支持的功能有: 关闭宇幕、快速转发和反向播放、备用音视频、插入广告,以及保护内容。

在典型的 HLS 流中,支持 HLS 的视频编码器解决方案接收一个实时视频提要或分发的媒 体文件。编码器在不同的比特率、分辨率和质量级别上创建了多个版本(称为变体)的音视频。 然后编码器将这些变体分割成一系列的小文件,它们被称为媒体段。 与此同时, 编码器为每个 变量创建一个媒体播放列表文件,其中包含指向i亥变体的媒体段的 U也列表。编码器还创建了 一个主播放列表文件,其中包含对可变媒体播放列表的 URL 列表,以及控制流播放行为的描述 性标记。 在生成播放列表和片段时,编码器或自动脚本将文件上载到 Web 服务器或 CDN 中。 通过在 Web 页面中嵌入主播放列表文件的链接,或者创建自己的自定义应用程序来下载主播放 列表文件,用户可以提供对内容的访问 。

3. Nginx-rtmp-module 的搭建

参考 https://www.jianshu.com/p/cf7f0552ffe9

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,692评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,482评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,995评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,223评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,245评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,208评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,091评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,929评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,346评论 1 311
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,570评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,739评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,437评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,037评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,677评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,833评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,760评论 2 369
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,647评论 2 354

推荐阅读更多精彩内容