当前位置: 首页 > news >正文

RTC 基础

简单的一个框架

一、上行

1.音频

音频采集->3A处理->混合(麦克风+bgm+自定义音频)->编码->fec->打网络包(UDT/QUIC/SRT)->加密->socket发送

2.视频

视频采集->编码->切片->fec->打网络包(UDT/QUIC/SRC)->加密->socket发送

二、下行

1.音频

socket接收->解网络包->解密->送入抗抖动buffer

播放器(播放线程)->获取抗抖动buffer数据包->解码->播放

2.视频

socket接收->解网络包->解密->组视频包->送入抗抖动buffer->送入解码缓存->图片处理->渲染

 

 总结:

音频视频网络部分大致相同,FEC/网络包/加密

在实际场景中,每一个部分都会涉及更多的细节逻辑

比如

1. 编码,音频一般会再opus/aac之间做选择,opus更广泛,更低的编码延迟在实时场景中有更好的表现。视频一般为x264/o264中做选择,但是视频为了获取更好的性能,又会选择硬编硬解,这就又引入了更多的平台相关的技术,更为复杂

2. 因为音视频都是单独传输,接收端又要考虑音画同步问题

3. 视频数据即便是编码压缩后,数据依旧比较大,要考虑加入buffer,做为平滑发送(pacing)的手段

在包括 采集,编解码,网络延迟,播放,每一个部分的延迟都需要纳入考虑范畴

http://www.lryc.cn/news/59649.html

相关文章:

  • Quaternion插值方法
  • 如何配置Stash以便与4EVERLAND一起使用
  • webpack plugin源码解析(四) HashedModuleIdsPlugin
  • pytorch | 使用vmap对自定义函数进行并行化/ 向量化的执行
  • Docker部署RabbitMQ(单机,集群,仲裁队列)
  • 生活污水处理设备选购指南
  • 奥威BI数据可视化大屏分享|多场景、多风格
  • 超越时空:加速预训练语言模型的训练
  • 数据库管理系统PostgreSQL部署安装完整教程
  • 有学生问我,重构是什么?我应该如何回答?
  • 交际场合---英文单词
  • 【网络安全】文件上传漏洞及中国蚁剑安装
  • [Java]面向对象高级篇
  • 苹果应用商店上架流程
  • 基于Eclipse下使用arm gcc开发GD32调用printf
  • 5个降低云成本并提高IT运营效率的优先事项
  • 95-拥塞控制
  • Linux常见操作命令【二】
  • Linux驱动中断和定时器
  • 表达式和函数
  • C#基础复习
  • Windows服务器使用代码SSH免密登录并执行脚本
  • (Deep Learning)交叉验证(Cross Validation)
  • 通俗举例讲解动态链接】静态链接
  • K8S部署常见问题归纳
  • Redis高可用
  • Hyperledger Fabric 2.2版本环境搭建
  • macOS Monterey 12.6.5 (21G531) Boot ISO 原版可引导镜像
  • 【软件设计师13】数据库设计
  • SpringMVC的全注解开发