Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >浏览器是如何将标签转成 DOM ?

浏览器是如何将标签转成 DOM ?

作者头像
前端小智@大迁世界
发布于 2022-06-15 06:01:09
发布于 2022-06-15 06:01:09
2.2K00
代码可运行
举报
文章被收录于专栏:终身学习者终身学习者
运行总次数:0
代码可运行

作者:Uday Hiwarale 译者:前端小智 来源:medium

点赞再看,养成习惯本文 GitHub https://github.com/qq44924588... 上已经收录,更多往期高赞文章的分类,也整理了很多我的文档,和教程资料。欢迎Star和完善,大家面试可以参照考点复习,希望我们一起有点东西。

浏览器基本的工作流程

进入主话题之前,先罗列一下浏览器的主要构成:

  1. 用户界面- 包括地址栏、后退/前进按钮、书签目录等,也就是你所看到的除了用来显示你所请求页面的主窗口之外的其他部分
  2. 浏览器引擎- 用来查询及操作渲染引擎的接口
  3. 渲染引擎- 用来显示请求的内容,例如,如果请求内容为html,它负责解析html及css,并将解析后的结果显示出来
  4. 网络- 用来完成网络调用,例如http请求,它具有平台无关的接口,可以在不同平台上工作
  5. UI 后端- 用来绘制类似组合选择框及对话框等基本组件,具有不特定于某个平台的通用接口,底层使用操作系统的用户接口
  6. JS解释器- 用来解释执行JS代码
  7. 数据存储- 属于持久层,浏览器需要在硬盘中保存类似cookie的各种数据,HTML5定义了web database技术,这是一种轻量级完整的客户端存储技术

解析

当浏览器获得了资源以后要进行的第一步工作就是 HTML 解析,,它由几个步骤组成:编码、预解析、标记和构建树。

编码

HTTP 响应主体的有效负载可以是从HTML文本到图像数据的任何内容。解析器的第一项工作是找出如何转制刚刚从服务器接收到的 bit

假设我们正在处理一个HTML文档,解码器必须弄清楚文本文档是如何被转换成比特(bit)的,以便反转这个过程。

记住,最终即使是文本也会被计算机翻译成二进制,如上图所示,在本例中是 ASCII 编码—定义二进制值,如“01000100”表示字母“D”。

对于文本存在许多可能的编码—浏览器的工作是找出如何正确地解码文本。服务器应该通过 Content-Type 提供的信息同时在文本文件头部使用 Byte Order Mark 告知浏览器编码格式。

如果仍然无法确定编码,浏览器还会自行匹配一种解码格式来处理数据。有时候,解码格式也会写在 <meta> 标签中。

最坏的情况是,浏览器进行了有根据的猜测,然后开始解析之后发现一个矛盾的 <meta> 标签。在这些罕见的情况下,解析器必须重新启动,丢弃之前解码的内容。浏览器有时必须处理旧的 web内容(使用遗留编码),许多这样的系统都支持这一点。

我们现在经常在 HTML中使用的文件格式是 UTF-8,那是因为 UTF-8 能较完整的支持Unicode 字符范围,同时与 CSS、JavaScript 中常见的节字符具有良好的 ASCII 兼容性。一般浏览器默认的解码格式也是 UTF-8。当解码出错的时候,我们会看到屏幕上全部都是乱码字符。

预解析

在执行脚本时,其他线程会解析文档的其余部分,找出并加载需要通过网络加载的其他资源。通过这种方式,资源可以在并行连接上加载,从而提高总体速度。请注意,预解析器不会修改 DOM 树,而是将这项工作交由主解析器处理;预解析器只会解析外部资源(例如外部脚本、样式表和图片)的引用。

预解析器不是完整的解析器,如,它不理解 HTML 中的嵌套级别或父/子关系。但是,预解析可以识别特定的 HTML 标签的名称和属性,以及 URL。例如,如果你的 HTML 内容中有一个<img src="https://somewhere.example.com/​images/​dog.png" alt=""> ,预解析将注意到src属性,并将获取这个图片的请求加到请求队列中。

请求图片的速度越快越好,将等待它从网络到达的时间降到最低。预解析还会注意到 HTML 中的某些显式请求,比如 preloadprefetch 指令,并将它们加入等待队友中进行处理。

标记化(Tokenization)

