写点什么

字节跳动《实时音视频通讯技术》学习笔记之 RTC 概述及技术简介

作者:郝培强
  • 2025-12-06
    广东
  • 本文字数:12535 字

    阅读完需:约 41 分钟

字节跳动《实时音视频通讯技术》学习笔记之 RTC 概述及技术简介

什么是实时音视频

实时音视频(RTC)即基于 IP 技术实现的实时交互的音视频通信技术。

RTC 与 直播常用协议的区别


而这里我们要使用的 RTC 技术就厉害了~


它是基于 IP 技术的,它的延迟低于 400ms,RTC 传输的内容是音视频数据。

实时音视频应用场景

  • 音视频通话

  • 产品功能

  • 1V1,多人音视频通话

  • 可以美颜、使用道具等等。

  • 技术特点

  • 支持设备差异性大

  • 网路接入经常切换


因为这种产品主要是面向用户的,不同用户使用的设备的差别比较大。根据不同设备需要做不同的优化。这就是为什么我们说支持设备差异性大。


而在实际情况中,经常遇到移动网络 4G、5G 切换 WIFI,或者基站之间的切换。这些导致网络环境的变化需要中断重连。


下面介绍两种场景:抖音直播和直播连麦。


  • 抖音直播

  • 产品功能Ⅰ

  • 电商直播

  • 游戏直播

  • 秀场直播

  • 技术特点Ⅰ

  • 主播段推流

  • 观众端 CDN 拉流

  • 直播连麦

  • 产品功能Ⅱ

  • 多个主播同框互动,观众围观实况

  • K 歌、游戏互动、互动交流

  • 技术特点Ⅱ

  • 服务端 &客户端合流

  • 合流转推

  • 实时审核


直播连麦将多个主播的视频流合流然后发送给观众。这种合流一般是在服务端做的,但是现在由于客户端的性能不断提高,现在出现了将合流放在客户端的情况,这样节约了成本。


我们都知道传统直播技术的延迟比较高,从观众评论到看到主播反馈一般要 5-10 秒以上,那么这样在教育直播、电商直播、体育直播等直播就会出现一些问题。


前面我们提到 RTC 能够实现低延迟的实时传输音视频流,那么 RTC 可以应用在直播场景吗?


答案是是,因为只要我们将基于 TCP 的网络传输协议转化为基于 UDP 的 RTC 就行了。

那为什么我们不一开始就使用 RTC 呢?

第一因为成本,CDN 的成本是 RTC 的三分之一,RTC 的部署是比较消耗资源的。


第二是因为 RTC 是需要做很多网络的优化的,比较复杂。

普通直播替换为低延时直播的方案

方案Ⅰ

拉流端(播放端)替换为 RTC:收益大。


因为观众端的延时比较大,所以一般是从观众端替换为 RTC。

方案Ⅱ

推流端(主播端)替换为 RTC:收益中。


因为主播网络环境一般还不错,所以不优先考虑主播端。

RTC 应用场景:在线教育

  • 一对一教育

  • 产品功能

  • 1V1 教学

  • 白板、课件

  • 云端录制

  • 监课

  • 技术特点

  • 课件同步

  • 音视频通话类似

  • 可能需要跨国

  • 要求和音视频通话一样,需要及时反馈,需要低延迟,跨国一对一可能物理距离较远,导致延迟可能较高。

  • 大班课

  • 产品功能

  • 万人课堂

  • 白板、课件

  • 云端录制

  • 监课

  • 技术特点

  • 1 人发布

  • 课件同步


大班课技术难度比 1V1 教育低,因为一般情况下只是老师一个人推流,不存在过多互动。总的来看,大班课互动性较差,学习体验可能不是很好。


于是,小班课就产生了,它有较强的互动性,但是其难度最大,比 1v1 教育难度要高。因为每个人网络环境不一样,需要给不同用户下发不同码率的视频。


  • 小班课

  • 产品功能

  • 多人互动

  • 白板、课件

  • 云端录制

  • 监课

  • 技术特点

  • 多人发布与订阅

  • 课件同步

RTC 使用场景:视频会议

  • 飞书视频会议

  • 产品功能

  • 百(千)人视频互动

  • 屏幕共享

  • 文档分享

  • PSTN 接入

  • 背景虚化,美颜...

  • 技术特点

  • 多人音视频互动

  • 接入设备多样性

  • 音频降噪

  • 弱网优化

  • AI 能力


总体来说,视频会议的技术难度较大,对音频降噪的要求比较高,同时存在 PSTN 接入的情况。

RTC 使用场景:游戏

  • 游戏对战

  • 产品功能

  • 小队语音

  • 范围语音

  • 技术特点

  • 低延迟、低耗能、流量小

  • 范围语音


