视频编码面试基础题

news2024/11/15 19:34:03

视频基础知识
RGB彩色原理:
RGB是指光学三原色红、绿和蓝,通过这3种的数值(0-255)改变可以组成其他颜色,全0时为黑色,全255时为白色。RGB是一种依赖于设备的颜色空间:不同设备对特定RGB值的检测和重现都不一样,因为颜色物质(荧光剂或者染料)和它们对红、绿和蓝的单独响应水平随着制造商的不同而不同,甚至是同样的设备不同的时间也不同。
RGB 工业显示器要求一幅彩色图像由分开的 R、G、B 信号组成,而电视显示器则需要混合信号输入,为了实现对这两种标准的兼容,NTSC(美国国家电视系统委员会)制定了 YIQ 颜色模型,它的主要优点是可以实现对彩色电视和黑白电视的兼容,即可以用黑白电视收看彩色电视信号。YUV 颜色模型则是在 YIQ 的基础上发展而来。
为什么需要YUV格式
YUV,是一种颜色编码方法。常使用在各个视频处理组件中。三个字母分别表示亮度信号Y和两个色差信号R-Y(即U)、B-Y(即V),作用是描述影像色彩及饱和度,用于指定像素的颜色。Y’UV的发明是由于彩色电视与黑白电视的过渡时期。黑白视频只有Y视频,也就是灰阶值。与我们熟知的RGB类似,YUV也是一种颜色编码方法,主要用于电视系统以及模拟视频领域,它将亮度信息(Y)与色彩信息(UV)分离,没有UV信息一样可以显示完整的图像,只不过是黑白的,这样的设计很好地解决了彩色电视机与黑白电视的兼容问题。并且,YUV不像RGB那样要求三个独立的视频信号同时传输,所以用YUV方式传送占用极少的频宽。
什么是像素
像素(Pixel):图像的最小单元,每个像素代表图像中的一个点,具有特定的颜色和亮度值。
分辨率、帧率、码率:
分辨率(Resolution):指图像中像素的密度,通常以宽度和高度来表示。较高的分辨率意味着图像具有更多的像素,因此可以显示更多的细节。
帧率:
视频其实就是一张张图片连续播放。那么就涉及到一个问题,一秒钟播放多少张图片?也就是一秒钟多少个数据帧,这个数字就是帧率。
码流:或者称为码率,只针对视频数据,单位时间内视频数据量大小,一般以秒为单位(KB/S)(码率是通过什么算法控制的 ?)
码率=视频数据大小/视频时间长度。
对于直播之类的计算,码流=视频传输数据量/传输时间。
在直播中,两种方式计算的码流应该是近似相等的,否则就会出现类似延时,卡顿等情况。
日常使用中,我目前见到的固定帧率的情况比较多,比如市面上一些智能摄像头之类的。
YUV数据存储格式区别:
YUV格式的两大类:平面(plannr)和紧凑(packed)。
对于planar的YUV格式,先连续存储所有像素点的Y,紧接着存储所有像素点的U,随是存储所有像素点的V,或者是先v后u
对于packed的YUV格式,每个像素点的Y,U,V是连续交替存储的。比如YUV420P 其中P表示紧凑,YUV420SP其中的SP表示“半紧凑”
为什么画面显示绿屏:
在进行视频解码的过程中,主要使用到ffmpeg的由YUV到RGB的转换。
YUV -> RGB 公式如下:
R = Y + 1.402 (V - 128)
G = Y - 0.34414 (U - 128)- 0.71414 (V - 128)
B = Y + 1.772 (U - 128)
在解码失败的时候 YUV分量的值会进行0填充,根据公式可以得到:
R = 1.402 (- 128)= -126.598
G = - 0.34414 (- 128)- 0.71414 (- 128)= 135.45984
B = 1.772 (- 128)= -126.228
由于RGB的取值范围为 [0 - 255],所以转换后的RGB最终值是:
R = 0
G = 135.45984
B = 0
由于只有Green的分量值有效,所以显示为绿屏。
H264 I P B帧的关系:
I帧:关键帧,intra picture
帧就是采取帧内压缩的视频帧,它可以单独被解码成一张完整的图片。那么如果某个视频都是I帧,那么一个I帧就是一个GOP。当然一般情况下都不会这样做。
IDR帧:Instantaneous Decoding Refresh
及时解码刷新。我一般称它为immediate refresh ,立刻刷新,IDR帧必须是一个I帧,但是I帧不一定是IDR帧,这个帧出现的时候,是告诉解码器,可以清除掉所有的参考帧,这是一个全新的序列,新的GOP已经开始。
P帧:Predictive Picture(预测编码图像帧)
P帧又称帧间预测编码帧,需要参考前面的I帧才能进行编码。表示的是当前帧画面与前一帧(前一帧可能是I帧也可能是P帧)的差别。解码时需要用之前缓存的画面叠加上本帧定义的差别,生成最终画面。与I帧相比,P帧通常占用更少的数据位,但不足是,由于P帧对前面的P和I参考帧有着复杂的依耐性,因此对传输错误非常敏感。
B帧:Bidirectionally predicted picture(双向预测编码图像帧)
B帧又称双向预测编码帧,也就是B帧记录的是本帧与前后帧的差别。也就是说要解码B帧,不仅要取得之前的缓存画面,还要解码之后的画面,通过前后画面的与本帧数据的叠加取得最终的画面。B帧压缩率高,但是对解码性能要求较高。
帧只需考虑本帧;P帧记录的是与前一帧的差别;B帧记录的是前一帧及后一帧的差别,能节约更多的空间,视频文件小了,但相对来说解码的时候就比较麻烦。因为在解码时,不仅要用之前缓存的画面,而且要知道下一个I或者P的画面,对于不支持B帧解码的播放器容易卡顿。
什么是GOP?抖音的GOP一般多大:
GOP是group of picture。相邻的两个I帧之间的所有帧,就是一个GOP。
GOP其实就是一个场景的意思,从一个场景切换到另一个场景肯定会出现新的I帧,GOP序列,抖音的GOP一般是固定值20帧,视频文件的GOP一般可以设置为200-800帧。
指出“1080p”的意义:
1080p 格式,是标准数字电视显示模式,数字1080则表示垂直方向有1080条水平扫描线。通常1080p的画面分辨率为1920×1080
影响视频清晰度的指标有哪些?
帧率 码率 分辨率 量化参数(压缩比)
预测编码的基本原理是什么:
预测编码是数据压缩理论的一个重要分支。根据离散信号之间存在一定相关性特点,利用前面的一个或多个信号对下一个信号进行预测,然后对实际值和预值的差(预测误差)进行编码。如果预测比较准确,那么误差信号就会很小,就可以用较少的码位进行编码,以达到数据压缩的目的。
视频质量评价:
PSNR:一个纯客观的评价图片质量的参数,但是峰值信噪比高不代表人眼看到的视频/图片质量好。PSNR计算方式:
在这里插入图片描述
SSIM(Structural Similarity):结构相似性,是一种衡量两幅图像相似度的指标。SSIM使用的两张图像中,一张为未经压缩的无失真图像,另一张为失真后的图像。这个方法考虑到了人眼的主观感受,运算时包含了均值比较,对比度比较和结构比较。
VMAF(视频多方法评估融合,Video Multimethod Assessment Fusion) :由 Netflix 推出的视频质量评价工具,用来解决传统指标不能反映多种场景、多种特征的视频情况。该指标是目前互联网视频主流的客观视频评价指标,适用于衡量大规模环境中流播视频质量的观感