该算法的输出结果是 HTML 标记。该算法使用状态机来表示。每一个状态接收来自输入信息流的一个或多个字符,并根据这些字符更新下一个状态。当前的标记化状态和树结构状态会影响进入下一状态的决定。这意味着,即使接收的字符相同,对于下一个正确的状态也会产生不同的结果,具体取决于当前的状态。该算法相当复杂,无法在此详述,所以我们通过一个简单的示例来帮助大家理解其原理。

基本示例 - 将下面的 HTML 代码标记化:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<html>
  <body>
    Hello world
  </body>
</html>

初始状态是数据状态。遇到字符 < 时,状态更改为“标记打开状态”。接收一个 a-z 字符会创建“起始标记”,状态更改为“标记名称状态”。这个状态会一直保持到接收 > 字符。在此期间接收的每个字符都会附加到新的标记名称上。在本例中,我们创建的标记是 html 标记。

遇到 > 标记时,会发送当前的标记,状态改回“数据状态”。<body> 标记也会进行同样的处理。目前 html 和 body 标记均已发出。现在我们回到“数据状态”。接收到 Hello world 中的 H 字符时,将创建并发送字符标记,直到接收 </body> 中的 <。我们将为 Hello world 中的每个字符都发送一个字符标记。

现在我们回到“标记打开状态”。接收下一个输入字符 / 时,会创建 end tag token 并改为“标记名称状态”。我们会再次保持这个状态,直到接收 >。然后将发送新的标记,并回到“数据状态”。</html> 输入也会进行同样的处理。

构建树(tree construction)

在创建解析器的同时,也会创建 Document 对象。在树构建阶段,以 Document 为根节点的 DOM 树也会不断进行修改,向其中添加各种元素。标记生成器发送的每个节点都会由树构建器进行处理。规范中定义了每个标记所对应的 DOM 元素,这些元素会在接收到相应的标记时创建。这些元素不仅会添加到 DOM 树中,还会添加到开放元素的堆栈中。此堆栈用于纠正嵌套错误和处理未关闭的标记。其算法也可以用状态机来描述。这些状态称为“插入模式”

在上一步符号化以后,解析器获得这些标记,然后以合适的方法创建 DOM 对象并将这些符号插入到 DOM 对象中。DOM 对象的数据结构是树状的,所以这个过程称为构造树(tree construction)。另外,在 IE 的历史中,大部分时间里没有使用树结构。

在创建解析器的同时,也会创建 Document 对象。在树构建阶段,以 Document 为根节点的 DOM 树也会不断进行修改,向其中添加各种元素。标记生成器发送的每个节点都会由树构建器进行处理。

规范中定义了每个标记所对应的 DOM 元素,这些元素会在接收到相应的标记时创建。这些元素不仅会添加到 DOM 树中,还会添加到开放元素的堆栈中。此堆栈用于纠正嵌套错误和处理未关闭的标记。其算法也可以用状态机来描述。这些状态称为“插入模式”。

例如,考虑这个 HTML:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<p>sincerely<p>The authors</p>

这样可以确保结果树中的两个段落对象是兄弟节点,而忽略第二个打开的标签则与一个段落对象相对。 HTML表可能是解析器规则试图确保表具有适当结构的最复杂的表。

尽管存在所有复杂的解析规则,但是一旦创建了 DOM 树,所有试图创建正确 HTML 结构的解析规则就不再强制执行了。

使用 JavaScript,网页可以几乎以任何方式重新排列 DOM 树,即使它没有意义,例如,添加表格单元格作为 <video> 标签的子项,渲染系统负责弄清楚如何处理任何前后不一致标签。

HTML 解析中的另一个复杂因素是 JavaScript 可以在解析器执行其工作时添加更多要解析的内容。<script> 标签包含解析器必须收集的文本,然后发送到脚本引擎进行评估。 当脚本引擎解析并评估脚本文本时,解析器会等待。如果JavaScript文件内调用了 document.writeAPI,解析器将重新开始解析过程。

事件(Events)

当解析器完成时,它通过一个名为 DOMContentLoaded 的事件宣布完成。事件是内置在浏览器中的广播系统,JavaScript可以侦听和响应它。除了 DOMContentLoaded 事件,还有load 事件(表示所有资源已经加载完成,包括图片、视频、CSS等等)、unload 事件表示界面即将关闭、鼠标事件键盘事件等等。

