草庐IT

全面解析视频编解码:原理、策略、实现

ToDesk企业安全远控 2023-07-15 原文

远程桌面,本质就是将桌面进行连续截屏、编码压缩,经网络传输后,再解码还原成画面的过程。可见编解码技术在其中扮演了举足轻重的作用。

继上一篇介绍了远程桌面的五大核心指标后,本篇我们将揭秘高质量远程桌面的三大核心技术之一——视频编解码技术

目录

什么是视频编解码?

为什么需要更强的视频编解码?

1. 编解码更快,端到端延时更低

2. 压缩率更高,更省带宽

3. 鲁棒性更强,无惧网络波动

编解码研发,打造强劲核心

高效算法消除冗余信息

灵活参考帧技术

桌面内容编码

GPU硬件加速


什么是视频编解码?

视频编解码是对图像数据进行压缩或者解压缩的过程。远程桌面的画面传输好比是把一辆汽车在上海拆成零件,分装进箱子里运到北京,再重新组装起来。视频编码和解码就是这个过程中“拆”和“装”两个关键环节,可见其复杂和重要性。

编码包括采样、编码、压缩三个步骤。采样就是在视频流中截取画面数据,编码对这些画面数据进行处理,再压缩成更小的数据包以便传输。

解码则是编码的逆向过程:接收端把收到的数据包打开,重新还原成画面,再把画面根据顺序逐帧排列形成视频流。

为什么需要更强的视频编解码?

高效的视频编解码可以使编解码速度更快、把数据包压缩得更小。在更低的资源占用下,带来高清流畅的远程体验。

1. 编解码更快,端到端延时更低

影响用户真实体验的‍端到端延‍‍时,包括了网络传输延时和编解码延时。当端到端延时低至40ms时,网络传输延时通常不超过10ms,此时视频编解码就成了优化用户体验的关键。

相较于传统的编解码技术,ToDesk可以将处理延时降低至最低8ms以下,带来几乎无感的用户体验。

2. 压缩率更高,更省带宽

更好的编码算法能够提高压缩率,用更少的带宽资源传输更高分辨率和帧率的画面。

3. 鲁棒性更强,无惧网络波动

鲁棒性就是系统的韧性。优秀的视频编解码不但要快,还要稳,在遇到网络波动时,像汽车避震系统一样把冲击化解掉,维持画面的流畅稳定。

ToDesk在编解码中采用了灵活参考帧技术,网络丢包达到5%也能轻松化解。

十年编解码研发积累,打造强劲核心

ToDesk核心团队有超过十年的视频编解码研发经验,算法和硬件优化双管齐下、深度优化,打造了专为远程桌面而生的高效编解码器。

高效算法消除冗余信息

空间冗余指的是静态画面中像素间的相同性造成的冗余。ToDesk的视频编码器采用静态场景优化策略,用智能图像算法合并处理整片的同色像素点。

经合并之后,需处理的数据量大幅减少,从而缩短处理时间并降低带宽占用。

时间冗余指的是动态画面之间的相关性造成的冗余。一秒的60FPS视频包含60帧静态画面,相邻画面之间的变动其实非常微小。

只传输有变动的区域,可以大幅减少传输数据量。

我们将一系列画面分为独立帧(称作I帧)预测帧(称作P帧)。I帧会传输所有信息,可以解码出完整画面;P帧只传输前后画面之间的差别,需要参考前一帧画面来拼出完整画面,但数据量只有I帧的几百分之一。

一个I帧和多个P帧就构成了一组连续画面。就像是火车,I帧是车头,P帧都是接在车头后面的多节车厢。ToDesk通过图像算法优化,可以让一个I帧拖更多P帧,进一步降低5ms编码延时。

灵活参考帧技术

虽然这种环环相扣的传输方式可以大幅提升压缩率,但也需要预防网络抖动和丢包带来的数据丢失。否则如下图所示,序列中的某一帧丢失,后续的P帧就像脱节的车厢,无法解码。

ToDesk基于智能图像算法开发了“灵活参考帧”技术,通过AI算法推测图像之间的相关性,让P帧可以参考之前的多张画面进行解码。即使网络丢包率达到5%,也能维持画面连贯流畅。

桌面内容编码

针对文字工作、图片显示、3D图形等不同桌面内容,ToDesk均采用了针对性的特殊编码,进一步降低输出码率,静止状态下低于50kbps,正常办公时低于200kbps。

桌面内容编码降低了ToDesk的带宽占用,在各种网络环境下都能提供流畅稳定的远程体验。

GPU硬件加速

除了算法优化,ToDesk更进一步,深入计算架构挖掘硬件性能,用GPU提升编码效率,在提升速度的同时,还释放了CPU资源,让电脑运行更顺畅。

CPU计算单元较少,但每个单元的算力更强,适合处理步骤严密关联、逻辑复杂的任务。GPU则恰恰相反,适合处理大量的重复计算。视频编解码的算法独立、运算量大,就非常适合GPU。

知易行难,不同的计算架构就像是不同的语言,需要经过复杂的转换才能顺畅运行。