后续待补充

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

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

相关文章

非阻塞IO:提高应用程序的效率与性能

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

[unity]lua热更新——个人复习笔记【侵删/有不足之处欢迎斧正】

一、AssetBundle AB包是特定于平台的资产压缩包,类似于压缩文件 相对于RESOURCES下的资源,AB包更加灵活轻量化,用于减小包体大小和热更新 可以在unity2019环境中直接下载Asset Bundle Browser 可以在其中设置关联 AB包生成的文件 AB包文件…

码垛工作站:食品生产企业的转型助推器

在当今高度自动化的工业生产中,码垛工作站的应用正逐渐成为一种趋势。某食品生产企业在面临市场竞争加剧、人工成本上升等多重压力下,决定引入码垛工作站,以期实现生产流程的升级与变革。 一、码垛工作站引入背景 该企业主要从事休闲食品的…

Github 2024-03-03 开源项目日报Top9

根据Github Trendings的统计,今日(2024-03-03统计)共有9个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量非开发语言项目4Rust项目1C项目1Jupyter Notebook项目1Python项目1Shell项目1 任天堂Switch模拟器yuzu&#x…

云计算市场,从追求“规模制胜”到走向“用户分化”

文|智能相对论 作者|叶远风 通常来说,价格战放到任何行业,都不是什么好事。 如今,作为曾经的前沿技术创新,云计算行业正在被迫走入价格战的阴霾当中,引发业界担忧。 ECS(云服务器)最高降36%…

