常规视频的传输包括以下几个步骤:
采集,编码,推流,转码,分发,拉流,解码和渲染

在一个实时的音视频系统架构里,上面的每个环节都会有一定程度的优化空间。

以下内容摘自:rtmp直播和webrtc直播对比优劣何在?

webrtc 是近两年看好的方向,大多采用 RTMP 框架的流媒体系统在处理直播中的问题时会用到 webrtc。webrtc 最初是由 Google 开发的,它们作为基于浏览器的实时通信的开源解决方案发布。它使用 UDP 来进行媒体推流,而不需要创建离散的媒体段,这为所有客户端提供了始终如一的低延时(低于 500ms)。随着苹果的 webrtc 支持加入了 Safari 11,它现在已经被所有主流浏览器(包括 Google Chrome,Firefox,和 Microsoft Edge)所支持。webrtc 协议的设计使其可以很灵活的进行各种实现,使企业能够尝试针对一对一,一对多,甚至一对数百万的解决方案。此外,它支持通过TLS进行交付,以确保传输过程中内容的安全。

除了低延时流传输外,webrtc 还提供了一个实时双向数据通道,可用于发送和接收数据流。这种双向数据技术给在线流现在如何能成为一种交互式的体验提供了很多有趣的可能性。

为什么强烈建议你基于 webrtc?对直播系统,难的不是服务器,而是客户端。客户端难的地方则主要体现在两个方面,一是网络传输有关,像侦听事件,同步主线程和读线程,穿透;二是流数据有关,像编码、解码、回声消除。而这些正是webrtc帮你解决了。

优点

  • W3C 标准,主流浏览器支持程度高
  • Google 在背后支撑,并在各平台有参考实现
  • 底层基于 SRTP 和 UDP,弱网情况优化空间大
  • 可以实现点对点通信,通信双方延时低(目前主要应用于连麦和视频会议)

缺点

  • 传统 CDN 没有类似的服务提供(一对多模式主要是 rtmp 的 cdn 内容分发机制)
  • 编译 webrtc 的源码就是一个比较大的挑战,搭建其复杂的编译环境往往会遇到很多意想不到的问题。
  • webrtc 缺乏服务器方案的设计和部署。传输质量难以保证,优化手段也有限,只能做一些端到端的优化,难以应对复杂的互联网环境。

什么是媒体推流和离散的媒体段?


基于 UDP 的两种方案对比,第一种是可靠 UDP 方向,比如 Quic ,另一种是 RTC 方案,比如 WebRTC 。

RTC(Real time communication)实时通信,是实时音视频的一个简称,我们常说的 RTC 技术一般指的是 WebRTC 技术

从五个维度对两种方案做了对比:

  • 传输方式:Quic 是可靠传输;而 RTC 是半可靠传输,特定情境下可对音视频有损传输,可有效降低延迟。
  • 复杂度:Quic 的复杂度非常低,相当于将 TCP 接口换位 Quic 接口即可,RTC 方案的复杂很高,涉及一整套的协议设计和 QOS 保障机制。
  • 音视频友好性:Quic 不关心传输内容,对音视频数据透明传输。RTC 对音视频更友好,可针对音视频做定制化优化。
  • 方案完备性:从方案完备性方面来讲,Quic 是针对传输层优化,而 WebRTC 可提供端对端优化方案。
  • 理论延迟:经我们实验室测试以及线上数据分析,WebRTC 方案的延迟可以达到 1 秒以内。

综上,Quic 方案的最大优点是复杂度低,不过这个方案要想达到更低的延迟,也需要引入更多的复杂度。从方案的先进性上看,选择 WebRTC 技术作为低延迟方案。同时,我们也相信,RTC 技术和直播技术的融合,是未来音视频传输技术的一个趋势

参考:为何一直推荐 webrtc?

QoS(Quality of Service)即服务质量。在有限的带宽资源下,QoS 为各种业务分配带宽,为业务提供端到端的服务质量保证。例如,语音、视频和重要的数据应用在网络设备中可以通过配置 QoS 优先得到服务

WebRTC 是浏览器内建的所有数据传输方式中,唯一一个不依赖 Server-Client 模式的。故只有使用 WebRTC 作为 P2P 的传输协议,才能兼容消费带宽占比最大的浏览器端用户

相关文章:https://github.com/bovinphang/WebRTC

