从 0 打造音视频直播系统
李超
前新东方音视频直播技术专家,前沪江音视频架构师
32580 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 41 讲
WebRTC 1对1通话 (23讲)
从 0 打造音视频直播系统
15
15
1.0x
00:00/00:00
登录|注册

34 | 如何使用Nginx搭建最简单的直播服务器?

FFplay
VLC
Flash客户端
使用FFmpeg向RTMP服务器推流
拉流功能
推流功能
观看RTMP的推流工具介绍
音视频共享
配置Nginx
编译OpenSSL & Nginx
下载OpenSSL
下载Nginx RTMP Module
下载Nginx源码
媒体服务器
思考时间
小结
音视频共享与观看
搭建流媒体服务端
直播系统架构
如何使用Nginx搭建最简单的直播服务器?

该思维导图由 AI 生成,仅供参考

在前面三篇文章中,我们介绍了传统直播系统架构、HLS 协议、RTMP 协议相关的知识,那今天我们就来具体实操一下,根据前面所学到的知识搭建出一套最简单的音视频直播系统。
今天我们要搭建的这套直播系统相较于《31 | 一对多直播系统 RTMP/HLS,你该选哪个?》一文中介绍的直播系统要简单得多。该系统不包括客户端、没有 CDN 分发,只包括最基本的推流、转发及拉流功能。虽然它简单了一点,但麻雀虽小五脏俱全,通过这样一个实战操作,我们就可以将前面讲解的理论与实际结合到一起了。
当然,作为一个直播系统来说,客户端是必不可少的。但由于时间和篇幅的原因,我们只能借助一些现成的或者开源的客户端对我们的直播系统进行测试了,所以客户端的界面可能会简陋一些。也正因为如此,我才没有将它们算作咱们这个直播实验平台之中。
实际上,我们完全可以以这个直播系统实验平台为原型,逐步地将一些功能添加进去,这样很快就可以构建出一套商业可用的传统直播系统了。

直播系统架构

在正式开始实战之前,我们先来简要介绍一下这个直播系统的架构,如下图所示:
最简单的直播系统
这个直播架构非常简单,由两部分组成,即媒体服务器客户端
媒体服务器有两个功能:
推流功能,可以让客户端通过 RTMP 协议将音视频流推送到媒体服务器上;
拉流功能,可以让客户端从媒体服务器上拉取 RTMP/HLS 流。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了如何使用Nginx搭建最简单的直播服务器。首先,作者详细讲解了直播系统架构和搭建流媒体服务端的步骤,强调了Nginx的性能优越。随后,文章给出了Nginx的配置信息,包括RTMP服务和HTTP服务的配置。最后,介绍了音视频共享和观看的操作,包括向流媒体服务器推流和从服务器上拉取RTMP流或HLS流的方法。总体而言,本文通过实际操作指导读者搭建最简单的直播服务器,展示了Nginx在流媒体服务方面的优越性能和灵活性。 文章还介绍了如何通过Nginx搭建一套最简单的RTMP/HLS流媒体服务器,并提供了多种推流、拉流的测试工具。同时,强调了直播原理与实际应用之间的距离并不遥远,但商用的直播系统需要对流媒体服务器做各种性能优化和其他子系统的构建。最后,鼓励读者思考除了Nginx之外,还有哪些开源的RTMP流媒体服务器,并分享自己的想法。 总的来说,本文内容丰富,涵盖了搭建流媒体服务器的全过程和相关工具,同时提供了对商用直播系统的思考和启发。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《从 0 打造音视频直播系统》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(17)

  • 最新
  • 精选
  • tokamak
    开源RTMP流媒体服务器:SRS,github地址:https://github.com/ossrs/srs

    作者回复: SRS 服务还是不错的!

    2019-10-01
    4
    6
  • 安排
    用nginx或者SRS搭建的这种流媒体服务器只能用于传统直播。 而第25讲里面提到的那4中SFU架构的流媒体服务器用于实时直播? 一般商用的实时直播或者传统直播是在开源软件上改的吗? 还是厂商自己实现的?

    作者回复: SFU架构是用于实时互动直播的;一般商用的都是在开源基本上修改的

    2020-08-25
    3
  • 庄忠惠
    老师,我们现在用nginx搭了个流媒体服务器,但是发现移动端和pc端延迟时间会差10秒以上,这个有办法缩短延迟时间吗

    作者回复: 你自己的网很有可能会出现这种情况,因为没有进行网络加速;解决的办法是使用云提供的服务,如阿里云/腾讯云等,它们都有网络加速,这样会快很多,一般在 3秒左右

    2020-07-30
    3
    3
  • 神经旷野舞者
    用nginx的模块和用srs有什么区别呢,是不是可以理解为srs用了部分nginx的功能同时加了很多流媒体方面的处理功能,更专用?

    作者回复: 它们两个都可以做流媒体服务器,相对来说 SRS 是专门做音视频流转发的,而nginx 可以做很多事儿。这两个做流媒体服务器都不错。如果你自己想搭建商用的 RTMP 流媒体服务器的话,建议使用 SRS, 这样可能节省不少工作量。

    2019-12-18
    3
  • tiga
    老师为什么没介绍 HLS 相关的内容呢?比如如何推拉流进行测试等等

    作者回复: 推流一般都用 RTMP协议进行推流,接流时可以用 HLS。对于HLS专栏中有专门的介绍。你可以看一下目录。

    2019-10-17
    2
    3
  • Lion
    老师请教下,medooze流媒体服务器和SRS这类流媒体服务器有什么差异?据说srs/nginx性能很强能支持几千路视频,可以作为SFU架构中的流媒体服务器吗?

    作者回复: 两种服务器是不一样的设计目标。SRS/nginx是用于媒体分发的,是通过延迟换的服务质量,平均延迟是3秒左右;而medooze的目标是低延迟,注重的是实时性,延迟在测500ms以内。

    2020-08-18
    1
  • 神经旷野舞者
    老师,最后的播放用的rtmp地址和ffmpeg推给nginx的地址一样,好像没有nginx服务器什么事?

    作者回复: nginx在这里起到流媒体服务器的作用,它收到主播的音视频流后,当有其它用户来拉流时,直接进行音视频转发这样的作用。

    2019-12-18
    1
  • 神经旷野舞者
    实时查看摄像头功能,是在摄像头这边切成hls然后响应推送快,还是有响应后推rtmp到服务器再切速度快呢

    作者回复: 一般推流都是用 rtmp 推,在服务端进行hls切片,客户端再拉流。

    2019-12-18
    2
    1
  • 贯通
    web端,rtmp推流基于flash,然而浏览器又不支持flash。在web端还有什么好的推流工具么?

    作者回复: 浏览器端通常都是观看,没见有人用浏览器端推流

    2020-12-31
  • 连瑞龙
    编译nginx前,./configure的时候报缺pcre和zlib库。需要,sudo apt install libpcre3 libpcre3-dev zlib1g-dev

    作者回复: 是的,在安装nginx时,缺那些库就装那些库就好了。

    2020-07-22
收起评论
显示
设置
留言
17
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部