首页 > 其他分享 >WebRTC

WebRTC

时间:2023-12-14 12:00:12浏览次数:30  
标签:音频 音视频 --- 直播 互动 WebRTC

WebRtc的整体架构

100多行代码 总---分--总

直播的由来

  • 音视频的起源:千里眼与顺风耳

  • 1876年贝尔发明了电话

  • 1872 "奔跑的马"

  • Webex与Adobe

  • Adobe创造了传统直播:传统直播:直播购物、娱乐直播、游戏直播

  • 实时互动直播:音视频会议、在线互动课堂

  • GIPD的独门秘籍

传统直播与实时互动直播

传统直播

  • 目标:一个讲多人看延时大

  • 时延:平均3秒

  • 传输协议:TCP/RTMP/HLS

  • 开源库:ffmpeg

  • 推拉流:OBS/ffmpeg

  • 浏览器支持:flv.js

  • 服务器:CDN/nginx/srs

  • 丢包: 多次重传、知道断连

  • 实现难度:小

  • TCP的APC机制与TCP重传超时退避机制

实时互动直播

  • 目标:多人互动,实时性高

  • 时延:平均500毫秒以下(视频) 音频:MOS值(0~5分割符0.5) PESQ ITU-T P2 POLQA

  • 需要解决回音问题

  • 传输协议:UDP/RTP/RTCP

  • 推拉流:WebRTC

  • 浏览器:各种终端基于WebRTC

  • 服务器:声网/mediasoup

  • 实现难度:实时性要求高、网络质量(tcp/udp) 音视频服务质量(丢包)与实时性之间有矛盾

  • 带宽:TCC、Goog-REMB

  • 丢包:重传+FEC

  • 解决回音、噪音等问题。
    发送端:音频采集-->回音消除--->降噪-->增益--->音频编码--->网络发送--->
    接收端:网络接受-->回音消除(NetEQ)--->音频播放

直播的技术方向

实时互动直播的难点

实时互动直播的几个重要指标

为什么要选择WebRTC

WebRTC整体架构

WebRtc源码分析环境的搭建

开启WebRTC源码分析之路

深入理解WebRTC线程

WebRTC媒体的实现

WebRTC音频数据的采集

WebRTC视频数据的采集

WebRTC音频音频

WebRTC视频引擎

深入理解WebRTC的网络传输

深入理解WebRTC服务质量(Qos)

WebRTC中NetEQ的实现

Simulcast与SVC

数据的安全性

网络质量

音视频引擎

3A模块

  • 支持回音消除、降噪和自动增益

  • 将传统算法用到了极致

  • 不仅支持软件方法还支持硬件方法

安全性

  • 通过动态分配用户名/密码保证用户的有效性

  • 通过指纹保证证书的真实性

  • 通过DTLS-SRTP对数据进行加密

  • 还支持端到端数据加密

跨平台

优秀的架构设计

网络模块

  • 保障数据传输的实时性(<500ms)

  • 可以实时准确的评估出带宽大小(REMB、TCC)

  • 优秀的防拥塞控制算法(GCC)

  • 保障网络带宽使用的公平性(TCP、GCC)

  • 抗丢包(NACK、FEC)

  • 防抖动、防乱序(JitterBuffer、NetEq)

  • 可以传输各种数据(音视频、文本、二进制数据)

强大的音视频引擎

  • 支持多种音视频编解码器(AV1/VP9/VP8、OPUS/ISAC)

  • 采用了最先进的音视频编解码器(AV1、OPUS)

  • 多种音视频格式可以互动(VP8、H264)

标签:音频,音视频,---,直播,互动,WebRTC
From: https://www.cnblogs.com/doubleconquer/p/17790405.html

