从0打造音视频直播系统
李超
前新东方音视频直播技术专家,前沪江音视频架构师
立即订阅
2827 人已学习
课程目录
已完结 40 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 5G的到来将会为音视频插上飞翔的翅膀
免费
WebRTC 1对1通话 (23讲)
01 | 原来通过浏览器访问摄像头这么容易
02 | 如何通过WebRTC进行音视频设备检测呢?
03 | 如何使用浏览器给自己拍照呢?
04 | 可以把采集到的音视频数据录制下来吗?
05 | 原来浏览器还能抓取桌面?
06 | WebRTC中的RTP及RTCP详解
07 | 你竟然不知道SDP?它可是WebRTC的驱动核心!
08 | 有话好商量,论媒体协商
09 | 让我们揭开WebRTC建立连接的神秘面纱
10 | WebRTC NAT穿越原理
11 | 如何通过Node.js实现一套最简单的信令系统?
12 | RTCPeerConnection:音视频实时通讯的核心
13 | 在WebRTC中如何控制传输速率呢?
14 | 如何打开/关闭音视频?
15 | WebRTC中的数据统计原来这么强大(上)
16 | WebRTC中的数据统计原来这么强大(下)
17 | 如何使用Canvas绘制统计图表(上)?
18 | 如何使用Canvas绘制统计图表(下)?
19 | WebRTC能不能进行文本聊天呢?
20 | 原来WebRTC还可以实时传输文件?
21 | 如何保证数据传输的安全(上)?
22 | 如何保证数据传输的安全(下)?
23 | 实战演练:通过WebRTC实现一个1对1音视频实时直播系统
WebRTC多人音视频实时通话 (7讲)
24 | 多人音视频实时通讯是怎样的架构?
25 | 那些常见的流媒体服务器,你该选择谁?
26 | 为什么编译Medooze Server这么难?
27 | 让我们一起探索Medooze的具体实现吧(上)
28 | 让我们一起探索Medooze的具体实现吧(下)
29 | 如何使用Medooze 实现多方视频会议?
30 | 实战演练:通过WebRTC实现多人音视频实时互动直播系统
支持上万人同时在线的直播系统 (8讲)
31 | 一对多直播系统RTMP/HLS,你该选哪个?
32 | HLS:实现一对多直播系统的必备协议
33 | FLV:适合录制的多媒体格式
34 | 如何使用Nginx搭建最简单的直播服务器?
35 | 如何构建云端一对多直播系统?
36 | 如何使用 flv.js 播放 FLV 多媒体文件呢?
37 | 如何使用 video.js 播放多媒体文件?
38 | 实战推演:带你实现一个支持万人同时在线的直播系统
结束语 (1讲)
结束语 | 路漫漫其修远兮,吾将上下而求索
从0打造音视频直播系统
登录|注册

开篇词 | 5G的到来将会为音视频插上飞翔的翅膀

李超 2019-07-15
00:00
13:10
讲述:李超 大小:12.07M
在浩如烟海的生命长河中,人类文明已经有几千年的历史。从远古时期,人类就梦想着有一天可以听到、看到千里之外的声音和景象,当时的人们认为只有神仙(千里眼和顺风耳)才能做到。
其实在这漫长的时间里,真正推动人类大跨度进步的时期只是最近几百年。到了第二次工业革命期间的 1876 年,贝尔电话的发明,使人类可以听到千里之外声音的梦想终于成真。
此后,音视频技术不断发展。一方面,视频压缩技术从 H261 到 H264,再到现在的 H265 及未来不久将出现的 AV1,视频压缩率越来越高;音频压缩技术也从电话使用的 G.711、G.722 等窄带音频压缩技术,发展到现代的 AAC、OPUS 等宽带音频压缩技术。
另一方面,从中国 3G 网络正式商用开始,移动网络也发生了翻天覆地的变化。从 3G 到 4G ,再到马上要落地的 5G,移动网络的带宽和质量越来越高,为音视频数据传输打下了坚实的基础。
我有幸于 2010 年初,参与研发了当时所在公司自主知识产权的音视频引擎系统,自此便一直从事音视频方面的研发工作,到现在已经将近十年的从业经验。
在此期间,我所开发的直播系统既可以支持上万人同时在线,又可以进行多人实时音视频互动,此外还可以与固话、MCU 等硬件设备互联互通。
这套系统可以用于多种场景,如音视频会议、在线教育(大班课、小班课、1 对 1)、即时通讯等。
在开发直播系统期间,我既做过大负载高并发的音视频流媒体服务器的设计与开发,也做过客户端音视频引擎的设计与开发。经过这么多年的洗礼,可以说对音视频技术及未来的发展已了然于胸。

