AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

音视频媒体 QoS 保障机制

  • 2020-02-04
  • 本文字数:1409 字

    阅读完需:约 5 分钟

音视频媒体QoS保障机制

低延迟连麦技术

目前大多数的互动直播都是主播与观众的一对多模式,观众与主播的互动主要通过使用文字、点赞、礼物等方式进行。在这种模式下,主播和观众的互动性不够直观和及时。考虑到直播时观众若能与主播进行实时的音视频互动,将会大大提高用户的参与感、增加用户粘性,目前很多直播平台都支持或者正在开发支持观众和主播连麦互动的功能,这也是目前各直播平台主要的竞争技术点之一。



连麦的简单过程如下:


  • 主播正常开始直播,观众进入房间观看主播直播画面(普通直播);

  • 直播过程中,想要连麦互动的观众发起连麦请求,进入连麦申请列表;

  • 主播从连麦申请列表中选择一名或多名观众进行连麦互动,主播可以看到并听到连麦观*众的声音画面;观众也可以看到并听到主播和其他观众的声音画面(连麦直播);

  • 连麦结束,恢复原来的主播单人直播模式。


由此可知,“连麦”要求主播和上麦的观众能够展开实时的音视频互动,这对音视频的延时和同步提出了很高的要求。

那么它该如何实现呢?

音视频实验室互动直播 SDK 针对以下几个方面持续地进行优化:


首先,在上麦时刻,基于 SDK 的秒进房特性(在另外一篇 SDK 介绍文章《音视频实验室:服务于 130+客户的直播 SDK 是怎样炼成的》中有详细介绍),连麦观众能够实现快速进房间,主播也能够快速看到上麦观众的音视频画面。

其次,在编解码端,我们对编码器效率的持续优化使得编码器耗时更小,在同等质量下码率更低,从而需要传输的数据量更小,更有利于延迟的减少;对于视频编码,我们支持 IOS、Android、PC 三端的硬件编解码,使得编码耗时更低;同时也支持软、硬件编码实时互相切换,调整更灵活,响应及时。

接着,在传输端,我们采用基于实时性很高的 UDP 协议而优化的私有的 UDT 协议,而不是直播行业常用的 RTMP、HLS、FLV 等方式,从而减小了延迟,适合于对实时性要求高的应用场景。


小科普:


RTMP、HLS、FLV 等传输协议是基于 TCP 的上层协议。TCP 协议的几次握手挥手过程和丢包重传特性都会使得延迟无法降到很低,尤其当网络有丢包和抖动时,延迟变得更加不可控。


UDP 协议就没有这些繁琐的过程,因此它有非常高的实时性,延迟能够达到 1s 以下,因此一般用在视频会议、监控、IP 电话等实时场景。但 UDP 是简单不可靠的传输方式,本身没有 QoS 的保障机制,存在丢包和乱序现象,必须要额外增加网络 QoS 机制来保证传输的质量。



我们自研的 UDT 协议通过一系列策略优化,既保证了网络 QoS 抗性,也保证了连麦场景下能够有较高的实时性:


在流控层,连麦场场景下,专门调测一组低延迟的、对音视频质量无明显影响的编解码参数和网络传输控制参数。


在接入层,依托腾讯在全球强大的服务器部署,利用智能的接入分配策略,实现最优的就近接入、跨地域、跨运营商优化接入。


基于上述几个方面的优化,音视频实验室互动直播 SDK 的连麦场景实现了最低可达到 400ms,普通网络下平均 600+ms 的低延迟连麦体验,在兼顾低延迟的同时还能保证抗性能抗最大 45%的网络丢包:


结语

本文简单介绍了最近很火的互动直播基本情况和技术特性,接着对音视频实验室互动直播 SDK 及其音视频核心技术特点进行了分享(点击阅读原文按钮,可查看上篇直播 SDK 技术揭秘)。


针对音视频实验室互动直播 SDK 现有的高性能,我们还将持续深入地优化、精益求精,以实现更丰富多样的功能性、更强的网络适应性,和更优质的音视频体验。


本文转载自腾讯多媒体实验室公众号。


原文链接:https://mp.weixin.qq.com/s/BmLeVbM5wsZUKVcCH1skbw


2020-02-04 20:381167

评论

发布
暂无评论
发现更多内容

【OH干货】如何向OpenHarmony社区提交代码

拓维信息

OpenHarmony

【C语言】一篇速通常量变量

謓泽

编程语言 C语言 2月月更 常量变量

微服务从代码到k8s部署应有尽有系列(二、网关)

万俊峰Kevin

微服务 RPC web开发 go-zero Go 语言

翟佳:从技术工程师到「网红」开源创业者

腾源会

开源 开源公司

X6在数栈指标管理中的应用

袋鼠云数栈

Java 大数据 前端

架构训练营模块二作业

苍狼

作业 模块二 架构训练营5期

启发式智能任务调度的探索

鲸品堂

算法 函数 任务调度

3种基于深度学习的有监督关系抽取方法

华为云开发者联盟

文本检测 区域重组 文本检测算法 PixelLink TextSnake

后端新手如何从 0 到 1 打造一款 Apache APISIX 插件

API7.ai 技术团队

后端 插件 Apache APISIX APISIX 网关

第十二节:Springboot多环境配置

入门小站

spring-boot

【高并发】深入解析Callable接口

冰河

Java 并发编程 多线程 高并发 异步编程

大数据培训:Flink全链路延迟的测量方式及原理

@零度

flink 大数据开发

CRM重构项目

Mars

设计模式【15】--从审批流中学习责任链模式

秦怀杂货店

Java 设计模式

如何选择充血模型和贫血模型

蜜糖的代码注释

DDD 领域建模 2月月更

前端技术分享:页面性能优化问题复盘

有道技术团队

前端

Android 12 “致命”崩溃解决之路

阿里巴巴终端技术

android 崩溃分析 客户端 UC内核

移动开发平台WorkPlus | 快速实现企业移动应用集成化

BeeWorks

mark: centos 镜像下载地址

webrtc developer

Linux centos

国内首款! 亚信科技数据库AntDB亮相中国信通院性能测试工具发布会

亚信AntDB数据库

文本检测算法新思路:基于区域重组的文本检测

华为云开发者联盟

文本检测 区域重组 文本检测算法 PixelLink TextSnake

与Karmada一起航行:海量节点的多集群管理

华为云原生团队

容器 云原生 k8s k8s多集群管理 多云管理

开源demo| 你画我猜——让你的生活更有趣

anyRTC开发者

音视频 互动白板 开源demo 你画我猜 社交娱乐

HTTP缓存协议实战

vivo互联网技术

缓存 浏览器 服务器 HTTP

2022 年值得关注的 十大 DevOps 最佳实践

飞算JavaAI开发助手

Java&Go高性能队列之channel性能测试

FunTester

Go 性能测试 队列 channel FunTester

如何通过测试用例保障交付质量

阿里云云效

阿里云 云原生 开发测试 测试用例 研发

Linux系统编程-进程间通信(共享内存)

DS小龙哥

Linux 共享内存 2月月更

Kubernetes集群统一日志管理方案(Elasticsearch+Filebeat+Kibana+Metricbeat)搭建教程

山河已无恙

Kubernetes 2月月更

java培训:JVM 锁的优化和逃逸分析

@零度

JVM JAVA开发

web前端培训: Vue3面试考点分享

@零度

前端开发 Vue3

音视频媒体QoS保障机制_文化 & 方法_腾讯多媒体实验室_InfoQ精选文章