相关文章

  • webrtc应用上线cpu偏高的问题排查
    现象 如上图,上线后服务全量使用的cpu统计明显增高,大概在50%左右. 排查比对上一稳定版本和本次版本代码diff,无异常比对依赖lib版本,无异常使用perf和FlameGraph生成火焰图比对两个版本差异.发现几个问题:有些调用栈不同,缺少一些中间函数调用栈;新版本在音频......
  • 第4章 带你快速入门WebRTC技术
    4-3屏幕共享项目-用golang搭建静态资源服务这段代码是一个使用Go语言编写的简单的HTTP和HTTPS服务器。下面是对代码中涉及的知识点和语法格式的详细解释packagemainimport( "fmt" "net/http")packagemain:这行代码指定了当前文件所属的包是main,表示这是一个可执行程......
  • webrtc如何检查媒体流存在的问题,相关代码学习
    webrtc检查媒体流存在的问题在使用WebRTC检查媒体流时,可能会遇到以下一些常见问题:未获取到媒体设备权限:在使用摄像头或麦克风之前,需要获取用户的媒体设备权限。如果用户拒绝了权限请求或未在浏览器中配置正确的权限设置,你将无法访问媒体流。设备不可用或已被占用:如果摄像......
  • 【直播协议详解】RTMP、HLS、HTTP-FLV、WebRTC、RTSP的区别
    本期我们详细讨论直播的相关协议,包括:HTTP-FLV、HLS、RTMP、Web-RTC、RTSP等等。我们将会详细介绍这些协议的工作原理、应用场景、及延迟的原因。我们按这样的顺序讨论​:RTMP、HTTP-FLVHLSWeb-RTCRTSP一、RTMP、HTTP-FLV协议RTMP和HTTP-FLV都是建立在FLV封装之上的。RTM......
  • WebRTC的QOS技术如何提升音视频通话质量
    摘要随着GPT-4的发布,AI的风越吹越旺。GPT-4可以回答问题,可以写作,甚至可以基于一张草图生成html代码搭建一个网站。即构社区的一位开发者@倪同学就基于目前在研究的WebRTCQOS技术点对GPT-3.5跟GPT-4进行一场实验,ChatGPT会取代程序员还是成为最强辅助?以下为@倪同学的博文。ChatGPT取......
  • webrtc常用api
    WebRTC(WebReal-TimeCommunication)是用于在Web浏览器中实现实时通信的技术和API集合。以下是一些常用的WebRTCAPI:getUserMedia():用于从设备(如摄像头和麦克风)获取音视频流。它允许用户授予网页访问其设备的权限,并返回一个MediaStream对象,其中包含了音视频轨道。RTCPeerCo......
  • WebRTC demo
    HTML版WebRTC,可本地运行。<!DOCTYPEhtml><html><head><metacharset="utf-8"/><title>WebRTC</title></head><body><videoautoplayplaysinline></video>......
  • 火狐浏览器无法播放webrtc
    新安装了火狐浏览器,然后发现无法播放WebRTC。我的解决本来找了n个方法,然后发现无效,还改了建立WebRtc连接的方法,还是不行,后来发现等火狐自己把插件安装完就行了火狐安装之后,会慢慢自己安装这2个插件,自动更新,等他自动更新好之后就可以播放了。我还找过自己安装的方法,点击更新......
  • WebRTC ,P2P, UDP,NAT,信令,socket
    为什么WebRTC使用UDP?NAT穿透需要UDP。没有NAT穿透,就无法建立P2P连接。UDP不像TCP那样"保证送达“,因此WebRTC在用户级别提供这一特性。你提到的是正确的,NAT(网络地址转换)穿透通常需要使用UDP协议。NAT是一种网络技术,用于将私有IP地址转换为公共IP地址,以便在互联......
  • WebRTC服务搭建(使用SRS)
    原贴:https://www.psvmc.cn/article/2021-01-21-webrtc-srs.htmlWebRTC服务搭建(使用SRS) 发表于 2021-01-21 |  分类于 liveWebRTC服务搭建(使用SRS)SRS4目前SRS对WebRTC的支持进度如下:SRS4.0.14,支持了RTMP推流,WebRTC播放。SRS4.0.76,支持了WebRTC推流,WebRTC播放。......