559.n叉树的最大深度

这段代码是一个Java类Solution,其中包含一个公共方法maxDepth,用于计算一个二叉树的最大深度。这里的二叉树是一个特殊的数据结构,其中每个节点Node可能有一个或多个子节点(在这里被称为children)。下面是对代码的详细…

Manomotion 实现AR手势互动-解决手势无效的问题

之前就玩过 Manomotion ,现在有新需求,重新接入发现不能用了,不管什么办法,都识别不了手势,我记得当初是直接调用就可以的。 经过研究发现,新版本SDK改了写法。下边就写一下新版本的调用,并且实…

FRM模型十四:FRA估值

什么是FRA FRA(Forward rate agrreement)远期利率协议,是一种场外衍生品。FRA在0时刻确定,在未来时刻进行交易的协议。例如FRA3,6表示双方约定在3个月后以Rk的利率水平借款3个月。 应用场景:某公司未来3个月有融资需…

政安晨【示例演绎虚拟世界开发】(六):从制作一个对战小游戏开始(Cocos Creator 《击败老大》)(第三段)

在上一篇文章中,我们已经将游戏的场景基本搭建完毕,接下来我们就可以为游戏编写代码并实现相关的核心逻辑了。 政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 收录专栏: AI虚拟世界大讲堂 希望政安晨的博客能够对您有所裨益&a…

多层感知机 + 代码实现 - 动手学深度学习v2 | 李沐动手学深度学习课程笔记

感知机 感知机≈二分类问题 感知机和其他问题的对比 训练感知机 如果小于等于零,说明预测错啦 ,其实就是同号为正,异号为负 举个分类的例子 增加样本,改变分类线 继续分类 感知机的收敛定理 XOR问题 XOR问题其实就是第1、3象限数…

前端学习第七天-css常用样式设置

达标要求 掌握元素的显示与隐藏 熟练应用溢出的文字隐藏 熟练掌握版心和布局流程 1. 元素的显示与隐藏 在CSS中有三个显示和隐藏的单词比较常见,我们要区分开,他们分别是 display visibility 和 overflow。 他们的主要目的是让一个元素在页面中消失…

外包干了6个月,技术退步明显

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

(学习日记)2024.03.01:UCOSIII第三节 + 函数指针 (持续更新文件结构)

写在前面: 由于时间的不足与学习的碎片化,写博客变得有些奢侈。 但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈。 既然如此 不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录&a…

java-ssm-jsp-宠物护理预定系统

java-ssm-jsp-宠物护理预定系统 获取源码——》公主号:计算机专业毕设大全

勇敢尝鲜之Springboot3大坑-集成Mybatisplus报错:ddlApplicationRunner

🌹作者主页:青花锁 🌹简介:Java领域优质创作者🏆、Java微服务架构公号作者😄 🌹简历模板、学习资料、面试题库、技术互助 🌹文末获取联系方式 📝 往期热门专栏回顾 专栏…

【LeetCode-1143】最长公共子序列(动归)

目录 题目描述 解法1:动态规划 代码实现 题目链接 题目描述 给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列的长度。 一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除…

python识别并控制操作已打开的浏览器进行自动化测试

前提:已安装python和selenium 一、将浏览器以debugger模式打开 打开方法: 1.右击浏览器,选择属性: 2.在目标中加上 --remote-debugging-port9222 --user-data-dir"C:\selenum\AutomationProfile" 二、识别代码 from…

java面试题(spring框架篇)(黑马 )

树形图: 一、Spring框架种的单例bean是线程安全吗? Service Scope("singleton") public class UserServiceImpl implements UserService{ } singleton:bean在每个Spring IOC容器中只有一个实例 protype:一个bean的定义可以有多个…

加密与安全_探索签名算法

文章目录 概述应用常用数字签名算法CodeDSA签名ECDSA签名小结 概述 在非对称加密中,使用私钥加密、公钥解密确实是可行的,而且有着特定的应用场景,即数字签名。 数字签名的主要目的是确保消息的完整性、真实性和不可否认性。通过使用私钥加…

从零开始手写RPC框架(3)——ZooKeeper入门

目录 ZooKeeper简介ZooKeeper中的一些概念 ZooKeeper安装与常用命令常用命令 ZooKeeper Java客户端 Curator入门 ZooKeeper简介 是什么? ZooKeeper 是一个开源的分布式协调服务,本身就是一个分布式程序(只要半数以上节点存活,Zo…