因为游戏比较耗计算机资源和网络资源,又要求低延迟。所以需要达到低延迟、低耗能、流量小。


  • 云游戏

  • 产品功能

  • 游戏运行在服务端

  • 客户端渲染、控制

  • 技术特点

  • 超低延迟

  • 海量控制指令


这样即使设备性能不高也能实现尝试高性能的游戏。适用于大型游戏和游戏试玩。


因为需要良好的游戏体验,就需要超低延迟。而且因为我们 RTC 可以传输海量的控制指令,所以可以用于云游戏。

实时音视频技术概览

RTC 系统架构图


信令是一些控制指令,信令服务器可以用于呼叫、协调。


合流转推等等这些操作是后处理服务器来完成的。


客户端是音视频通话的终端,我们来看看客户端整体技术架构。



QoS 是保证在弱网的情况下仍然能够使用。


事件上报是因为任何的日志都需要上传,可以处理错误和进行性能优化、算法改进。


  • 全平台支持

  • 设备适配

  • 性能适配

  • 连接保持

  • 断网重连

  • 多径传输

  • 数据运营

  • 事件上报

  • 日志收集


低性能的设备使用低性能的算法。


同时支持 WIFI、4G 就需要实现多径传输。



采集到音视频等数据需要进行编码压缩然后通过网络传输,然后解码播放。

信令服务器

信令:为使网络中各种设备协调运作,在设备之间传递的控制信息。


信令服务器:就是用来传输、中专信令的服务器。


  • 常见问题

  • 全球化部署

  • 信令到达率

  • 连接保持

  • 实现方案

  • WebSocket

  • 自定义协议

媒体服务器

媒体服务器:在终端用户之间中转音视频流,进而让用户之间可以进行音视频通信。通常部署在边缘,距离用户较近的地方。



Simulcast&SVC 是根据不同用户的网络状况提供不同码率、帧率的视频。


BWE&拥塞控制是用来估计用户的可用带宽,来判断给用户发送多大码率的码流。


下面来看看几种媒体服务器的典型架构:


后处理

  • 音视频录制

  • 合流转推

  • 截图、切片

  • 审核

还有什么?

  • 数据运营

  • 质量评估

  • QoS

  • 自动化测试

  • 应用场景探索


需要数据才能优化,视频是否清晰,音频是否悦耳这就需要质量评估。

https://github.com/0qbhb7d2-debug/tdyg/issues/823

https://github.com/0qbhb7d2-debug/tdyg/issues/822

https://github.com/0qbhb7d2-debug/tdyg/issues/821

https://github.com/0qbhb7d2-debug/tdyg/issues/820

https://github.com/0qbhb7d2-debug/tdyg/issues/819

https://github.com/0qbhb7d2-debug/tdyg/issues/818

https://github.com/0qbhb7d2-debug/tdyg/issues/817

https://github.com/0qbhb7d2-debug/tdyg/issues/816

https://github.com/0qbhb7d2-debug/tdyg/issues/815

https://github.com/0qbhb7d2-debug/tdyg/issues/814

https://github.com/0qbhb7d2-debug/tdyg/issues/813

https://github.com/0qbhb7d2-debug/tdyg/issues/812

https://github.com/0qbhb7d2-debug/tdyg/issues/811

https://github.com/0qbhb7d2-debug/tdyg/issues/810

https://github.com/0qbhb7d2-debug/tdyg/issues/809

https://github.com/0qbhb7d2-debug/tdyg/issues/808

https://github.com/0qbhb7d2-debug/tdyg/issues/807

https://github.com/0qbhb7d2-debug/tdyg/issues/806

https://github.com/0qbhb7d2-debug/tdyg/issues/805

https://github.com/0qbhb7d2-debug/tdyg/issues/804

https://github.com/0qbhb7d2-debug/tdyg/issues/803

https://github.com/0qbhb7d2-debug/tdyg/issues/802

https://github.com/0qbhb7d2-debug/tdyg/issues/801

https://github.com/0qbhb7d2-debug/tdyg/issues/800

https://github.com/0qbhb7d2-debug/tdyg/issues/799

https://github.com/0qbhb7d2-debug/tdyg/issues/798

https://github.com/0qbhb7d2-debug/tdyg/issues/797

https://github.com/0qbhb7d2-debug/tdyg/issues/796

https://github.com/0qbhb7d2-debug/tdyg/issues/795

https://github.com/0qbhb7d2-debug/tdyg/issues/794

https://github.com/0qbhb7d2-debug/tdyg/issues/793

https://github.com/0qbhb7d2-debug/tdyg/issues/792

https://github.com/0qbhb7d2-debug/tdyg/issues/791