浏览器在 DOM 中创建一个事件对象,并将其打包成有用的状态信息(例如屏幕上触摸的位置、按下的按键等等),当JavaScript触发事件的时候,就会同时产生事件对象。

DOM 的树结构通过允许在树的任何级别监听事件(如在树根、树叶或两者之间的任何地方)。在目标元素上触发事件的时候,需要 从DOM 树的根元素开始向子元素查找,这个过程俗称事件捕捉阶段。到达目标元素以后,还要逐级向上返回到根元素上,这个过程俗称事件冒泡阶段

还可以取消一些事件,例如,如果表单没有正确填写,则可以停止表单提交。(提交事件是从<form> 元素触发的,JavaScript 侦听器可以检查表单,如果字段为空或无效,还可以选择取消事件。)

DOM

HTML语言提供了丰富的特性集,远远超出了解析器处理的标记。解析器构建一个结构,其中的元素包含其他元素,以及这些元素最初具有什么状态(它们的属性)。结构和状态的组合足以提供基本渲染和一些交互(例如通过内置控件,如<textarea>,<video>,<button>等)。 但是如果不添加 CSS 和 JavaScript,网络将非常枯燥(和静态)。 DOM 为 HTML 元素和与 HTML 无关的其他对象提供了额外的功能层。

元素接口

在解析器将元素放入DOM树之前,解析器会根据不同元素的名称赋予元素不同的接口功能。些通用特性包括:

  • 访问代表元素子元素的全部或子集的 HTML 集合
  • 能够查找元素的属性、子元素和父元素
  • 重要的是,创建新元素的方法(不使用解析器),并将它们附加到树中(或将它们从树中分离出来)

对于像 <table> 这样的特殊元素,该接口包含用于查找表中所有行,列和单元格的其他特定于表的功能,以及用于从表中删除和添加行和单元格的快捷方式。 同样,<canvas> 接口具有绘制线条,形状,文本和图像的功能。 使用这些 API 需要 JavaScript 仅仅使用 HTML 标签是不够的。

每当我们使用 JavaScript 操作 DOM 的时候,将会触发浏览器的一些连锁反应,这些反应是为了让更改后的页面更快的渲染在屏幕上。例如:

  • 用数字代表通用的元素名称和属性,浏览器用使用哈希表进行快速识别这些数字
  • 将频繁变更的子元素进行缓存,方便子元素快速迭代
  • sub-tree 的跟踪变化降到最低,避免‘污染’整个 DOM 树
其他API

DOM中的HTML元素及其接口是浏览器在屏幕上显示内容的唯一机制。CSS可以影响布局,但仅限于HTML元素中存在的内容。最终,如果你想在屏幕上看到内容,它必须通过作为树的一部分的HTML接口来完成。

  1. 访问存储系统(数据库,key/value存储,网络缓存存储(network cache storage));
  2. 设备(各种类型的地理定位,距离和方向传感器,USB,MIDI,蓝牙,游戏手柄);
  3. 网络(HTTP交换,双向服务器套接字,实时媒体流);
  4. 图形(2D和3D图形基元,着色器,虚拟和增强现实);
  5. 和多线程(具有丰富消息传递功能的共享和专用执行环境)。

随着主要浏览器引擎开发和实施新的Web标准,DOM公开的功能不断增加。然而,DOM的这些“额外”API中的大多数都超出了本文的范围。

总结

希望这部分对你关于 DOM 解析过程多多少少有点帮助,共进步!

你的点赞是我持续分享好东西的动力,欢迎点赞!


代码部署后可能存在的BUG没法实时知道,事后为了解决这些BUG,花了大量的时间进行log 调试,这边顺便给大家推荐一个好用的BUG监控工具 Fundebug

原文:https://itnext.io/how-the-bro...


交流

干货系列文章汇总如下,觉得不错点个Star

https://github.com/qq44924588...