音频技术的现在与未来

音频技术发展到今天,可以说已经非常成熟了,如我们上面所讲的,H264/H265、VP8/VP9 以及后面的 AV1 编解码器,解决了视频压缩率的问题;而 5G 的商用,解决了带宽的问题。这两个问题解决后,使得各行各业都开始使用音视频技术以实现更佳的用户体验,如音视频会议、在线教育、远程医疗、娱乐游戏等。
尤其是 2011 年 Google 推出 WebRTC 技术后,大大降低了音视频技术的门槛。有了 WebRTC,你就不必自己去实现回音消除算法了;有了 WebRTC ,你也不必自己去实现各种音视频的编解码器了;有了 WebRTC,你更不必去考虑跨平台的问题了。因此,可以说 WebRTC 的出现大大加速了音视频技术的应用与推广。
WebRTC 有个特别有诱惑力的愿景:可以在浏览器上快速开发出各种音视频应用。其实,这一愿景已经实现。通过本专栏的学习,你就可以轻松实现浏览器之间的音视频通话,是不是很酷?
可以预见,未来音视频技术将会作为一种基础技术应用到更广泛的场景中。它可以与 AR/VR 结合,让你在远端体验虚拟与现实,如虚拟服装体验;也可以与人工智能结合用于提高服务质量,如用于教学上帮助老师提高教学质量;它还可以与物联网结合,用在自动驾驶、家庭办公等领域。

行业及学习痛点

随着各种音视频技术的完善、5G 的落地,以及各种音视频应用的出现,在未来两三年内,音视频必定会像当年移动互联网一样出现井喷的人才需求
然而,音视频技术本身纷繁、复杂,需要很深的专业及技术背景。举个简单的例子,当进行音视频互动时,经常会听到自己的回音,这是什么原因引起的呢?再比如说,用户进入教室后经常看到老师的视频卡顿、花屏,这是什么原因造成的?你又该如何解决呢?如果你没有很深的背景知识,对音视频编解码原理不清楚,对音视频处理流程不了解的话,你是根本无法解决上述问题的。
另外,如果你想开发一款音视频产品,不仅需要有最基础的音视频知识(如音视频的编码、解码),往往还需要多层级的技术栈,涉及移动端开发、PC 端开发、各种协议规范、网络协议、socket 开发等。所以,要想成为一员合格的音视频开发工程师,你需要对各领域的知识都有一些掌握才行。

如何学习音视频技术

看到上面这些困难,是不是很多同学开始打退堂鼓了?
其实你不必担心。音视频技术虽然门槛高,但我所开的这个专栏是从 0 开始讲解音视的相关知识,一步一步,循序渐进:首先,让你学会如何使用浏览器相关 API 调用 WebRTC 实现 1 对 1 通话;然后,再逐步深入学习其他音视频知识。
因此,在本专栏中,我将通过下面三大主题来进行讲解,并且在整个的讲解过程中,我会采取循序渐进、各个击破的办法来介绍各个知识点,最终不仅让你掌握到音视频的核心知识,而且真正能依靠这些知识做出你想要的音视频产品。

主题一:WebRTC 1 对 1 通话

通过本主题的学习,你最终将学会如何在浏览器间实现 1 对 1 通话。比如一个人在北京,另一个人在上海,他们打开浏览器进入同一个房间后,就可以进行音视频通话了。
本主题我精编了 22 篇文章,这 22 篇文章环环相扣,每篇文章会介绍一个主题,而每个主题的内容都是实现 WebRTC 1 对 1 通话的一部分。当你读完这 22 篇文章后,一个即学即用的 1 对 1 实时通话的例子就展现在你面前了。

主题二:WebRTC 多人音视频实时通话

学完 WebRTC 1 对 1 通话这部分内容后,你对 WebRTC 就有了一定基础。接下来,我将为你介绍如何实现多人音视频实时互动
在这个主题里,我会首先介绍几种多人音视频实时互动的架构,以及这几种架构的优劣。然后,重点讲解如何使用 SFU 架构实现多人音视频实时通话(SFU 是现在最流行的多人实时互动架构)。当你阅读完本部分知识后,就可以亲手实现多人音视频实时通话了。