https://github.com/0qbhb7d2-debug/tdyg/issues/790

https://github.com/0qbhb7d2-debug/tdyg/issues/789

https://github.com/0qbhb7d2-debug/tdyg/issues/788

https://github.com/0qbhb7d2-debug/tdyg/issues/787

https://github.com/0qbhb7d2-debug/tdyg/issues/786

https://github.com/0qbhb7d2-debug/tdyg/issues/785

https://github.com/0qbhb7d2-debug/tdyg/issues/784

https://github.com/0qbhb7d2-debug/tdyg/issues/783

https://github.com/0qbhb7d2-debug/tdyg/issues/782

https://github.com/0qbhb7d2-debug/tdyg/issues/781

https://github.com/0qbhb7d2-debug/tdyg/issues/780

https://github.com/0qbhb7d2-debug/tdyg/issues/779

https://github.com/0qbhb7d2-debug/tdyg/issues/778

https://github.com/0qbhb7d2-debug/tdyg/issues/777

https://github.com/0qbhb7d2-debug/tdyg/issues/776

https://github.com/0qbhb7d2-debug/tdyg/issues/775

https://github.com/0qbhb7d2-debug/tdyg/issues/774

https://github.com/0qbhb7d2-debug/tdyg/issues/773

https://github.com/0qbhb7d2-debug/tdyg/issues/772

https://github.com/0qbhb7d2-debug/tdyg/issues/771

https://github.com/0qbhb7d2-debug/tdyg/issues/770

https://github.com/0qbhb7d2-debug/tdyg/issues/769

https://github.com/0qbhb7d2-debug/tdyg/issues/768

https://github.com/0qbhb7d2-debug/tdyg/issues/767

https://github.com/0qbhb7d2-debug/tdyg/issues/766

https://github.com/0qbhb7d2-debug/tdyg/issues/765

https://github.com/0qbhb7d2-debug/tdyg/issues/764

https://github.com/0qbhb7d2-debug/tdyg/issues/763

https://github.com/0qbhb7d2-debug/tdyg/issues/762

https://github.com/0qbhb7d2-debug/tdyg/issues/761

https://github.com/0qbhb7d2-debug/tdyg/issues/760

https://github.com/0qbhb7d2-debug/tdyg/issues/759

https://github.com/0qbhb7d2-debug/tdyg/issues/758

https://github.com/0qbhb7d2-debug/tdyg/issues/757

https://github.com/0qbhb7d2-debug/tdyg/issues/756

https://github.com/0qbhb7d2-debug/tdyg/issues/755

https://github.com/0qbhb7d2-debug/tdyg/issues/754

https://github.com/0qbhb7d2-debug/tdyg/issues/753

https://github.com/0qbhb7d2-debug/tdyg/issues/752

https://github.com/0qbhb7d2-debug/tdyg/issues/751

https://github.com/0qbhb7d2-debug/tdyg/issues/750

https://github.com/0qbhb7d2-debug/tdyg/issues/749

https://github.com/0qbhb7d2-debug/tdyg/issues/748

https://github.com/0qbhb7d2-debug/tdyg/issues/747

https://github.com/0qbhb7d2-debug/tdyg/issues/746

https://github.com/0qbhb7d2-debug/tdyg/issues/745

https://github.com/0qbhb7d2-debug/tdyg/issues/744

https://github.com/0qbhb7d2-debug/tdyg/issues/743

https://github.com/0qbhb7d2-debug/tdyg/issues/742

https://github.com/0qbhb7d2-debug/tdyg/issues/741

https://github.com/0qbhb7d2-debug/tdyg/issues/740

https://github.com/0qbhb7d2-debug/tdyg/issues/739

https://github.com/0qbhb7d2-debug/tdyg/issues/738

https://github.com/0qbhb7d2-debug/tdyg/issues/737

https://github.com/0qbhb7d2-debug/tdyg/issues/736

https://github.com/0qbhb7d2-debug/tdyg/issues/735

https://github.com/0qbhb7d2-debug/tdyg/issues/734

https://github.com/0qbhb7d2-debug/tdyg/issues/733

https://github.com/0qbhb7d2-debug/tdyg/issues/732

https://github.com/0qbhb7d2-debug/tdyg/issues/731

https://github.com/0qbhb7d2-debug/tdyg/issues/730

https://github.com/0qbhb7d2-debug/tdyg/issues/729

https://github.com/0qbhb7d2-debug/tdyg/issues/728

https://github.com/0qbhb7d2-debug/tdyg/issues/727

https://github.com/0qbhb7d2-debug/tdyg/issues/726

https://github.com/0qbhb7d2-debug/tdyg/issues/725

https://github.com/0qbhb7d2-debug/tdyg/issues/724

