技术分享| anyRTC低延时直播优化

news2024/9/29 17:21:54

直播系统就是把活动现场的音频或视频信号经数字压缩后,传送到直播多媒体服务器(CDN)上,在互联网上供广大网友或授权特定人群收听或收看。而随着技术的日益更新,人民对于直播的互动性,实时性要求更高了,传统的直播少则几十秒,多则几分钟的时延很难满足现在的很多直播场景。今天我们就从播放器端来聊一下anyRTC是如何在端侧做到更低时延的播放效果的。

一.播放器工作原理

在这里插入图片描述

播放器的模块大致分为:解封装,数据包队列,解码,帧队列,渲染等几大模块,然后组成一套播放逻辑,基本上所有的播放器的功能实现也都大同小异。

1.解封装即Demuxer,我们通常使用FFMpeg来做。

2.数据包队列,这里是延时优化的重点区域,因为此队列中可能会缓存大量的数据,我们可以通过音视频包的PTS或者Duration来计算出队列中的总时长,从而进行播放器的时延优化。

3.解码,通常在端侧使用软件或硬件解码,二者的效率差异更多的是在Cpu的消耗,主要影响的是机器的发热,播放的流畅性。

4.帧队列,是解码之后的图像或音频数据,等待渲染。

5.渲染,是将图像或音频数据丢入系统,由系统进行对应的输出。

二.如何降低时延

在播放端,对于延时影响最大的是数据包队列。只要网络有抖动或者卡顿,播放器端的累积延迟会逐步加大。

很多的技术文章说直播优化延迟的都是丢帧策略,最直接的:清缓存数据队列,虽然这个方法可以短时间内降低延迟,但是强行跳帧,直播内容强行被跳过,严重影响体验;如果丢Gop里面的B帧,非参考帧或者序列里面最后几个P帧等;或者丢部分音频数据包,视频帧时间戳同步音频来达到数据的加速消耗等。但是实际效果均对用户体验产生一定影响。

所以一个好的追帧策略,对于低延时播放非常的重要,对于播放器来说,越多的缓存就意味着更低的卡顿率,如果缓存一直保持的低位,卡顿率则会明显提高。如何平衡低时延和卡顿率之间的关系,是我们需要重点考量的。以下是我们提出的是一个追帧简易模型,以一个参数进行举例:

在这里插入图片描述

1.当缓冲区时长大于5s时,进行1.1倍加速。

2.当缓冲区时长大于2s时,进行1.05倍加速。

3.当缓冲区时长小于等于1s时,正常速度播放。

4.对卡顿进行统计,如果一定时间内,比如3分钟内,卡顿了5次,进行线路切换。

三.总结

经过anyRTC大量的测试和线上真实环境运行,可以验证基于追帧模型的播放器可以在卡顿率和低时延上找到一个相对平衡点,有效的提升了用户的体验。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1140264.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言编写图形化界面-创建按钮-为其指定样式

文章目录 前置章节指定窗口样式给按钮加边框扁平化按钮复选框样式按钮自动复选框 单选按钮三态按钮自动三态按钮 默认按钮样式(对话框Enter键) 设置按钮位置和大小封装函数 前置章节 开始之前,需要学习以下章节: 创建窗口 窗口过…

10G传输分析仪SDH表TFN D450S参数详情

D450S 10G SDH系列 SDH/SONET传输测试模块 D450S系列SDH/SPNET传输测试模块是TFN模块化测试产品中的一款。D450S系列可配置在FT100测试平台上,实现广泛的PDH/DSn和SDH/SONET的测试功能,为城域网提供综合的测试方案,是高性价比的网络测试产品…

500内部服务器错误很常见,但解决方法也很常见

500内部服务器错误是一个非常通用的HTTP状态代码,这意味着网站的服务器出现了问题,但服务器无法更具体地说明具体问题是什么。 HTTP 500内部服务器错误的原因 大多数情况下,当页面或网站的编程出现问题时,就会出现此错误,但问题肯定在你这边。这些问题可能是由浏览器中的…

Linux系统之file命令的基本使用

Linux系统之file命令的基本使用 一、file命令介绍1.1 Linux简介1.2 file命令简介 二、file命令的使用帮助2.1 file命令的help帮助信息2.2 file命令的语法解释2.3 file命令的man手册 三、文件类型介绍四、file命令的基本使用4.1 查询file版本4.2 显示文件类型4.3 输出时不显示文…

selenium+python web自动化测试框架项目实战实例教程

自动化测试对程序的回归测试更方便。 由于回归测试的动作和用例是完全设计好的,测试期望的结果也是完全可以预料的,将回归测试自动运行... 可以运行更加繁琐的测试 自动化测试的一个明显好处就是可以在很短的时间内运行更多的测试。学习自动化测试最终目的是应用到实际项目中&…

基于springboot实现校友社交平台管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现校友社交平台管理系统演示 摘要 校友社交系统提供给用户一个校友社交信息管理的网站,最新的校友社交信息让用户及时了解校友社交动向,完成校友社交的同时,还能通过论坛中心进行互动更方便。本系统采用了B/S体系的结构,使用了java技…

C++模板类用作参数传递

前言 在模板类<>传递参数的一种实现。记不住&#xff0c;以此记录。 // dome.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // #define _CRT_SECURE_NO_WARNINGS #include <iostream> //#include "tools.h" #include <fu…

