Python 实战 · 从 0 到 1 搭建直播视频平台
Barry
某上市公司技术研发总监
3717 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 42 讲
Python 实战 · 从 0 到 1 搭建直播视频平台
15
15
1.0x
00:00/00:00
登录|注册

35|RTMP协议与NRM搭建:如何使用NRM支持HLS协议直播?

你好,我是 Barry。
在上节课我们学习了如何使用 Nginx 来搭建服务器,并完成了防火墙的配置。这节课我们继续来完成直播系统的开发,学习如何通过 NRM 简单迅速地搭建流媒体服务器,并使用 NRM 来支持 HLS 协议直播。
在动手实操之前,我会先带你认识一下 NRM,之后再为你讲解 RTMP 协议和 HLS 直播协议的工作原理。有了这些理论基础,后面搭建流媒体服务器的时候,你的思路也会更清晰。

NRM 的功能特性

NRM 实际是 Nginx-rtmp-module 的缩写。这是一个用于 Nginx 的 RTMP 模块,它允许 Nginx 作为 RTMP 协议的服务器,主要用来处理基于 RTMP 协议的音频和视频流传输。
NRM 是 Nginx 的第三方模块,它的开发由第三方开发者研发维护。NRM 模块一直在不断更新和发展,目前已经有大量的开发者为其贡献代码。这是 NRM 的GitHub 地址,你可以课后再花点时间详细了解一下。
在直播领域里 NRM 应用很广泛。它可以作为直播服务器的后端,接收和处理来自客户端的直播请求,并将直播流传输到其他服务器或客户端上。同时,它还可以与其他直播相关的服务(如 CDN 服务、推流服务器等)集成,提供完整的直播解决方案。
为了帮你熟练地应用 NRM,我们还需要了解它的功能特点,我们可以从直播流管理、直播流分发、负载均衡、安全性和可定制性这五个方面来把握。具体你可以参考后面的表格。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了如何使用NRM支持HLS协议直播。NRM是Nginx-rtmp-module的缩写,是一个用于Nginx的RTMP模块,主要用来处理基于RTMP协议的音频和视频流传输。文章首先介绍了NRM的功能特性和优势,包括直播流管理、直播流分发、负载均衡、安全性和可定制性等方面。接着详细解释了RTMP协议的握手过程和HLS直播协议的优势,以及HLS协议中使用的M3U8文件。最后,文章提到了项目实战,结合前面所学,完成NRM的搭建,并通过配置实现支持HLS协议直播。整体来说,本文内容涵盖了NRM的功能特性、RTMP协议和HLS直播协议的工作原理,以及实际项目操作,适合想要了解NRM和流媒体服务器搭建的读者阅读。 文章详细介绍了Nginx-rtmp-module的安装配置过程,包括下载、编译安装、修改配置文件等步骤。通过配置Nginx-rtmp-module,读者可以实现对HLS协议的支持,从而搭建流媒体服务器并实现直播功能。同时,文章还对RTMP协议和HLS直播协议的工作原理进行了解释,帮助读者深入理解相关技术知识。总的来说,本文内容涵盖了NRM的功能特性、RTMP协议和HLS直播协议的工作原理,以及实际项目操作,适合想要了解NRM和流媒体服务器搭建的读者阅读。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Python 实战 · 从 0 到 1 搭建直播视频平台》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(1)

  • 最新
  • 精选
  • peter
    请教老师几个问题: Q1:RTMP是基于HTTP吗?是用TCP还是UDP? Q2:RTMP握手过程怎么有C2、S2? 我理解是:客户端发C0,服务端回S0,客户端再回C1。文中的流程图怎么多出了C2、S2?而且客户端怎么一次就发出C0、C1? Q3:RTMP与HLS是什么关系? 理解1:平等关系,同类产品,选一个就可以。 理解2:组合关系,两个组合起来完成直播,具体来说是RTMP基于HLS。这两种理解是我瞎猜的,哪个对? Q4:HLS支持移动端,那么在PC端直播效果更好,对吗? Q5:NRM只能在Nginx上用吧。 这个问题可能稍微有点奇怪,奇怪的原因是我对Nginx的固有认识:Nginx位于前面,后面是真正的服务端程序,Nginx只是做一些负载均衡、代理等方面的工作,但不真正负责业务处理,业务处理由后面的服务端处理。如果NRM只能在Nginx上使用,那就是说Nginx也变成了“后端服务处理”。

    作者回复: Q1:RTMP不是基于HTTP的,它使用自己的协议运行在TCP之上。 Q2:在RTMP握手过程中,客户端会先发送一个C0消息,服务端回复S0消息,然后客户端再回复C1消息。这些消息是通过TCP连接传输的,因此它们的传输顺序和具体内容都是由RTMP协议定义的。在文中的流程图中出现的C2和S2是进一步描述了握手过程中客户端和服务端的交互过程。 Q3:RTMP和HLS是两个不同的直播流媒体协议,它们之间并不是平等关系或组合关系。RTMP是一种实时流媒体协议,而HLS(HTTP Live Streaming)是一种基于HTTP的流媒体协议,因此,这两个协议是不同的,可以根据具体的应用场景选择适合的协议。 Q4:HLS是一种基于HTTP的流媒体协议,它适用于移动端和PC端等多种设备。在PC端直播中,HLS通常可以提供良好的直播效果, Q5:NRM(Nginx RTMP Module)可以在Nginx上使用,但并不是只能在Nginx上使用。NRM是一个独立的RTMP模块,可以集成到其他支持RTMP协议的服务器中,如Apache、Node.js等。Nginx作为代理服务器时,可以使用NRM来处理RTMP请求并将其转发到后端服务器进行处理。但是,如果将Nginx配置为直接处理RTMP请求,那么Nginx就可以使用NRM来处理业务逻辑。总之,NRM可以在任何支持RTMP协议的服务器中使用,而不仅仅是Nginx。

    2023-07-13归属地:北京
收起评论
显示
设置
留言
1
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部