https://github.com/0qbhb7d2-debug/tdyg/issues/723

https://github.com/0qbhb7d2-debug/tdyg/issues/722

https://github.com/0qbhb7d2-debug/tdyg/issues/721

https://github.com/0qbhb7d2-debug/tdyg/issues/720

https://github.com/0qbhb7d2-debug/tdyg/issues/719

https://github.com/0qbhb7d2-debug/tdyg/issues/718

https://github.com/0qbhb7d2-debug/tdyg/issues/717

https://github.com/0qbhb7d2-debug/tdyg/issues/716

https://github.com/0qbhb7d2-debug/tdyg/issues/715

https://github.com/0qbhb7d2-debug/tdyg/issues/714

https://github.com/0qbhb7d2-debug/tdyg/issues/713

https://github.com/0qbhb7d2-debug/tdyg/issues/712

https://github.com/0qbhb7d2-debug/tdyg/issues/711

https://github.com/0qbhb7d2-debug/tdyg/issues/710

https://github.com/0qbhb7d2-debug/tdyg/issues/709

https://github.com/0qbhb7d2-debug/tdyg/issues/708

https://github.com/0qbhb7d2-debug/tdyg/issues/707

https://github.com/0qbhb7d2-debug/tdyg/issues/706

https://github.com/0qbhb7d2-debug/tdyg/issues/705

https://github.com/0qbhb7d2-debug/tdyg/issues/704

https://github.com/0qbhb7d2-debug/tdyg/issues/703

https://github.com/0qbhb7d2-debug/tdyg/issues/702

https://github.com/0qbhb7d2-debug/tdyg/issues/701

https://github.com/0qbhb7d2-debug/tdyg/issues/700

https://github.com/0qbhb7d2-debug/tdyg/issues/699

https://github.com/0qbhb7d2-debug/tdyg/issues/698

https://github.com/0qbhb7d2-debug/tdyg/issues/697

https://github.com/0qbhb7d2-debug/tdyg/issues/696

https://github.com/0qbhb7d2-debug/tdyg/issues/695

https://github.com/0qbhb7d2-debug/tdyg/issues/694

https://github.com/0qbhb7d2-debug/tdyg/issues/693

https://github.com/0qbhb7d2-debug/tdyg/issues/692

https://github.com/0qbhb7d2-debug/tdyg/issues/691

https://github.com/0qbhb7d2-debug/tdyg/issues/690

https://github.com/0qbhb7d2-debug/tdyg/issues/689

https://github.com/0qbhb7d2-debug/tdyg/issues/688

https://github.com/0qbhb7d2-debug/tdyg/issues/687

https://github.com/0qbhb7d2-debug/tdyg/issues/686

https://github.com/0qbhb7d2-debug/tdyg/issues/685

https://github.com/0qbhb7d2-debug/tdyg/issues/684

https://github.com/0qbhb7d2-debug/tdyg/issues/683

https://github.com/0qbhb7d2-debug/tdyg/issues/682

https://github.com/0qbhb7d2-debug/tdyg/issues/681

https://github.com/0qbhb7d2-debug/tdyg/issues/680

https://github.com/0qbhb7d2-debug/tdyg/issues/679

https://github.com/0qbhb7d2-debug/tdyg/issues/678

https://github.com/0qbhb7d2-debug/tdyg/issues/677

https://github.com/0qbhb7d2-debug/tdyg/issues/676

https://github.com/0qbhb7d2-debug/tdyg/issues/675

https://github.com/0qbhb7d2-debug/tdyg/issues/674

https://github.com/0qbhb7d2-debug/tdyg/issues/673

https://github.com/0qbhb7d2-debug/tdyg/issues/672

https://github.com/0qbhb7d2-debug/tdyg/issues/671

https://github.com/0qbhb7d2-debug/tdyg/issues/670

https://github.com/0qbhb7d2-debug/tdyg/issues/669

https://github.com/0qbhb7d2-debug/tdyg/issues/668

https://github.com/0qbhb7d2-debug/tdyg/issues/667

https://github.com/0qbhb7d2-debug/tdyg/issues/666

https://github.com/0qbhb7d2-debug/tdyg/issues/665

https://github.com/0qbhb7d2-debug/tdyg/issues/664

https://github.com/0qbhb7d2-debug/tdyg/issues/663

https://github.com/0qbhb7d2-debug/tdyg/issues/662

https://github.com/0qbhb7d2-debug/tdyg/issues/661

https://github.com/0qbhb7d2-debug/tdyg/issues/660

https://github.com/0qbhb7d2-debug/tdyg/issues/659

https://github.com/0qbhb7d2-debug/tdyg/issues/658

