【AICon】 如何构建高效的 RAG 系统?RAG 技术在实际应用中遇到的挑战及应对策略?>>> 了解详情
写点什么

服务于 130+ 客户的直播 SDK 是怎样炼成的(三)

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

    阅读完需:约 3 分钟

服务于130+客户的直播SDK是怎样炼成的(三)

秒开技术

大家可能会看到,市面上某些手机直播 APP 的打开速度非常快,几乎是一点就开。而某些手机直播 APP,点击播放后要等好几秒才能播放。这是怎么回事呢?


这就不得不提到“首屏耗时”这个在直播中非常重要的指标。通俗地说,首屏耗时是从第一次点击播放到人的肉眼能够看到画面所耗费的时间,在技术上指的是播放器解码第一帧渲染显示画面的耗时。而通常我们说的“秒开”,是指点击播放后在一秒内即可看到播放画面,无需等待。


毫无疑问,首屏打开越快,用户的体验越好。



首屏耗时主要由两部分组成,一部分是进房时间,一部分是出画时间。


先看进房时间的优化。在进房时间方面,我们通过一系列的提前信令加载机制将信令尽可能的提前,并且将不能提前的部分与设备启动等耗时操作进行并行处理,同时与业务侧进行一系列的联动,通过这些措施把进房速度优化到最优的水平上。


接下来我们看出画时间的优化。


小科普:


一个视频(Video),其图像部分的数据是一组 GOP 的集合,而单个 GOP 则是一组 I / P / B 帧图像的集合。I 帧是内部编码帧(也称为关键帧),P 帧是前向预测帧(前向参考帧),B 帧是双向内插帧(双向参考帧)。简单地讲,I 帧是一个完整的画面,而 P 帧和 B 帧记录的是相对于 I 帧的变化。如果没有 I 帧,P 帧和 B 帧就无法解码。


由此,我们很容易想到:如果直播服务器支持 GOP 缓存,那么客户端在和服务器建立连接后可立即拿到数据,这样可以避免要等到下一个 I 帧到来时才能出画。但是,这个方案的缺点在于拉取的时间较随机,会带来唇音不同步、播放端延时不稳定等多个问题。为此,我们采取了一套双 GOP 缓存方案。它能够根据拉取时机更加智能地选择拉取哪个 GOP 的数据。



做完这些,是不是就可以实现一个非常好的秒开体验了呢?


其实不然。


实测中我们发现,虽然首屏耗时在整体上有了明显的降低,但它非常地不稳定,偶尔会出现耗时非常大的情况。对其原因进行排查,我们发现,这主要是由于接通的瞬间产生了大量数据的推送,此时网络的负载会变得非常大,很容易丢失 I 帧数据,导致出画需要等到下一个 GOP。基于此,我们又做了一系列的保障措施,包括推流速度的人为控制与推流数据的 QoS 保障机制等。


下图是我们与主要竞品在首屏耗时上的一个数据对比:



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


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


2020-02-04 20:40459

评论

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

前端使用TypeScript实现上传文件到MinIO

喵个咪

typescript OSS Minio axios gin

用Go编写ChatGPT插件

俞凡

golang 人工智能 ChatGPT

工作中你遇到的玄乎问题 90%是自己犯了某个很傻的错误导致的

程序员在修行

debug trouble shooting

进击的ZGC,带你细品JDK21中ZGC地进化

摸鱼编程

jdk ZGC JVM GC 低延迟

奇会智能应用CnosDB打造新一代AI安防平台

CnosDB

时序数据库 CnosDB 奇会智能

Ubuntu22系统安装OpenJDK详细教程。

百度搜索:蓝易云

云计算 Linux ubuntu 运维 Openjdk

ARTS 打卡第 1 周

Johnson

ARTS 打卡计划

究竟可观测性能给我们带来什么?

刘征

DevOps 监控 可观测性 SRE 运维、

Nautilus Chain 主网上线拉开模块化序幕,一文纵览生态项目

BlockChain先知

Visio Viewer for Mac(Visio文件编辑查看工具) v3.1.0中文激活版

mac

苹果mac Windows软件下载 Visio Viewer 文件编辑查看工具

Microsoft Remote Desktop mac(微软远程连接软件)中文版软件介绍

mac

microsoft remote desktop 苹果mac Windows软件 远程桌面连接工具

k8s 水平和垂直扩缩容

程序员在修行

架构设计

开发调试更便捷!火山引擎DataLeap提供Notebook交互式开发体验

字节跳动数据平台

大数据 数据中台 notebook 数据研发 企业号 8 月 PK 榜

Nautilus Chain 主网上线拉开模块化序幕,一文纵览生态项目

西柚子

面试官:JVM是如何判定对象已死的?学JVM必会的知识!

码农BookSea

Java JVM

蓝易云搭建RUOYI系统教程。

百度搜索:蓝易云

云计算 Linux 运维 Ruoyi 云服务器

前缀树的增删改查

程序员在修行

算法

关于学习基础知识的自我思考

程序员在修行

自我思考

ARTS 打卡第一周

程序员在修行

智能合约

麦田的守望者

ARTS打卡第一周

穿过生命散发芬芳

ARTS 打卡计划

ARTS 打卡第 1 周

atom

Studio One 6 for mac(音乐制作工具) v6.2.0中文激活版

mac

Studio One 音乐制作软件 苹果mac Windows软件

Nautilus Chain 主网上线拉开模块化序幕,一文纵览生态项目

股市老人

24. 装饰器语法与应用

茶桁

Python 装饰器

ARTS Week 1

Geek_c25301

ARTS 打卡第 10 天

自由

ARTS 打卡计划

Perfectly Clear Workbench for mac(智能图像清晰处理软件) 4.6.0.2594激活版

mac

图像处理软件 苹果mac Windows软件下载 Perfectly Clear

Nautilus Chain 主网上线拉开模块化序幕,一文纵览生态项目

大瞿科技

Mybatis中的一二级缓存

捡对象的cy

mybatis缓存

Nautilus Chain 主网上线拉开模块化序幕,一文纵览生态项目

EOSdreamer111

服务于130+客户的直播SDK是怎样炼成的(三)_文化 & 方法_腾讯多媒体实验室_InfoQ精选文章