基础视频编解码技术解析
本文正在参加「金石计划 . 瓜分6万现金大奖」
前言
学习视频编解码需要有一些基础的概念,先了解这些基础的概念,才能更好的了解整个视频编解码的过程,只有了解了编解码的整个过程,才能知道如何去开发,如何实现某一步的功能,它是一个很庞大的体系,所以涉及的一些基础会比较多,高级的做法还会涉及openGL去对视频做处理,所以了解这些基础的理论能更好的进入这个领域。我个人也是自学的,所以有说得不对的地方,希望能在评论区指正。
色彩空间
我们常说的RGB和YUV都是色彩空间中的一种。
RGB就是我们常用到的光的三原色模型(红绿蓝),一般的图片都是RGB,简单来说3种原色通过不同的比例组成不同的颜色。而RGB色彩空间又会细分成不同的色彩空间,比如sRGB、Adobe RGB等,他们所包含的颜色范围不同,这又称为色域。
这些在生活中都有运用到的,比如显示器支持不同的色域,总之这不是这篇文章的重点,只需要简单理解RGB是什么以及我们的图片往往都是使用的RGB。
YUV(也称YCbCr)用于编码和存储更相对于RGB更好,所以一般会用在视频。YUV涉及到HVS(人类视觉系统对色彩空间的感知能力),简单来说就是我这个颜色的信息有这么多,你人是接收不完的,只能接收一部分,那我就把信息弄成人能接收的那部分。
这里主要讲YUV,YUV分为3个数值,Y表示亮度,U表示色调,V表示饱和度,一般Y比较重要,有Y分量就能 显示出图片,不过是黑白。根据采样不同YUV又分为YUV 4:4:4,YUV 4:2:2和YUV 4:2:0。一般我我们的手机摄像头的采样都是使用YUV420,而YUV420又根据格式分为NV12和YU12,简单来说他们都是420的采样,但是数据的排布不同,比如我去网上找的图
YU12中放入Y分量,再放入U分量,最后放入V分量
NV12中先放入Y分量,然后U分量和V分量交叉放入
当然除了这两种之外还有YV12和NV21,这里就不扩展了,也是差不多的意思。那在现实中是如何体现不同的?拿Android来举例,虽然摄像头采集都用的YUV420,但是他不同的摄像头都是用的不同的硬件厂商,所以最终会出现的格式也会不同,而Android的解码器MediaCoder是用的NV12(没记错的话),所以在判断数据是YU12的情况下需要转成NV12(这个是可以互转的)
最后说说YUV和RGB的不同,YUV需要存储的数据小于RGB。YUV和RGB可以通过公式进行转换:
Y = 0.299R + 0.587G + 0.114B
U = -0.147R - 0.289G + 0.436B = 0.492*(B-Y)
V = 0.615R - 0.515G - 0.100B = 0.877(R-Y)
R = Y + 1.140V
G = Y - 0.394U - 0.581V
B = Y + 2.032U
帧
视频的播放简单来理解就是每隔多少时间显示一张图片,每张图片都相当于一个帧。当然真实的概念并不完全是这样的,只是这样想会比较容易理解。
1秒播放30张图片我们称为1秒30帧,1秒播放60张图片我我们称为1秒60帧,也可以称为60fps。结合生活,我们平常玩游戏觉得卡顿是因为前一段时间的帧率平稳,但是突然帧率变低,所以导致我们感官反馈到卡顿。
视频的帧又分为I帧,P帧和B帧,这当然是很重要的一个概念,为什么要分为3种不同的帧呢?简单来说是为了压缩,当理解每种帧的含义之后,就能知道为什么和这样设计。
I帧
I帧又称为关键帧,它无需参考其它帧,由自己生成,对帧内的数据进行压缩后生成,自己就能显示出图像。
P帧
P帧会向前参考I帧生成,所以没有I帧的情况下仅有P帧的情况下是无法显示图像。
B帧
B帧会向前参考I帧,向后参考B帧生成,所以没有I帧和P帧的情况下B帧无法显示图像。
这是他们的一个大致区别,可能刚这样看还理解不了,没关系,等到下面讲解视频的编码流程的时候就能理解了。
GOP和IDR
这是和帧相关的概念,但不是十分重要的,所以简单了解就行。
GOP全称Group of picture即图像组,每两个I帧之间是一个GOP,所以GOP是包含一个I帧和多个P帧和B帧。那这个概念会在什么地方体现出用处呢?直播,直播的时候,数据传输,你拿到一个GOP后进行播放,如果不是一个GOP,比如你刚开始打开直播的时候是推了P帧给你,你这时候没有I帧,只拿P帧是显示不出完整图片的。你也可以简单理解成I帧之后的多个P帧和B帧依赖于当前I帧,但是他们并不依赖于其它I帧,所以他们形成了一个组。
IDR是一个和刷新相关的概念,它的翻译是立即刷新图像,所以它一定是一个I帧。举个例子(我也不知道这个例子对不对,没涉及过直播相关的),你看直播的时候卡顿了,但是卡顿好的之后会有个跳帧的效果,不会接着卡顿的地方继续播放,其实就是接收到了一个IDR,会把前面没有播放的帧丢掉,直接播放这个I帧。
PTS和DTS
这个也是和帧有关的,但它也和编解码过程有关,它们都是时间戳,PTS表示显示时间戳,它告诉视频要按照这个PTS的顺序去播放,DTS表示解码时间戳,它告诉文件要按照这个DTS的顺序去存储。
这个下面讲编解码流程的时候可能会更容易理解,这里简单来说就是我们一般视频都是一I B B B P 这种帧的顺序去播放,但是编码之后存储的是 I P B B B 这样的顺序。
码率
这是一个数据传输的指标,码率又叫作比特率,即数据传输时单位时间传送的数据位数,一般用kbps、Mbps表示。比特率越高,每秒传送数据就越多,画质就越清晰。
说到Mbps,很多人就知道是什么了,没错,就是我们的宽度,多少兆宽度就是多少Mbps,经过换算8Mbps = 1MB/s,但是这是理想的情况,加上损耗,大概会10Mbps = 1MB/s,看到这个相信大家就都熟悉了,为什么你家网速在电信拉的是100兆,下载的时候却只有10兆每秒,这就是一个换算过程。
那为什么比特率越高,影响画质呢,这其实是和视频文件大小有关,比如你视频文件越大,帧数越高,分辨率越高,那你的视频文件就越大,所以你需要更高的比特率来传输。那如果文件大我比特率低会怎样?会卡顿,你播放这一帧的时候下一帧还没下好,这不就是你平时怒喷网速的原因吗?
视频流
这个对于基础来说也不是主要的概念,简单了解一下就行。一般像视频这种比较大的文件都是流文件,拿图片来做对比就能看出比较明显的差别。视频和图片在磁盘中存储的文件都是压缩过的文件.mp4 ,.png这些。但是图片能变成位图(原始图片)全部放到内存中,但是视频可以吗?当然不行,你把整个视频放到内存中那内存不炸掉,有的人说,一个视频只有几十MB,应该Hold得住啊,你那个是压缩过后的大小,实际的大小后面会说,但是内存是装不下的,所以视频的播放和传输需要用到流的形式。
视频编解码
进入正题了,理解上面的概念会对编解码的过程更容易理解。上面也说了,我们平时存储在本地的视频,是压缩过的。那如果视频不压缩,原始的数据会有多大呢?通过一个计算过程去巩固上面的基础知识。
比如我们视频的分辨率是1920 * 1080,视频是60fps,采样我就算用YUV420,这个视频的时长100秒,取个整数好计算。
我们假设未压缩的情况,先计算1帧的大小(YUV420占用1.5个字节)
1920 * 1080 * 1.5 = 3110400 = 2.96MB ,光一帧就2.96MB,一秒就是177.6MB,整个视频就是17.3GB
你家网速100兆10MB/S,下1秒钟的视频要17秒。压缩过后的就是秒下好,这就是视频为什么要编码。
视频编解码流程
这是我在网上随便找的图,视频的编解码流程大概就是这样子,假如我们有个mp4文件,mp4文件其实就是一个压缩包,你可以把它的后缀改成zip然后解压,你就能看到里面的编码后的视频文件和编码后的音频文件(可以把编码简单理解成压缩)。
我们的设备在播放mp4文件的时候,会拿到里面的编码后的视频文件和编码后的音频文件,分别用视频解码器和音频解码器进行解码(你可以先简单理解解码器是一个硬件设备),解码后也都是流文件,再进行音视频同步播放,一般是视频配合音频实现同步,这就是视频播放的一个流程。
这个编码后的视频文件的格式一般是H246,H265,MJPG等,编码后的音频格式一般是AAC,MP3等。这时就有人问了,我没有mp4文件,我只有H264文件,能直接播放视频吗?当然能,没声音而已,你可以解压mp4文件,拿里面的.h264文件丢到播放器看看能不能播放。
这个流程没画出前面的部分,比如我们录像的时候,也是视频和音频分开录,由视频编码器和音频编码器分别编码成h264和aac等,然后再进行打包成mp4,avi等格式的文件。
视频编码文件
我这边因为内容比较多,主要只讲视频,音频的话以后单独写一篇文章。
是这样的,我们做任何东西都有一套标准,而视频压缩也是有标准,那这个标准是谁来定的呢,肯定是某某组织定的,谁做得快,谁牛逼,谁来定。所以有两个组织定义了视频编码的规则,一个叫ISO(国际标准组织),另一个叫ITU(国际电传视讯联盟),他们两个比较牛逼,所以他们说得算。
用这两个组织的规范去压缩的视频得到的格式是不同的,解码时也要用相应的规范去解码。ISO主打的是MPEG系列,ITU主打的是H.26X系列。因为我们现实中一般用到H.26X比较多,所以主要讲这个,目前用得比较广泛的是H264和H265,就是我们进行视频编码后会得到一个.h264或者.h265的文件。
h264又称为AVC,他们是同一个东西,h265又称为HEVC。
视频编码流程
视频编码流程指的是如何从原视频数据变成H265文件(编码后文件)的过程。
这个过程中简单分为帧内压缩和帧间压缩。而整个视频编码的核心步骤又分为预测、变化、量化和熵编码 ,这个过程会涉及到一些计算,直接通过它来理解视频编码过程会更为复杂,而先了解大概的视频编码的原理,再去详细的看这些过程,就会更容易看懂每一步做了什么。举个例子,比如“变化”这个过程(我网上随便找张图)
这个数据块做DCT前后的变化,这是会涉及到计算,如果没有视频编码的基础去看这些内容,我感觉意义不大,有了一定的基础再去看才是更好的做法。
那什么是基础,如何才能快速了解视频编码的过程,才是入门最重要的,这就要涉及到一个重要的概念:宏块
上面讲了这个过程中简单分为帧内压缩和帧间压缩,先讲帧内压缩,单独拿一帧来举例,它相当于一张图片,假如的尺寸是19201080,那它就是有19201080个像素,我们可以对它拆分成多个 n x n 的像素块。这个像素块就是宏块。这个过程可能不是很好理解,没关系,我用视频分析工具举例个例子
能看到视频被均分成很多块(因为这个工具比较旧没办法定位到I帧,所以先不用管图中显示的S的部分),而宏块又分为很多不同的子块,有4 x 4的,有 8 x 8 的,有 16 x 16的,所以一个视频被划分成多个不同的类型的宏块 ,可以在图中看到当前这一帧,某个类型的宏块的数量,比如这里的16 x 16就有2486个。
这里可以简单扩展一下,划分的越大,压缩的效果就越好,比如16 x 16的效果好过8 x 8的,而我没记错的话,H264最大只能划分成16 x 16,而H265能划分到64 x 64。所以同一个视频,用H265编码出来的结果比H264占用的空间更小。
为什么宏块要划分成不同的类型,比如直接全部16 x 16不行吗?这个直接解释的话很难解释情况他的划分原理,但是我找到一张图,能让人一眼就看出为什么
那它是如何对一个宏块进行压缩的呢?
简单来说,相近的两个像素其实差别不大,宏块里面的像素差别都不是很大,所以它只会保留宏块里面第一行的像素,和第一列的像素,然后其它的像素都用这一行一列的像素去预测,而这个预测一共有9种方式。感觉用语言很难解释清楚,我又要借上面那位老哥的另一张图来说了。
这样也能很明显的看出,通过不同的预测方式,我们就能用很少的像素推出这个宏块的其它像素。如果你理解了这里的内容,那你应该就能知道视频压缩的过程是有损压缩还是无损压缩?
大概了解了帧内压缩,我们再讲讲帧间压缩。上面我们说视频帧分为I帧、P帧和B帧,I帧就是关键帧,I帧不会参考其它帧,所以它是会把这一帧全部划分成宏块。P帧就是相似度和I帧在90%以上(实际并不是90%,这个资料我还不敢确定,反正以上就是相似度超过多少),P帧有一部分是I帧的宏块运动后的结果,有一部分是新产生的宏块,所以P帧只保存了新的宏块和部分老宏块运动相关的数据,而B帧的压缩率更高,它完全运动相关的数据。
我上面那张图就是P这么, 看到上面有些宏块显示S,这个就是表示运动的宏块。比如我们也可以用工具来分析运动相关的情况
所以帧间的一个编码过程可以简单这样理解(实际肯定不会这样简单),第一帧肯定是I帧,编码后直接输出到文件,下一帧和I帧进行比较,如果相似度很低差别很大,那它就是I帧,继续输出到文件,如果相似度很高,超过多少以上,他就是B帧,B帧不会马上输出,可以简单理解放到一个缓冲区。如果相似度比较高,超过了多少以上,他就是P帧,P帧就会输出,P帧输出之后,B帧会对P帧进行参考,所以是一个双向预测,最后输出B帧。所以编码后的文件里面存的帧的顺序是IPBBB这样的,这个顺序就是DTS,而播放时会按照IBBBP的顺序去播,这个顺序就是PTS
总结
其实这个视频编码的相关的知识涉及的很多,特别是涉及到很多平常没接触过的概念,主要还是要把一些这个领域相关的概念先了解清楚,再去了解大致的一个流程,再去了解某一步操作相对详细的流程,再去看代码会好一点。
而且这个过程中最好是需要通过一些工具自己去分析,会更深刻,包括一些视频分析工具和ffmpeg,我这里因为是讲基础,所以没有举例用ffmpeg来操作,一般看视频参数,修改视频之类的,都能通过ffmpeg去实现,它的功能很强大。但是这一切还是首先需要理解这些概念,才能知道具体去怎么分析。
上一篇: Centos镜像国内最全下载地址
下一篇: ATT&CK实战系列——红队实战(一)
推荐阅读
-
编解码器的演变:Ali266 和下一代视频技术
-
非法篡改数据会破坏信息安全的哪些属性 - 机密性(保密性)是指不向未经授权的用户、实体或流程披露网络信息。也就是说,信息只能由授权用户使用。保密性是在可靠性和可用性基础上确保网络信息安全的重要手段。 (推荐学习:网络前端视频教程) 网络信息安全中的保密性是指根据给定的要求,信息不泄露给未经授权的个人、实体或进程,或提供给他们使用的特性,即杜绝有用信息泄露给未经授权的个人或实体,强调有用信息只被授权对象使用的特性。 常用的保密技术
-
反传销网8月30日发布:视频区块链里的骗子,币里的韭菜,杜子建骂人了!金融大V周召说区块链!——“一小帮骗子玩一大帮小白,被割韭菜,小白还轮流被割,割的就是你!” 什么区块链,统统是骗子 作者:周召(知乎金融领域大V,毕业于上海财经大学,目前任职上海某股权投资基金合伙人) 有人问我,区块链现在这么火,到底是不是骗局? 我的回答是: 是骗局。而且我并不是说数字货币是骗局,而是说所有搞区块链的都是骗局。 -01- 区块链是一种鸡肋技术 人类社会任何技术的发明应用,本质都是为了提高社会的生产效率。而所谓区块链技术本质不过是几种早已成熟的技术的大杂烩,冗余且十分低效,除了提高了洗钱和诈骗的效率以外,对人类社会的进步毫无贡献。 真正意义上的区块链得包含三个要素:分布式系统(包括记账和存储),无法篡改的数据结构,以及共识算法,三者互为基础和因果,就像三体世界一样。看上去挺让人不明觉厉的,而经过几年的瞎折腾,稍微懂点区块链的碰了几次壁后都已经渐渐明白区块链其实并没有什么卵用,区块链技术已经名存实亡,沦为了营销工具和传销组织的画皮。 因为符合上述定义的、以比特币为代表的原教旨区块链技术,是反效率的,从经济学角度来说,不但不是一种帕累托改进,甚至还可以说是一种帕累托倒退。 原教旨区块链技术的效率十分低下,因为要遍历所有节点,只能做非常轻量级的数据应用,一旦涉及到大量的数据传输与更新,区块链就瞎了。 一方面整条链交易速度会极慢,另一方面数据库容量极速膨胀,考虑到人手一份的存储机制,区块链其实是对存储资源和能源的一种极大的浪费。 这里还没有加上为了取得所谓的共识和挖矿消耗的巨大的能源,如果说区块链技术是屎,那么这波区块链投机浪潮可谓人类历史上最大规模的搅屎运动。 区块链也验证不了任何东西。 所谓的智能合约,即不智能,也非合约。我看有人还说,如果有了智能合约,就可以跟老板签一份放区块链上,如果明年销售业绩提升30%,就加薪10%,由于区块链不能篡改,不能抵赖,所以老板必须得执行,说得有板有眼,不懂行的愣一看,好像还真是那么回事。 但仔细一想,问题就来了。首先,在区块链上如何证明你真的达到了30%业绩提升?即便真的达到老板耍赖如何执行? 也就是说,如果区块链真这么厉害,要法院和仲裁干什么。 人类社会真正的符合成本效益原则的是代理制度。之前有人说要用区块链改造注册会计师行业,我不知道他准备怎么设计,我猜想他思路大概是这样的,首先肯定搞去中心化,让所有会计师到链上来,然后一个新人要成为注册会计师就要所有会计师同意并记录在链上。 那我就请问了,我每天上班累死累活,为什么还要花时间去验证一个跟我无关的的人的专业能力?最优做法当然是组织一个委员会,让专门的人来负责,这不就是现在注册会师协会干的事儿吗?区块链的逻辑相当于什么事情都要拿出来公投,这个绝对是扯淡的。 当然这么说都有点抬举区块链了,区块链技术本身根本没有判断是非能力,如果这么高级的人工智能,靠一个无脑分布式记账就能实现的话,我们早就进入共产主义社会了。 虽然EOS等数字货币采用了超级节点,通过再中心化的方式提高效率,有点行业协会的意思,是对区块链原教旨主义的一种修正,但是依然无法突破区块链技术最本质的局限性。有人说,私有链和联盟链是区块链技术的未来,也是扯淡,因为区块链技术没有未来。如果有,说明他是包装成区块链的伪区块链技术。 区块链所涉及的所有底层技术,不管是分布式数据库技术,加密技术,还是点对点传输技术等,基本都是早已存在没什么秘密可言的技术。 比特币系统最重要的特性是封闭性和自洽性,他验证不了任何系统自身以外产生的信息的真实性。 所谓系统自身产生的信息,就是数据库数据的变动信息,有价值的基本上有且只有交易信息。所以说比特币最初不过是中本聪一种炫技的产物,来证明自己对几种技术的掌握,你看我多牛逼,设计出了一个像三体一样的系统。因此,数字货币很有可能是区块链从始至终唯一的杀手应用。 比特币和区块链概念从诞生到今天已经快10年了,很多人说区块链技术在爆发的前夜,但这个前夜好像是不是有点过长了啊朋友,跟三体里的长夜有一拼啊。都说区块链技术像是90年代初的互联网,可是90年代初的互联网在十年发展后,已经出现了一大批伟大的公司,阿里巴巴在99年都成立了,区块链怎么除了币还是币呢? 正规的数字货币未来发展的形式无外乎几种,要么就是论坛币形式,或者类似股票的权益凭证等。问题是论坛币和股票之前,本来也都电子化了,区块链来了到底改变了什么呢? 所有想把TOKEN和应用场景结合起来的人最后都很痛苦,最后他们会发现区块链技术就是脱裤子放屁,自己辛苦搞半天,干嘛不自己作为中心关心门来收钱?最后这些人都产生了价值的虚无感,最终精神崩溃,只能发币疯狂收割韭菜,一边嘴里还说着我是个好人之类的奇怪的话。 因此,之前币圈链圈还泾渭分明,互相瞧不起,但这两年链圈逐渐坐不住了,想着是不是趁着泡沫没彻底破灭之前赶快收割一波,不然可能什么都捞不着了。 前段时间和一个名校毕业的链圈朋友瞎聊天,他说他们“致力于用区块链技术解决数字版权保护问题”,我就问他一个问题,你们如何保证你链的版权所有权声明是真实的,万一盗版者抢先一步把数据放在链上怎么办。他说他们的解决方案是连入国家数字版权保护中心的数据库进行验证…… 所以说区块链技术就是个鸡肋,研究到最后都会落入效率与真实性的黑洞,很多人一头扎进链圈后才发现,真正意义上的区块链技术,其实什么都干不了。 -02- 不是蠢就是坏的区块链媒体 空气币和区块链的造富神话,让区块链自媒体也开始迎风乱扭。一群群根本不知道区块链为何物的妖魔鬼怪纷纷进驻区块链自媒体战场,开始大放厥词胡编乱造。 任何东西,但凡只要和区块,链,分,分布式,记账,加密,验证,可追溯等等这些个关键词沾到哪怕一点点,这些所谓的区块链媒体人就会像狗闻到了屎了一样疯狂地把区块链概念往上套。 这让我想起曾经一度也是热闹非凡的物联网,我曾经去看过江苏一家号称要改变世界的“物联网”企业,过去一看是生产路由器的,我黑人问号脸,对方解释说没有路由器万物怎么互联,我觉得他说得好有道理,竟无言以对。 好,下面让我们进入奇葩共赏析时间,来看看区城链媒体经常有哪些危言耸听的奇谈怪论 区块链(分布式记账)的典型应用是*?? 正如前面所说,真正意义上的区块链分布式记账,不光包括“记”这个动作,还包括分布式存储和共识机制等。而*诞生远远早于区块链这个词的出现,勉强算是“分布式编辑”吧,就被很多区块链媒体拿来强行充当区块链技术应用的典范。 其实事实恰恰相反,*恰恰是去中心化失败的典范,现在如果没有精英和专业人士的编辑和维护,*早就没法看了。 区块链会促进社会分工?? 罗振宇好像就说过类似的话,虽然罗振宇说过很多没有逻辑的话,但这句话绝对是最没逻辑思维的。很多区块链自媒体也常常用这句话来忽悠老百姓,说分工代表效率提高社会进步,而区块链“无疑”会促进分工,他们的理由仅仅是分工和分布式记账都共用一个“分”字,就强行把他们扯到一起。 实际情况恰恰相反,区块链是逆分工的,区块链精神是号召所有人积极地参与到他不擅长也不想掺合的事情里面去。 区块链不能像上帝一样许诺他的子民死后上天国,只能给他们许诺你们是六度人脉中的第一级,我可以赚后面五级人的钱,你处于金字塔的顶端。
-
FPGA高端项目:基于FPGA的GS2971+GS2972架构SDI视频收发器+GTX 8b/10b编解码器SFP光口传输,提供两套项目源代码和技术支持
-
五轴坐标测量机 REVO 五轴联动扫描基础科学与技术(图片 + 视频)
-
入门讲解:Spring源代码探索系列" 1. Spring源码剖析导论 2. Spring容器基础操作实战 3. Spring核心容器组件详解 4. 详解Spring基础:XmlBeanFactory源码解析 5. 掌握关键技术:如何获取并处理Document 6. 精读细节:BeanDefinitions的解析与注册过程 7. 深度解析:bean标签在源码中的执行与注册路径
-
揭开BAT、头条、华为等大厂薪资与职级秘密!神级收入解析及晋升机制全透析\n一、福利抢先看\n- 领取阿里P10、腾讯T4、华为18级员工的真实薪资与待遇\n- 不容错过的Spring Boot&Spring Cloud基础教程,助你进阶\n- 华为最新Java开发规范1.5,掌握阿里巴巴编码标准\n二、内部揭秘\n- 揭秘各大厂的技术职级体系:薪级分布、股票期权详解\n- 晋升路上的挑战与评审规则,让你了解晋升难度及流程\n- 校招&社招程序员求职攻略:如何针对大厂需求进行自我提升\n三、紧跟行业动态\n- InfoQ团队直击行业内幕,刷新你对薪资情报的认知\n- 职位敏感信息虽受限,但我们仍在努力搜罗一手新鲜资讯,带给你最贴近现实的一手资料!
-
探索未来趋势:详细解析首个针对视频直播的『云原生与智能化技术实战指南』
-
详解视频推送与拉取:深入理解视频流技术的工作原理及涉及内容全面解析
-
解读OpenAI新推出的文字引导视频制作大模型技术——SORA深度解析