https://github.com/0qbhb7d2-debug/tdyg/issues/657

https://github.com/0qbhb7d2-debug/tdyg/issues/656

https://github.com/0qbhb7d2-debug/tdyg/issues/655

https://github.com/0qbhb7d2-debug/tdyg/issues/654

https://github.com/0qbhb7d2-debug/tdyg/issues/653

https://github.com/0qbhb7d2-debug/tdyg/issues/652

https://github.com/0qbhb7d2-debug/tdyg/issues/651

https://github.com/0qbhb7d2-debug/tdyg/issues/650

https://github.com/0qbhb7d2-debug/tdyg/issues/649

https://github.com/0qbhb7d2-debug/tdyg/issues/648

https://github.com/0qbhb7d2-debug/tdyg/issues/647

https://github.com/0qbhb7d2-debug/tdyg/issues/646

https://github.com/0qbhb7d2-debug/tdyg/issues/645

https://github.com/0qbhb7d2-debug/tdyg/issues/644

https://github.com/0qbhb7d2-debug/tdyg/issues/643

https://github.com/0qbhb7d2-debug/tdyg/issues/642

https://github.com/0qbhb7d2-debug/tdyg/issues/641

https://github.com/0qbhb7d2-debug/tdyg/issues/640

https://github.com/0qbhb7d2-debug/tdyg/issues/639

https://github.com/0qbhb7d2-debug/tdyg/issues/638

https://github.com/0qbhb7d2-debug/tdyg/issues/637

https://github.com/0qbhb7d2-debug/tdyg/issues/636

https://github.com/0qbhb7d2-debug/tdyg/issues/635

https://github.com/0qbhb7d2-debug/tdyg/issues/634

https://github.com/0qbhb7d2-debug/tdyg/issues/633

https://github.com/0qbhb7d2-debug/tdyg/issues/632

https://github.com/0qbhb7d2-debug/tdyg/issues/631

https://github.com/0qbhb7d2-debug/tdyg/issues/630

https://github.com/0qbhb7d2-debug/tdyg/issues/629

https://github.com/0qbhb7d2-debug/tdyg/issues/628

https://github.com/0qbhb7d2-debug/tdyg/issues/627

https://github.com/0qbhb7d2-debug/tdyg/issues/626

https://github.com/0qbhb7d2-debug/tdyg/issues/625

https://github.com/0qbhb7d2-debug/tdyg/issues/624

https://github.com/0qbhb7d2-debug/tdyg/issues/623

https://github.com/0qbhb7d2-debug/tdyg/issues/622

https://github.com/0qbhb7d2-debug/tdyg/issues/621

https://github.com/0qbhb7d2-debug/tdyg/issues/620

https://github.com/0qbhb7d2-debug/tdyg/issues/619

https://github.com/0qbhb7d2-debug/tdyg/issues/618

https://github.com/0qbhb7d2-debug/tdyg/issues/617

https://github.com/0qbhb7d2-debug/tdyg/issues/616

https://github.com/0qbhb7d2-debug/tdyg/issues/615

https://github.com/0qbhb7d2-debug/tdyg/issues/614

https://github.com/0qbhb7d2-debug/tdyg/issues/613

https://github.com/0qbhb7d2-debug/tdyg/issues/612

https://github.com/0qbhb7d2-debug/tdyg/issues/611

https://github.com/0qbhb7d2-debug/tdyg/issues/610

https://github.com/0qbhb7d2-debug/tdyg/issues/609

https://github.com/0qbhb7d2-debug/tdyg/issues/608

https://github.com/0qbhb7d2-debug/tdyg/issues/607

https://github.com/0qbhb7d2-debug/tdyg/issues/606

https://github.com/0qbhb7d2-debug/tdyg/issues/605

https://github.com/0qbhb7d2-debug/tdyg/issues/604

https://github.com/0qbhb7d2-debug/tdyg/issues/603

https://github.com/0qbhb7d2-debug/tdyg/issues/602

https://github.com/0qbhb7d2-debug/tdyg/issues/601

https://github.com/0qbhb7d2-debug/tdyg/issues/600

https://github.com/0qbhb7d2-debug/tdyg/issues/599

https://github.com/0qbhb7d2-debug/tdyg/issues/598

https://github.com/0qbhb7d2-debug/tdyg/issues/597

https://github.com/0qbhb7d2-debug/tdyg/issues/596

https://github.com/0qbhb7d2-debug/tdyg/issues/595

https://github.com/0qbhb7d2-debug/tdyg/issues/594

https://github.com/0qbhb7d2-debug/tdyg/issues/593

https://github.com/0qbhb7d2-debug/tdyg/issues/592

https://github.com/0qbhb7d2-debug/tdyg/issues/591