webrtc 的理解的更多相关文章

  1. 深入理解WebRTC

    Web Real-Time Communication(Web实时通信,WebRTC)由一组标准.协议和JavaScript API组成,用于实现浏览器之间(端到端)的音频.视频及数据共享. WebR ...

  2. webrtc源码阅读理解一

    webrtc是一个比较成熟的实时音视频处理开源项目,一上来老大就扔给我一本webrtc native实践,虽然狠下心"翻"完了一遍,但是还是云里雾里的,在经过几个月的摸索之后,我大 ...

  3. WebRTC学习之ICE深入理解

    ICE(交互式连接建立---Interactive Connectivity Establishment),是一种标准穿透协议.它利用STUN和TURN服务器来帮助端点建立连接.下图显示了ICE的基本 ...

  4. 使用WebRTC搭建前端视频聊天室——数据通道篇

    本文翻译自WebRTC data channels 在两个浏览器中,为聊天.游戏.或是文件传输等需求发送信息是十分复杂的.通常情况下,我们需要建立一台服务器来转发数据,当然规模比较大的情况下,会扩展成 ...

  5. 单独编译使用WebRTC的音频处理模块

    块,每块个点,(12*64=768采样)即AEC-PC仅能处理48ms的单声道16kHz延迟的数据,而 - 加载编译好的NS模块动态库 接下来只需要按照 此文 的描述在 android 的JAVA代码 ...

  6. WebRTC通信流程

    WebRTC是HTML5支持的重要特性之一,有了它,不再需要借助音视频相关的客户端,直接通过浏览器的Web页面就可以实现音视频对聊功能.而且WebRTC项目是开源的,我们可以借助WebRTC源码快速构 ...

  7. WebRTC手记之初探

    转载请注明出处:http://www.cnblogs.com/fangkm/p/4364553.html WebRTC是HTML5支持的重要特性之一,有了它,不再需要借助音视频相关的客户端,直接通过浏 ...

  8. webrtc初识

    最近由于项目的需求,开始接触了webrtc这个东西.没想到这东西的门槛还是蛮高的,接下来分享一下我所踩过的坑,希望对以后初次接触这个东西的人有所帮助. webrtc官网 第一步当然是看官方主页了(ww ...

  9. Android IOS WebRTC 音视频开发总结(七七)-- WebRTC的架构和协议栈

    本文主要介绍WebRTC的架构和协议栈(我们翻译和整理的,译者:litie),最早发表在[编风网] 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacker(微信ID:blackerteam ...

  10. (一)WebRTC手记之初探

    转自:http://www.cnblogs.com/fangkm/p/4364553.html WebRTC是HTML5支持的重要特性之一,有了它,不再需要借助音视频相关的客户端,直接通过浏览器的We ...

随机推荐

  1. Java进程内线程数量限制的相关学习

    Java进程内线程数量限制的相关学习 背景 还是之前出现 cannot create native thread 的问题的后续 周末在家学习了下如何在容器外抓取dump. 也验证了下能否开启超过宿主机 ...

  2. [转帖]并发控制- sched_yield 函数

    函数说明 函数原型 #include <sched.h> int sched_yield(void); 1 2 sched_yield的作用是让出处理器,调用时会导致当前线程放弃CPU,进 ...

  3. Intel 的家用CPU的后缀

    Intel 也奸商 各种后缀 最开始P 表示无核显版本 现在用 F来表示了.. 略坑. 一下来源百家号: https://baijiahao.baidu.com/s?id=16276964705166 ...

  4. OpenEuler2203使用rpm方式安装Oracle19c的过程

    OpenEuler2203使用rpm方式安装Oracle19c的过程 安装介质 oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm oracle-d ...

  5. firewall-cmd 命令简单总结

    最近进行相关网络设置, 发现需要总结一下不然总是会忘记. # 1. 开放IP地址访问 firewall-cmd --zone=trusted --add-source=yourip --permane ...

  6. axios发送请求时携带token

    请求头携带token async getUserlist(){ // 需要授权的Api,必须在青丘头中使用Authorization 字段提供token令牌 const AUTH_TOKEN=loca ...

  7. 初试高云FPGA

    前言 之前一直眼馋Sipeed的Tang系列,正好遇到有工程需要高速控制并行总线,就买了NANO 9K和Primer 20K试试水 买回来先拆的贵的20k,结果发现Sipeed设计师有奇怪的脑回路: ...

  8. gRPC基本教程

    原文在这里. 本教程为Go程序员提供了使用gRPC的基本介绍. 通过跟随本示例,你将学会如何: 在.proto文件中定义一个服务. 使用协议缓冲编译器生成服务器和客户端代码. 使用Go gRPC AP ...

  9. windwos使用FRP方式

    FRP使用方法 流程图如下 建议查看流程图哦 访问FRP官方项目 https://freefrp.net 下面是windwos演示 进入网站选择客户端下载 客户端版本选择 windwos是adm64 ...

  10. c++基础之表达式

    这次接着更新<c++ primer> 这本书的读书笔记,上一篇博文更新到了书中的第三章,本次将记录书中的第四章--表达式 左值与右值 在理解表达式之前需要先理解c++中左值和右值的概念. ...