主题三:支持上万人同时在线的直播系统

支持上万人同时在线的直播系统主要使用 CDN 技术,它是一种比较老的直播架构,使用的底层传输协议是 RTMP 和 HLS。
在本主题中,我会重点介绍 CDN 原理、RTMP、HLS 协议,以及如何使用各种播放器从 CDN 拉取媒体流。同样地,你阅读完本主题内容后,就会清楚地知道上万人同时在线直播的原理,并可以自己实现一套这样的直播系统。
下面就是这个专栏的目录,你可以快速了解下整个专栏的知识结构体系。
到这里,依然可能会有同学质疑说:“做音视频给人的感觉就是个小众市场呀!发展前景会好吗?”
我觉得这里我有必要再强调和说明下。那是过去,由于网络带宽的限制,以及音视频技术本身的一些原因,音视频技术无法被广泛地应用。但现在不一样了,随着近几年技术的发展,音视频已经越来越被广泛地应用于各行各业,比如平时常见的抖音、微信短视频、娱乐直播、教育直播、音视频会议等,已经逐渐渗透到我们工作和生活的各个角落。就连大热的 AI 技术也与音视频技术联系非常紧密,像现在的智能音箱、自动驾驶、人脸识别、表情识别等都离不开音视频技术。
另外,让人欣喜的是随着 Google 对 WebRTC 的推动,在浏览器下实现音视频应用变有极为简单,这大大降低了非音视频专业的开发人员学习成本,并且其应用前景也变得更加广阔。
可以说,这么有前景的技术非专业人员也可以很快学习和上手,而掌握了音视频技术的核心技术,一定可以让你在未来职场上获得丰厚的回报和满满的成就感。
5G 的时代马上到来,它将会为音视频插上飞翔的翅膀,让我们共同起飞吧!你准备好了吗?
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《从0打造音视频直播系统》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(48)

  • Tango
    老师,我们用什么语言实现啊

    作者回复: 大部分用 JS,服务端会介绍 C /C++。

    2019-07-15
    16
  • C家族铁粉
    是不是有C/C++基础就可以学习这个专栏呢?

    作者回复: 有 JS 基础就可以了,有 C/C++基础更好,后面在讲多人互动时会用到。

    2019-07-15
    1
    5
  • 湛卢
    老师又出新课了 强烈支持 主要是前端的吧。

    作者回复: 对,主要是前端。不过增加了多对多互动+高并发同时在线

    2019-07-15
    3
  • Aaron(健廷)
    打卡打卡,一起飞吧

    作者回复: 哈哈,一起飞!

    2019-07-15
    1
    3
  • Jeff.Smile
    老是,我们是JAVA的,学习起来有障碍吗

    作者回复: 没障碍,只要有一门语言就可以了

    2019-07-18
    2
  • John
    "支持上万人同时在线的直播系统主要使用 CDN 技术,它是一种比较老的直播架构" 老师会在课程里给我们介绍最新的技术架构么?

    作者回复: 未来可以通过WebRTC 服务器重新构建,这块目前各大公司都在推进中,这块目前不会讲,还不成熟

    2019-07-16
    2
  • InMath
    老师这个会是代码实战吗?

    作者回复: 是的,当你阅读完本系列文章,你就可以自己实现一套多对多的直播系统

    2019-07-15
    2
  • 技术乞丐
    很好的视频,其实原来没想做这方面,但是工作做了,感觉也不错,反正都是编程,要做就做好,现在工作内容涉及视频监控系统,职务做ffmpeg的转码调用和其他边角功能,老师有什么职业建议吗,可以主动涉及一些高级的技术主题,这方面需要博士之类吗,听着好像编解码比较高级,但我也不可能像搞学术那样去研究这个,老师有什么音视频的发展看法,可以形成有较大优势的职业竞争力呢?

    作者回复: 实际上音视频编解码在真正工作中的开发量并不大。对于音视频的应用而言,理解编解码的基本原理,熟悉它的API如何使用就可以了。像音视频的算法之类的工作,全世界也没有多少人在搞,除非你数学特别牛,算法特别牛,否则的话不建议去专门搞音视频算法。对于音视频的发展,目前业界有比较统一的观点,就是 WebRTC 会引领未来,现在几乎所有的大厂都在研究 WebRTC , 而 ffmepg作为 WebRTC 处理音视的工具在 WebRTC内部使用。所以你要想在音视频方面深入的话,这两个库是你必须要深入研究的。

    2019-11-14
    1
  • 大魔王
    老师,为什么移动端app 直播用rtmp啊,为什么都不统一成用webrtc

    作者回复: “为什么移动端app 直播用rtmp啊”,不知你是如何得到这个结论的?真实的情况是,技术的选择是根据不同的应用场景而来的。对于娱乐直播都是使用 rtmp协议,它的客户端包括 APP, PC...; 对于音视频会议/在线教育这种场景,普遍都使用的 webrtc,在 webrtc底层用的是 RTP/RTCP/UDP协议。所以你的根本问题是你对音视频技术有误解。

    2019-11-14
    1
  • 公众号:业余草
    老师可以在后面讲一下 FFMpeg,Blob,音视频的 PE 文件结构,播放原理等吗?

    作者回复: Blob会讲到,其它的都属于播放器的范畴,与这个主题不相关了,抱歉!

    2019-07-16
    1
    1
  • 记事本
    Webrtc只能用于浏览器的视频直播吗?

    作者回复: 这个系列文章中主要讲如何通过浏览器进行实时互动直播,里边还详细介绍了底层的原理,有了这个基础其它端都不是很难的事儿了。如果你到时候真有这方面的需求,可以再与我联系!

    2019-07-15
    1
  • 老王的老李头
    去年用kurento搭建过一套视频服务器,bug太多了,跟浏览器也不兼容,app使用也不好用,还尝试了环信、野狗什么的各种不是要价高就是不支持私有化部署,就想搞清楚这块儿到底是咋回事,希望老师给予分享

    作者回复: 本文中介绍的服务器是 medooze, 在文中详细的编译步骤及类图分析,并且有一个真实的例子,可以让你实现 多对多的直播,希望对你有所帮助!

    2019-07-15
    2
    1
  • undefined
    老铁双击666

    作者回复: 谢谢!

    2019-07-15
    1
  • Guarantee
    老师,我使用brew install nginx-full —with-rtmp-module 的时候报错,显示:ChecksumMismatchError:SHA256 mismatch ,怎么解决呀
    2019-12-07
  • 可乐君JY
    老师讲的是web端,可以类比到安卓端的吧?

    作者回复: 可以,原理都是类似的,稍有不同。自己研究一下哈!

    2019-11-16
  • 技术乞丐
    谢谢老师解答,思路清晰多了。我大概明白作为技术人员合理的研究方向应该是ffmpeg个webrtc的源码,这里面的技术难点是什么呢?里面核心不需要编解码的的数学之类研发能力吗?
    留言里看待老师提到服务器的流媒体转发也是技术难点,是不是和ffmpeg,webrtc并列?适合作业个人的职业技术优势吗?

    作者回复: ffmpeg和webrtc是做音视频两个最重要的库,ffmpeg在处理音视频时有一套自己的流程,可以说这套流程的使用ffmpeg大大降低了人们利用音视频的难度。如果你熟练的撑握了ffmpeg,就可以做出很多非常酷炫的事儿了。但学习这套流程本身就有难度;对于webrtc来讲也是如此,它最大的优势是在实时通信及音频通话方面。对于这两个库的学习其实不用专门学习数据知识的。对于刚入门的同学来说,先将这两块学好再研究webrtc流媒体服务器吧。

    2019-11-15
  • 相见恨晚
    大佬,两个问题,1,学习你这门课程是不是只要有浏览器和摄像头就可以了,应该还要搭建服务器环境吧 2,这门课程学完后 在Android端实现webrtc是不是很容易。

    作者回复: 要有服务器,课程中会有讲,学完这个再搞android 就很容易了

    2019-07-31
  • netxiao
    为什么没有提到freeswitch?是这种技术已经过时了吗?

    作者回复: freeswitch一般用于服务端混音,或者自己玩的 MCU 使用,在直播中不使用它做流媒体服务器

    2019-07-26
  • 麦晓杰alwaysu
    我准备好了!!!!

    作者回复: 让我们一起飞!

    2019-07-23
  • 徐云天
    一个搞java的路过ヽ(  ̄д ̄;)ノ,c++让人头皮发麻。

    作者回复: 哈哈,没那么夸张!

    2019-07-22
收起评论
48
39
返回
顶部