https://github.com/0qbhb7d2-debug/tdyg/issues/590

https://github.com/0qbhb7d2-debug/tdyg/issues/589

https://github.com/0qbhb7d2-debug/tdyg/issues/588

https://github.com/0qbhb7d2-debug/tdyg/issues/587

https://github.com/0qbhb7d2-debug/tdyg/issues/586

https://github.com/0qbhb7d2-debug/tdyg/issues/585

https://github.com/0qbhb7d2-debug/tdyg/issues/584

https://github.com/0qbhb7d2-debug/tdyg/issues/583

https://github.com/0qbhb7d2-debug/tdyg/issues/582

https://github.com/0qbhb7d2-debug/tdyg/issues/581

https://github.com/0qbhb7d2-debug/tdyg/issues/580

https://github.com/0qbhb7d2-debug/tdyg/issues/579

https://github.com/0qbhb7d2-debug/tdyg/issues/578

https://github.com/0qbhb7d2-debug/tdyg/issues/577

https://github.com/0qbhb7d2-debug/tdyg/issues/576

https://github.com/0qbhb7d2-debug/tdyg/issues/575

https://github.com/0qbhb7d2-debug/tdyg/issues/574

https://github.com/0qbhb7d2-debug/tdyg/issues/573

https://github.com/0qbhb7d2-debug/tdyg/issues/572

https://github.com/0qbhb7d2-debug/tdyg/issues/571

https://github.com/0qbhb7d2-debug/tdyg/issues/570

https://github.com/0qbhb7d2-debug/tdyg/issues/569

https://github.com/0qbhb7d2-debug/tdyg/issues/568

https://github.com/0qbhb7d2-debug/tdyg/issues/567

https://github.com/0qbhb7d2-debug/tdyg/issues/566

https://github.com/0qbhb7d2-debug/tdyg/issues/565

https://github.com/0qbhb7d2-debug/tdyg/issues/564

https://github.com/0qbhb7d2-debug/tdyg/issues/563

https://github.com/0qbhb7d2-debug/tdyg/issues/562

https://github.com/0qbhb7d2-debug/tdyg/issues/561

https://github.com/0qbhb7d2-debug/tdyg/issues/560

https://github.com/0qbhb7d2-debug/tdyg/issues/559

https://github.com/0qbhb7d2-debug/tdyg/issues/558

https://github.com/0qbhb7d2-debug/tdyg/issues/557

https://github.com/0qbhb7d2-debug/tdyg/issues/556

https://github.com/0qbhb7d2-debug/tdyg/issues/555

https://github.com/0qbhb7d2-debug/tdyg/issues/554

https://github.com/0qbhb7d2-debug/tdyg/issues/553

https://github.com/0qbhb7d2-debug/tdyg/issues/552

https://github.com/0qbhb7d2-debug/tdyg/issues/551

https://github.com/0qbhb7d2-debug/tdyg/issues/550

https://github.com/0qbhb7d2-debug/tdyg/issues/549

https://github.com/0qbhb7d2-debug/tdyg/issues/548

https://github.com/0qbhb7d2-debug/tdyg/issues/547

https://github.com/0qbhb7d2-debug/tdyg/issues/546

https://github.com/0qbhb7d2-debug/tdyg/issues/545

https://github.com/0qbhb7d2-debug/tdyg/issues/544

https://github.com/0qbhb7d2-debug/tdyg/issues/543

https://github.com/0qbhb7d2-debug/tdyg/issues/542

https://github.com/0qbhb7d2-debug/tdyg/issues/541

https://github.com/0qbhb7d2-debug/tdyg/issues/540

https://github.com/0qbhb7d2-debug/tdyg/issues/539

https://github.com/0qbhb7d2-debug/tdyg/issues/538

https://github.com/0qbhb7d2-debug/tdyg/issues/537

https://github.com/0qbhb7d2-debug/tdyg/issues/536

https://github.com/0qbhb7d2-debug/tdyg/issues/535

https://github.com/0qbhb7d2-debug/tdyg/issues/534

https://github.com/0qbhb7d2-debug/tdyg/issues/533

https://github.com/0qbhb7d2-debug/tdyg/issues/532

https://github.com/0qbhb7d2-debug/tdyg/issues/531

https://github.com/0qbhb7d2-debug/tdyg/issues/530

https://github.com/0qbhb7d2-debug/tdyg/issues/529

https://github.com/0qbhb7d2-debug/tdyg/issues/528

https://github.com/0qbhb7d2-debug/tdyg/issues/527

https://github.com/0qbhb7d2-debug/tdyg/issues/526

https://github.com/0qbhb7d2-debug/tdyg/issues/525

https://github.com/0qbhb7d2-debug/tdyg/issues/524