我是小智,对前端技术保持学习爱好者。我会经常分享自己所学所看的干货,在进阶的路上,共勉!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-06-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
直播弱网优化方法
直播平台纷繁杂多,流量入口逐渐从传统PC端过渡至移动端。直播规 模爆发式增长,2016年更是被誉为“直播元年”。以游戏为代表的泛娱乐直播是这一时期直播生态的重要组成部分。2015-2017年,4G技术普及,手机直播由于不受设备、场景等限制开始迅速普及,推动全民直播的出现;同时,由于直播功能的创新、直播平台以及资本的纷纷入局、政策支持,直播行业一度出现“千播大战”局面。期间,政府出台《电子竞技赛事管理暂行规定》等游戏行业相关政策,进一步推动了游戏直播的发展。
视频云直播helper
2022/02/03
6.2K1
手撕Rtmp协议细节(8)——publish推流
对于推流端,经过releaseStream,createStream消息之后,得到了_result消息之后,接下来客户端就可以发起publish消息。推流端使用publish消息向rtmp服务器端发布一个命名的流,发布之后,任意客户端都可以以该名称请求视频、音频和数据。我们首先来看一下publish消息的组织结构:
视界音你而不同
2020/05/26
3.8K1
劳动节之一:SRS中RTC基于流的场景应用,RTC和RTMP流互相转换
大约在一年前,SRS开始支持了WebRTC,这一年一直在持续的更新和收集大家的反馈,终于目前达到了基本可以的里程碑了,是时候总结下使用方法,更新Wiki和DEMO,方便大家用起来了。 SRS的RTC有很多种应用场景,这篇是基于流的场景的应用,后续会推出更多的场景。流是服务器最基本也是最基础的逻辑,是其他场景的基础。基础不牢,地动山摇,大家走过路过不要错过。 RTC的Wiki请点文末阅读原文,我们在这篇文章中,会重点说明一些背景、应用场景和便于理解的设计背景。Wiki侧重的是总结和结果,这个文章侧重的是为什么
Winlin
2022/03/18
2.5K0
RTMP协议详解及Wiresahrk抓包分析
本文主要讲解 RTMP 协议,并通过 wireshark 对 RTMP 进行抓包并分析。
Gnep@97
2023/11/08
5.7K0
RTMP协议详解及Wiresahrk抓包分析
SRS:流媒体服务器如何实现负载均衡
 点击上方“LiveVideoStack”关注我们 作者:Winlin、Azusachino、Benjamin 编辑:Alex ▲扫描图中二维码或点击阅读原文▲ 了解音视频技术大会更多信息 ---- 当我们的业务超过单台流媒体服务器的承受能力,就会遇到负载均衡问题,一般我们会在集群中提供这种能力,但实际上集群并非是唯一的实现方式。有时候负载均衡还会和服务发现等时髦词汇联系起来,而云服务的LoadBalancer无疑不可回避,因此,这个问题其实相当复杂,以至于大家会在多个场合询问这个问题,我打算系统地阐述