ToDesk 为GPU量身打造了并行编解码架构,充分发挥硬件潜力,把编码延时降低到8ms以下。并且运用了采集直通技术——GPU直接从显存里获取图像信息,无需CPU介入,采集延时降低到5ms以下。


除了强大的视频编解码能力是远程桌面的核心基础外,影响实际体验的网络质量也同样举足轻重。下一篇我们将聚焦网络传输,揭秘Zuler OTT SD-WAN如何为您的远控体验保驾护航。

有关全面解析视频编解码:原理、策略、实现的更多相关文章

  1. Ruby 解析字符串 - 2

    我有一个字符串input="maybe(thisis|thatwas)some((nice|ugly)(day|night)|(strange(weather|time)))"Ruby中解析该字符串的最佳方法是什么?我的意思是脚本应该能够像这样构建句子:maybethisissomeuglynightmaybethatwassomenicenightmaybethiswassomestrangetime等等,你明白了......我应该一个字符一个字符地读取字符串并构建一个带有堆栈的状态机来存储括号值以供以后计算,还是有更好的方法?也许为此目的准备了一个开箱即用的库?

  2. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  3. ruby - 用逗号、双引号和编码解析 csv - 2

    我正在使用ruby​​1.9解析以下带有MacRoman字符的csv文件#encoding:ISO-8859-1#csv_parse.csvName,main-dialogue"Marceu","Giveittohimóhe,hiswife."我做了以下解析。require'csv'input_string=File.read("../csv_parse.rb").force_encoding("ISO-8859-1").encode("UTF-8")#=>"Name,main-dialogue\r\n\"Marceu\",\"Giveittohim\x97he,hiswife.\"\

  4. ruby - 如何根据特征实现 FactoryGirl 的条件行为 - 2

    我有一个用户工厂。我希望默认情况下确认用户。但是鉴于unconfirmed特征,我不希望它们被确认。虽然我有一个基于实现细节而不是抽象的工作实现,但我想知道如何正确地做到这一点。factory:userdoafter(:create)do|user,evaluator|#unwantedimplementationdetailshereunlessFactoryGirl.factories[:user].defined_traits.map(&:name).include?(:unconfirmed)user.confirm!endendtrait:unconfirmeddoenden

  5. ruby-on-rails - 我更新了 ruby​​ gems,现在到处都收到解析树错误和弃用警告! - 2

    简而言之错误:NOTE:Gem::SourceIndex#add_specisdeprecated,useSpecification.add_spec.Itwillberemovedonorafter2011-11-01.Gem::SourceIndex#add_speccalledfrom/opt/local/lib/ruby/site_ruby/1.8/rubygems/source_index.rb:91./opt/local/lib/ruby/gems/1.8/gems/rails-2.3.8/lib/rails/gem_dependency.rb:275:in`==':und

  6. 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具 - 2

    无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD

  7. 华为OD机试用Python实现 -【明明的随机数】 2023Q1A - 2

    华为OD机试题本篇题目:明明的随机数题目输入描述输出描述:示例1输入输出说明代码编写思路最近更新的博客华为od2023|什么是华为od,od薪资待遇,od机试题清单华为OD机试真题大全,用Python解华为机试题|机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为o

  8. 基于C#实现简易绘图工具【100010177】 - 2

    C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.

  9. MIMO-OFDM无线通信技术及MATLAB实现(1)无线信道:传播和衰落 - 2

     MIMO技术的优缺点优点通过下面三个增益来总体概括:阵列增益。阵列增益是指由于接收机通过对接收信号的相干合并而活得的平均SNR的提高。在发射机不知道信道信息的情况下,MIMO系统可以获得的阵列增益与接收天线数成正比复用增益。在采用空间复用方案的MIMO系统中,可以获得复用增益,即信道容量成倍增加。信道容量的增加与min(Nt,Nr)成正比分集增益。在采用空间分集方案的MIMO系统中,可以获得分集增益,即可靠性性能的改善。分集增益用独立衰落支路数来描述,即分集指数。在使用了空时编码的MIMO系统中,由于接收天线或发射天线之间的间距较远,可认为它们各自的大尺度衰落是相互独立的,因此分布式MIMO

  10. 动漫制作技巧如何制作动漫视频 - 2

    动漫制作技巧是很多新人想了解的问题,今天小编就来解答与大家分享一下动漫制作流程,为了帮助有兴趣的同学理解,大多数人会选择动漫培训机构,那么今天小编就带大家来看看动漫制作要掌握哪些技巧?一、动漫作品首先完成草图设计和原型制作。设计草图要有目的、有对象、有步骤、要形象、要简单、符合实际。设计图要一致性,以保证制作的顺利进行。二、原型制作是根据设计图纸和制作材料,可以是手绘也可以是3d软件创建。在此步骤中,要注意的问题是色彩和平面布局。三、动漫制作制作完成后,加工成型。完成不同的表现形式后,就要对设计稿进行加工处理,使加工的难易度降低,并得到一些基本准确的概念,以便于后续的大样、准确的尺寸制定。四、

随机推荐