https://github.com/0qbhb7d2-debug/tdyg/issues/523

https://github.com/0qbhb7d2-debug/tdyg/issues/522

https://github.com/0qbhb7d2-debug/tdyg/issues/521

https://github.com/0qbhb7d2-debug/tdyg/issues/520

https://github.com/0qbhb7d2-debug/tdyg/issues/519

https://github.com/0qbhb7d2-debug/tdyg/issues/518

https://github.com/0qbhb7d2-debug/tdyg/issues/517

https://github.com/0qbhb7d2-debug/tdyg/issues/516

https://github.com/0qbhb7d2-debug/tdyg/issues/515

https://github.com/0qbhb7d2-debug/tdyg/issues/514

https://github.com/0qbhb7d2-debug/tdyg/issues/513

https://github.com/0qbhb7d2-debug/tdyg/issues/512

https://github.com/0qbhb7d2-debug/tdyg/issues/511

https://github.com/0qbhb7d2-debug/tdyg/issues/510

https://github.com/0qbhb7d2-debug/tdyg/issues/509

https://github.com/0qbhb7d2-debug/tdyg/issues/508

https://github.com/0qbhb7d2-debug/tdyg/issues/507

https://github.com/0qbhb7d2-debug/tdyg/issues/506

https://github.com/0qbhb7d2-debug/tdyg/issues/505

https://github.com/0qbhb7d2-debug/tdyg/issues/504

https://github.com/0qbhb7d2-debug/tdyg/issues/503

https://github.com/0qbhb7d2-debug/tdyg/issues/502

https://github.com/0qbhb7d2-debug/tdyg/issues/501

https://github.com/0qbhb7d2-debug/tdyg/issues/500

https://github.com/0qbhb7d2-debug/tdyg/issues/499

https://github.com/0qbhb7d2-debug/tdyg/issues/498

https://github.com/0qbhb7d2-debug/tdyg/issues/497

https://github.com/0qbhb7d2-debug/tdyg/issues/496

https://github.com/0qbhb7d2-debug/tdyg/issues/495

https://github.com/0qbhb7d2-debug/tdyg/issues/494

https://github.com/0qbhb7d2-debug/tdyg/issues/493

https://github.com/0qbhb7d2-debug/tdyg/issues/492

https://github.com/0qbhb7d2-debug/tdyg/issues/491

https://github.com/0qbhb7d2-debug/tdyg/issues/490

https://github.com/0qbhb7d2-debug/tdyg/issues/489

https://github.com/0qbhb7d2-debug/tdyg/issues/488

https://github.com/0qbhb7d2-debug/tdyg/issues/487

https://github.com/0qbhb7d2-debug/tdyg/issues/486

https://github.com/0qbhb7d2-debug/tdyg/issues/485

https://github.com/0qbhb7d2-debug/tdyg/issues/484

https://github.com/0qbhb7d2-debug/tdyg/issues/483

https://github.com/0qbhb7d2-debug/tdyg/issues/482

https://github.com/0qbhb7d2-debug/tdyg/issues/481

https://github.com/0qbhb7d2-debug/tdyg/issues/480

https://github.com/0qbhb7d2-debug/tdyg/issues/479

https://github.com/0qbhb7d2-debug/tdyg/issues/478

https://github.com/0qbhb7d2-debug/tdyg/issues/477

https://github.com/0qbhb7d2-debug/tdyg/issues/476

https://github.com/0qbhb7d2-debug/tdyg/issues/475

https://github.com/0qbhb7d2-debug/tdyg/issues/474

https://github.com/0qbhb7d2-debug/tdyg/issues/473

https://github.com/0qbhb7d2-debug/tdyg/issues/472

https://github.com/0qbhb7d2-debug/tdyg/issues/471

https://github.com/0qbhb7d2-debug/tdyg/issues/470

https://github.com/0qbhb7d2-debug/tdyg/issues/469

https://github.com/0qbhb7d2-debug/tdyg/issues/468

https://github.com/0qbhb7d2-debug/tdyg/issues/467

https://github.com/0qbhb7d2-debug/tdyg/issues/466

https://github.com/0qbhb7d2-debug/tdyg/issues/465

https://github.com/0qbhb7d2-debug/tdyg/issues/464

https://github.com/0qbhb7d2-debug/tdyg/issues/463

https://github.com/0qbhb7d2-debug/tdyg/issues/462

https://github.com/0qbhb7d2-debug/tdyg/issues/461

https://github.com/0qbhb7d2-debug/tdyg/issues/460

https://github.com/0qbhb7d2-debug/tdyg/issues/459

https://github.com/0qbhb7d2-debug/tdyg/issues/458