一种基于屏幕分辨率的RTSP主子码流切换的多路视频监控的播放方案

技术背景&#xff1a; 用户场景下&#xff0c;存在多个监控场所的100路监控摄像头&#xff0c;例如&#xff1a;大华、海康、宇视、杭州宇泛的枪机、球机、半球、NVR、DVR等不同类型的监控设备&#xff0c;通过视频监控平台进行设备的管理&#xff0c;通过RTSP拉流的方案管理监…

python自动化测试平台开发:自动化测试平台简介

一.测试平台简介 为什么需要测试平台 已有的开源测试平台不能满足需要&#xff0c;不要轻易造轮子 需要公司级别的定制 需要整合公司内部的多套平台 例子&#xff1a;DevOps平台、精准化测试平台、质量监控平台等等 常见的测试平台开发模式 大一统模式&#xff08;适合简单的…

鉴源实验室 | AUTOSAR E2E:车载通信的安全保障

作者 | 沈平 上海控安可信软件创新研究院汽车网络安全组 来源 | 鉴源实验室 社群 | 添加微信号“TICPShanghai”加入“上海控安51fusa安全社区” 随着汽车行业逐步走向电气化、智能化&#xff0c;车载系统的软件和硬件复杂度不断上升。如何确保这些复杂系统中的数据通讯安全和…

Arduino驱动热敏电阻传感器模块

目录 一、简介二、参数性能三、使用方法四、实验现象 一、简介 点击图片购买 热敏电阻传感器模块采用NTC热敏电阻传感器&#xff0c;灵敏度好&#xff0c;PH2.0接口即插即用&#xff0c;防反接&#xff0c;适用于各类开发板。 二、参数性能 电压5V接口3PIN防反接PH2.0杜邦线尺…

BigDecimal应用——计算费用场景中用到Integer,Double,BigDecimal三种类型出现的意外情况 结合BigDecimal源码分析

引出 在一个计算费用的场景中&#xff0c;用到了Integer&#xff0c;Double&#xff0c;BigDecimal三种类型&#xff0c;在转换为bigdecimal的时候遇到的问题&#xff0c;结合源码进行了分析。 1.在new bigdecimal的时候&#xff0c;最好传入的是字符串&#xff1b;2.double类…

Java集合框架:List、Set、Map类型及泛型详解

文章目录 &#x1f4d5;我是廖志伟&#xff0c;一名Java开发工程师、Java领域优质创作者、CSDN博客专家、51CTO专家博主、阿里云专家博主、清华大学出版社签约作者、产品软文创造者、技术文章评审老师、问卷调查设计师、个人社区创始人、开源项目贡献者。&#x1f30e;跑过十五…

干货!BIM高性能3D Web轻量化引擎——HOOPS Communicator!

HOOPS Communicator是一款简单而强大的工业级高性能3D Web可视化开发包&#xff0c;专注于Web端工程图形渲染。采用了先进的流式加载方式&#xff0c;并支持服务端和客户端渲染&#xff0c;是可以在云端进行部署和无缝集成的新技术平台。灵活且易于部署&#xff0c;可在以工程为…

你绝对不知道的接口加密解决方案:Python的各种加密实现

在现代软件开发中&#xff0c;接口测试已经成为了不可或缺的一部分。随着互联网的普及&#xff0c;越来越多的应用程序都采用了接口作为数据传输的方式。接口测试的目的是确保接口的正确性、稳定性和安全性&#xff0c;从而保障系统的正常运行。 在接口测试中&#xff0c;加密…

InterfaceWave 架构图

场景 正在开发一个Web应用&#xff0c;接口中很多重复逻辑&#xff08;重复逻辑已经被抽象&#xff09;&#xff0c;我使用一个Adapter适配器&#xff0c;就可以自己生成接口&#xff0c;不用再一个一个C S D 写重复逻辑&#xff0c;我只需要在配置文件中配置&#xff0c;接口…

软件测试外包干了4年,感觉废了...

​先说一下自己的情况&#xff0c;大专生&#xff0c;18年通过校招进入湖南某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测…

Nokogiri库和OpenURI库使用HTTP做一个爬虫

Nokogiri和OpenURI是两个常用的Ruby库&#xff0c;用于编写爬虫程序。它们的主要功能如下&#xff1a; 1、Nokogiri&#xff1a;Nokogiri是一个强大的HTML和XML解析库&#xff0c;可以用于解析网页内容。它提供了一组简单易用的API&#xff0c;可以方便地遍历和操作HTML或XML文…

对遗留系统的处理——(二)具体方法

对于遗留系统的分析和评价&#xff0c;具体方法是按照业务评价分值和技术水平分值的情况&#xff0c;把评价结果分为4种类型&#xff0c;如下图所示。 &#xff08;1&#xff09;改造 &#xff08;2&#xff09;继承 &#xff08;3&#xff09;淘汰 &#xff08;4&#xff09;集…

如何 通过使用优先级提示,来控制所有网页资源加载顺序

当你打开浏览器的网络标签时&#xff0c;你会看到大量的活动。资源正在下载&#xff0c;信息正在提交&#xff0c;事件正在记录&#xff0c;等等。 由于有太多的活动&#xff0c;有效地管理这些流量的优先级变得至关重要。带宽争用是真实存在的&#xff0c;当所有请求同时触发时…