LiveVideoStack
2022/05/25
2K0
SRS:流媒体服务器如何实现负载均衡
跨国实时网络调度系统设计
大家好,我是冼牛,目前在即构科技主要负责实时音视频引擎的研发,专注于视频直播、视频社交和在线教育等领域。本次主要分享即构科技在出海构建全球网络的过程中遇到的问题和解决问题的方法和思路。
LiveVideoStack
2021/09/01
9510
技术解码丨斗鱼同款的SRT技术是如何对抗推流抖动的?
RT到底是一个什么样的推流协议呢? 针对链路丢包,SRT是如何解决的呢? 本周的技术解码,为您带来 SRT推流技术解析 随着互联网基础设施和硬件设备的不断发展,广大直播观众对于直播观看的清晰度,延时等方面的体验要求越来越高,直播也随之进入了低延时高码率的时代,直播传输技术面临着越来越高的要求和挑战。 腾讯视频云为此在全链路上针对流媒体传输不断深入优化,使得在各大重要赛事上具备了高可靠、低延迟、高画质和音质的需求,同时我们也跟客户,比如斗鱼,进行了更深度的合作。不光在服务端,在APP端也进行了SRT的合
腾讯即时通信IM
2021/04/07
2.1K0
【Android RTMP】RTMP 直播推流阶段总结 ( 服务器端搭建 | Android 手机端编码推流 | 电脑端观看直播 | 服务器状态查看 )
首先按照 【Android RTMP】RTMP 直播推流 ( 阿里云服务器购买 | 远程服务器控制 | 搭建 RTMP 服务器 | 服务器配置 | 推流软件配置 | 直播软件配置 | 推流直播效果展示 ) 中的流程搭建服务器端 , 然后才能开始推流操作 ;
韩曙亮
2023/03/27
3.9K0
【Android RTMP】RTMP 直播推流阶段总结  ( 服务器端搭建 | Android 手机端编码推流 | 电脑端观看直播 | 服务器状态查看 )
RTMP 协议:为什么直播推流协议都爱用它?丨音视频基础
(本文基本逻辑:RTMP 协议的数据传输流程和协议设计思想 → 消息概念具体细节 → 块概念具体细节)
关键帧
2022/06/13
3.1K0
RTMP 协议:为什么直播推流协议都爱用它?丨音视频基础
新知 | 直播卡顿问题及优化方案
新知系列课程第二季来啦!去年的系列课,我们为大家介绍了直播、RTC、IM、媒体处理等音视频通信技术,这一次,我们将继续为大家带来全真互联时代下新的行业趋势、新的技术方向以及新的应用场景分享。今天,我们邀请到了腾讯云音视频技术导师——侯文祯,他将结合工作中实际遇到的一些案例,为大家介绍直播卡顿问题的成因,以及它的优化解决方案。本周四晚7点(6月30日)我们将继续邀请技术大佬,以直播的形式为大家带来媒体处理方面的干货分享,各位可以点击文末「阅读原文」预约观看。 本期内容主要包括四个方面:直播链路监控、卡顿质量
腾讯云音视频
2022/06/29
3.6K0
新知 | 直播卡顿问题及优化方案
接上篇-nginx-http-flv-module更新说明(二)
最近这段时间主要在不同平台测试模块的稳定性,目前播放这一块没发现问题,由于条件限制,除了FreeBSD平台没测试过,Windows 7,Debian 7.x和macOS Sierra都测试过了,由于Nginx官方对Windows支持不太好,没用Windows平台最强大的IOCP接口(使用的select),所以导致Windows平台上运行效率不太高,表现在推流等待时间长,3s+,首屏时间很长,4s+,select本身原因限制客户端个数,默认是1024。推流等待时间和首屏时间最短的是macOS Sierra,本机上测试时基本上是秒推秒开。昨晚专门注意了一下,在macOS Sierra下编译时,SO_REUSEPORT和TCP_FASTOPEN两项都支持,前者让Nginx的每个子进程都可以listen,都有一个专门的accept队列,解决了惊群效应;后者则是在发起SYN时就已经携带实际数据,而不是握手完毕后再传输实际数据。秒推秒开可能跟这两个选项有关。但是macOS Sierra并不支持将某个进程绑定到某个CPU上,所以可能进程上下文切换会有开销,系统负载较大时可能效率不如Linux。由于macOS Sierra是公司的电脑,所以未做压力测试。我的笔记本装的是Debian 7.x,因为内核版本较低,所以macOS Sierra上支持的两个选项都不支持。测试时推流等待时间和首屏时间都介于Windows 7和macOS Sierra之间,在服务器上测试时(系统CentOS 6.4,支持SO_REUSEPORT但是不支持TCP_FASTOPEN)跟macOS Sierra上差不多,但是考虑到服务器的CPU性能强大得多,所以负载不高情况下,macOS Sierra的表现是最好的。由于macOS Sierra是从Mac OS X更新来的,而Mac OS X的底层最初是在FreeBSD基础上开发的,所以推测在FreeBSD上的表现应该也不错。
后端技术探索
2018/08/10
2K0
衡量直播平台的推流效果,主要看这5个指标
近年来,网络直播呈现爆发式增长,上百家平台,超百亿规模,3亿多用户,上市公司和明星企业崛起,俨然成为产业。光环加持的背后,腾讯云直播TLive平台,抓住机遇、持续打磨、不断优化,最终做到了业界领先。现主播作为直播产品的源头,主播推流质量好坏直接影响腾讯云直播体验和口碑。我们致力于使用CDN节点就近资源&协议栈加速等措施,保障主播稳定出流。
腾讯云音视频
2018/10/10
10K0
衡量直播平台的推流效果,主要看这5个指标
玩转直播系列之RTMP协议和源码解析(2)
实时消息传输协议(Real-Time Messaging Protocol)是目前直播的主要协议,是Adobe公司为Flash播放器和服务器之间提供音视频数据传输服务而设计的应用层私有协议。RTMP协议是目前各大云厂商直线直播业务所公用的基本直播推拉流协议,随着国内直播行业的发展和5G时代的到来,对RTMP协议有基本的了解,也是我们程序员必须要掌握的基本技能。
2020labs小助手
2021/05/17
1.9K0
深入了解RTMP推流技术:视频汇聚EasyCVR低延迟与高稳定性分析
RTMP(Real Time Messaging Protocol)视频推流技术,作为音视频传输领域的关键技术之一,已经在直播、视频会议、在线教育等多个场景中得到了广泛应用。RTMP以其独特的优势,为实时音视频传输提供了高效、稳定的解决方案。视频汇聚安防监控综合平台EasyCVR支持多协议接入,其中就包括RTMP协议。
TSINGSEE青犀视频
2024/06/21
3750
腾讯云快直播低延时播放质量的优化实践
直播已经潜移默化成为许多人日常生活密不可分的一部分。无论是紧张刺激的比赛直播,还是垂涎欲滴的美食直播,亦或者自卖自夸的购物直播,大家都不希望在观看时出现长时间的加载和卡顿,对一些需要观众及时反馈的直播场景,过高的延时也是用户不希望出现的。如何保证直播的快速、清晰、低延时成为各大厂商必须直面的难题。我们很荣幸地邀请到了腾讯云音视频的费伟老师来到LiveVideoStackCon 2022北京站介绍他们的解决办法。 文/费伟 编辑/LiveVideoStack 大家下午好,很高兴能参加LiveVideoStac
LiveVideoStack
2023/04/12
3.8K0
腾讯云快直播低延时播放质量的优化实践
RTMP的工作原理
 点击上方“LiveVideoStack”关注我们 翻译:Alex 技术审校:章琦 本文来自OTTVerse,作者为Krishna Rao Vijayanagar。 ▲扫描图中二维码或点击阅读原文▲ 了解音视频技术大会更多信息 RTMP Easy-Tech #028# 什么是RTMP? RTMP(Real-Time Messaging Protocol,实时消息传输协议)是一种用于低延迟、实时音视频和数据传输的双向互联网通信协议,由Macromedia(后被Adobe收购)开发。RTMP的工作原理