https://github.com/0qbhb7d2-debug/tdyg/issues/457

https://github.com/0qbhb7d2-debug/tdyg/issues/456

https://github.com/0qbhb7d2-debug/tdyg/issues/455

https://github.com/0qbhb7d2-debug/tdyg/issues/454

https://github.com/0qbhb7d2-debug/tdyg/issues/453

https://github.com/0qbhb7d2-debug/tdyg/issues/452

https://github.com/0qbhb7d2-debug/tdyg/issues/451

https://github.com/0qbhb7d2-debug/tdyg/issues/450

https://github.com/0qbhb7d2-debug/tdyg/issues/449

https://github.com/0qbhb7d2-debug/tdyg/issues/448

https://github.com/0qbhb7d2-debug/tdyg/issues/447

https://github.com/0qbhb7d2-debug/tdyg/issues/446

https://github.com/0qbhb7d2-debug/tdyg/issues/445

https://github.com/0qbhb7d2-debug/tdyg/issues/444

https://github.com/0qbhb7d2-debug/tdyg/issues/443

https://github.com/0qbhb7d2-debug/tdyg/issues/442

https://github.com/0qbhb7d2-debug/tdyg/issues/441

https://github.com/0qbhb7d2-debug/tdyg/issues/440

https://github.com/0qbhb7d2-debug/tdyg/issues/439

https://github.com/0qbhb7d2-debug/tdyg/issues/438

https://github.com/0qbhb7d2-debug/tdyg/issues/437

https://github.com/0qbhb7d2-debug/tdyg/issues/436

https://github.com/0qbhb7d2-debug/tdyg/issues/435

https://github.com/0qbhb7d2-debug/tdyg/issues/434

https://github.com/0qbhb7d2-debug/tdyg/issues/433

https://github.com/0qbhb7d2-debug/tdyg/issues/432

https://github.com/0qbhb7d2-debug/tdyg/issues/431

https://github.com/0qbhb7d2-debug/tdyg/issues/430

https://github.com/0qbhb7d2-debug/tdyg/issues/429

https://github.com/0qbhb7d2-debug/tdyg/issues/428

https://github.com/0qbhb7d2-debug/tdyg/issues/427

https://github.com/0qbhb7d2-debug/tdyg/issues/426

https://github.com/0qbhb7d2-debug/tdyg/issues/425

https://github.com/0qbhb7d2-debug/tdyg/issues/424

https://github.com/0qbhb7d2-debug/tdyg/issues/423

https://github.com/0qbhb7d2-debug/tdyg/issues/422

https://github.com/0qbhb7d2-debug/tdyg/issues/421

https://github.com/0qbhb7d2-debug/tdyg/issues/420

https://github.com/0qbhb7d2-debug/tdyg/issues/419

https://github.com/0qbhb7d2-debug/tdyg/issues/418

https://github.com/0qbhb7d2-debug/tdyg/issues/417

https://github.com/0qbhb7d2-debug/tdyg/issues/416

https://github.com/0qbhb7d2-debug/tdyg/issues/415

https://github.com/0qbhb7d2-debug/tdyg/issues/414

https://github.com/0qbhb7d2-debug/tdyg/issues/413

https://github.com/0qbhb7d2-debug/tdyg/issues/412

https://github.com/0qbhb7d2-debug/tdyg/issues/411

https://github.com/0qbhb7d2-debug/tdyg/issues/410

https://github.com/0qbhb7d2-debug/tdyg/issues/409

https://github.com/0qbhb7d2-debug/tdyg/issues/408

https://github.com/0qbhb7d2-debug/tdyg/issues/407

https://github.com/0qbhb7d2-debug/tdyg/issues/406

https://github.com/0qbhb7d2-debug/tdyg/issues/405

https://github.com/0qbhb7d2-debug/tdyg/issues/404

https://github.com/0qbhb7d2-debug/tdyg/issues/403

https://github.com/0qbhb7d2-debug/tdyg/issues/402

https://github.com/0qbhb7d2-debug/tdyg/issues/401

https://github.com/0qbhb7d2-debug/tdyg/issues/400

https://github.com/0qbhb7d2-debug/tdyg/issues/399

https://github.com/0qbhb7d2-debug/tdyg/issues/398

https://github.com/0qbhb7d2-debug/tdyg/issues/397

https://github.com/0qbhb7d2-debug/tdyg/issues/396


自动化测试和质量评估也是比较重要的。


去探索新的应用场景也是非常重要的。

用户头像

郝培强

关注

还未添加个人签名 2025-11-19 加入

还未添加个人简介

评论

发布
暂无评论
字节跳动《实时音视频通讯技术》学习笔记之 RTC 概述及技术简介_郝培强_InfoQ写作社区