视频编解码的比喻

随着工作业务的开展,对视频编解码的理解更加深入了一些,记录一些心得体会,以便后面回味。

某天突然有个好的想法略过心头,可以形象的向别人介绍视频编码和解码。

 

1.编解码像一场考试,编码就像做主观题,解码就像做客观题。

  编码可以类比为写作文:优秀的学生(学霸)可以用短小精炼的语音,生动形象地描述一个故事,大体故事细节(人物对话、面部表情眼神交流)都叙述清楚了;而普通的学生(学渣)则要用啰嗦、冗余、平凡的文字来表达一个故事,但是故事中的很多细节漏掉了!

    即,优秀学生(优秀的编码器)用较少的文字语言(比特数据)来表达了一个故事(图形),而平庸学生(一般的编码器)用大量的文字(比特数据)来表达一个故事(图形)。如果对比过不同的编码器,你就会发现同样的编码图像质量,有的编码器需要用较高的码率才行,如果强行将目标码率设小了会出现马赛克;而有的编码器(像x264)用较小的码率就可以实现较高的图形质量。

  解码可以类比为做选择题,这些题目都有固定的答案,(不同的解码器厂商)必须按照某个标准(h264的官方文档)去解码。

2.h264官方文档是个解码标准,规定了解码协议,不是编码标准。

  编码器厂商需要按照解码协议尽情发挥,使自家编码器输出的数据能够被解码。因此,编码考验各个厂商的人力物力投入,体现了其技术水平。

3.软硬件编码器特点比较。

  编码过程就是一个海量运算的过程。硬件编码器相比软件编码器,最大特点就是一个字——快!因为其将大量算法硬件化。软件编码器也有其特点——可以快速迭代升级。

  对于其他行业的人来说,可能没有“快”的概念。这个快到底有多快?

  拿笔者所服务的厂商所设计的soc来说,使用hw来编码一帧1080p图像,需要10-15ms,然而,编码同样一帧yuv图像,使用6代i5处理器,使用大名鼎鼎的x264,需要500ms。因此如果进行录像,使用硬件基本绰绰有余,而使用软件编码,可能导致录制出的文件帧率较低,出现卡顿现象。

4.软硬件编码器有哪些?

  软编:x264和OpenH264,前者应用最为广泛,支持的编码特性最多,由分布于全球的视频编码领域专家所维护;后者由cisco公司开源给外界使用,特性较少,编码速度也一般。

  硬编:分成两类,一类专业的编码器厂商,另外一类搞通用soc的厂商。

    后者,会集成一个硬件编码IP到处理器中,因为再外挂一个专业的编码器对下游方案商来说,成本有点高,所以主控厂商,会自行设计这个专业模块以集成到自家处理器中。如桌面端的intel和amd,移动端的qcom,hisilicon,mtk,unisoc,编解码器不是其核心卖点,其卖点是通用处理器或者基带,因此编码性能可能做的比较一般(intel的qsv编解码器,测试效果很不错,应该是花了不少人力资源去做,毕竟多媒体业务是个强需求)。

    前者,所设计的soc以编解码器为核心,可以说是买编码器送ap,例如通常把编解码性能做的非常强悍(核心卖点),但是使用的处理器架构可能比较low,例如使用arm9、arm11这些上一代的处理器架构,因为客户对cpu运算需求较少,核心需求就是编解码。近几年来许多主控厂商也将自己的架构进行更新换代,例如一路跟随arm的节奏走,使用cortexA7,A9,A15,A72...等等,以满足下游客户对cpu运算的增长需求(可能跑一些AI算法)。这里面要着重提几家,以TI(德州仪器),Ambarella(安霸),Hisilicon(海思)为代表的主流老中青三代,以及以Allwinner(全志)、Novatek(联咏)为代表的业余玩家。其中TI的编解码这块基本退出中国市场,安霸在早几年,在中国业务开展的非常之宽,大部分行车记录仪和安防上基本用它的方案,其编码质量高并且码率小,但是这几年其在编码市场上在走下坡路,其大客户GoPro现在出的产品就不用它的编码器了;然而,市场是多变的,偷点懒就可能被竞争对手超过,目前,海思占据着安防监控领域大部分份额!海思算是后起之秀,从2004年做到现在的2020年,一步一步变成了市场的Num1。其他几个厂家,像全志科技,就是靠视频编解码(平板电脑)起家的,编解码性能做的还可以,但其cpu架构使用万年不变的A7就有点跟不上时代潮流了(后面出的各种主控又换成了A53),毕竟公司小人力资源投入有限,使用熟悉的架构风险相对较小。联咏为台湾企业,编解码做的还行,但还没拿过其样机进行测试。

 