LiveVideoStack
2022/05/30
1.5K0
RTMP的工作原理
MLVBLiveRoom 方案 - 客户端部分
本文用于介绍移动直播 MLVBLiveRoom 方案的客户端部分,MLVBLiveRoom 方案包含了两部分内容:客户端 MLVBLiveRoom 组件 + 房间管理服务 RoomService。RoomService 说明见 https://cloud.tencent.com/developer/article/1488765
腾讯云-chaoli
2019/08/16
11.1K2
MLVBLiveRoom 方案 - 客户端部分
如何构建高并发高可用的剧场直播云端混流服务?
在LiveVideoStack线上交流分享中,爱奇艺技术研究员李晓威分享了基于爱奇艺Hydra平台的剧场直播云端混流方案,重点讲解如何提升WebRTC推流成功率并提升音视频质量,如何做到点播流在客户端
LiveVideoStack
2019/07/01
1.8K0
如何构建高并发高可用的剧场直播云端混流服务?
云端混流转码--直播连麦技术解决方案
春运来了,在各地车站码头的年味就是回家的味道。无论人潮多拥挤、路途多艰辛,为了回到温暖的目的地——家,对于在外漂泊的游子来说,路上辛苦点又算什么。小编为旅途的游子们准备了一份新年礼物——云端混流转码。 随着直播业务的蓬勃发展,终端受众也并不仅仅满足于围观,希望能够参与主播的音视频对话中来,如现在在各个直播秀场App下所看到的的连麦互动,包括主播之间的才艺游戏恶搞PK等,它能有效的增强直播的趣味性,让观众获得更大的参与满足感。另外非娱乐场景下与此类似的有在线教育的师生交流问答、金融开户的客服视频见证通话
腾讯云音视频
2019/01/30
3.3K0
云端混流转码--直播连麦技术解决方案
rtmp协议详解_rtmp服务器
最近在学习rtmp协议,在看官方文档的时候总是懵懵懂懂,硬生生看了两天,现在基本上了解rtmp协议了,想用自己觉得比较清晰的方式来讲解rtmp协议,希望能够对向我一样的初学者有所帮助。
全栈程序员站长
2022/11/01
3.2K0
推荐阅读
相关推荐
直播弱网优化方法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验