好啦,随心而发,先总结到这!后面空了再开一些专栏来介绍编码和解码原理。

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


一年前写了一个demo,用于生成几种标准的波形,如正弦波、方波、三角波。之前写的只有这几个功能:波形/通道/时长/频率的控制选择,这几天抽了些时间又加了增益控制功能。为了避免东西丢失或意外删除,特上传
wav文件格式作为一种常用的多媒体音频文件格式,其由MS在1991年8月在Windows 3.1上推出,文件扩展名为WAV,是WaveFom的简写。通常存储未压缩的pcm数据,也可存储压缩的pcm数据
mpeg2ts文件格式中有pcr和pts的概念,其代码含义如下: PCR(Program Clock Reference)——指示系统时钟本身的瞬时值的时间标签称为节目参考时钟标签(PCR)。 PTS
我的月经贴博客该更新了!!!已经有许多博文需要补了! 去年开始的jpeg解码项目,中间停止更新了大半年时间,上个月想起这事还没完工,就又做了更多兼容性和性能上的改进,目前终于接近尾声了。有需要参考的可
花了两天时间做了个h264裸流nal类型和frame类型检测的工具,已上传至github,有需要的自行下载(其中包含构建出来的可执行文件exe)。 1.NAL类型检测 nal类型检测非常容易,对照下表
随着工作业务的开展,对视频编解码的理解更加深入了一些,记录一些心得体会,以便后面回味。 某天突然有个好的想法略过心头,可以形象的向别人介绍视频编码和解码。 1.编解码像一场考试,编码就像做主观题,解码
承接昨天写的《JPEG软解码实现介绍》,今天介绍其使用方法和一些细节说明。 1.仓库下已经包含了几个jpeg文件,以方便直接校验。 2.使用命令分为两种模式。 一种是直接解码为yuv文件,另外一种是解
x264编码器,提供了两个demo来验证编码功能:一个是大而全的x264.c,另外一个是简洁版的example.c。 其中,前者demo,可以配置很多编码参数,但太冗长繁杂,对初学者不太友好。 后者d
本博文为概览性介绍。后面有空了再分几篇博文分别介绍所用到的技术细节。 1.编解码目标 编码和解码是个逆过程。jpeg编码的目的在于图形去冗余,进行数据压缩,解码的目的在于还原图像,使能够进行预览。 2
今天使用公司开发手机,调研一下当下很火的抖音客户端,其使用的视频编码类型。 在调研前,有个初步判断: 1.从抖音服务器推送到客户端的视频流要么是avc码流,要么是hevc码流(具体要视平台解码硬件支持
最近对抖音有点上瘾,经常看到这样的视频列表: 由于抖音平台的限制,用户最多只能上传60s的视频,因此分段为3个视频。而在视频列表的缩略图模式下,三个视频的封面恰好组合成一张图像。这种方式比较符合审美标
自己在学习h264的路上,欢迎讨论交流。 前段时间研究JM出品的h264编码器,代码实在看不下去,因此换了个角度来研究诸多算法——逆向方式(解码),本系列文章记录一些遇到的东西和思考。 1. JM介绍
h264裸码流,根据nalu_header可以知道类型,例如该帧是I帧,P帧/B帧。 例如,常见的0x65代表I帧,0x41代表非关键帧,即P帧或B帧,但是只根据nalu_header是无法区分P帧和