当前位置: 首页 > news >正文

【音视频处理】码率、帧率越高越清晰?分辨率、像素、dpi之间是什么关系?码率的真实作用,I帧、B帧、P帧是什么

大家好,欢迎来到停止重构的频道。

本期我们介绍一下视频的一些基础概念,如帧率、码率、分辨率、像素、dpi、视频帧、I帧、P帧、gop等。

会解释多少码率是清晰的,是否帧率越高越流畅等问题。

这些概念是比较杂乱的,我们按这样的顺序介绍:

1、单个视频帧的概念

2、多个视频帧的概念

3、H264、H265的特殊概念

单个视频帧的概念

单个视频帧可以简单地理解为一个图片

单个视频帧的概念有:分辨率、像素、dpi、色彩空间模型

分辨率指的是图像的长宽像素大小,分辨率也有720、1080、2K、4K的说法。

由于视频分辨率一般是16:9的,所以1080一般指1920X1080,其他分辨率如图所示。

细心的小伙伴可能会发现,有时候分辨率后面会加一个P,如1080P等。当然,除了1080P,还有1080I 。

这里的P(逐行扫描)、I(隔行扫描-)指的是扫描方式

虽然理论上隔行扫描(1080I)可以节省带宽,但是,一般来说,1080i这种隔行扫描是电视节目用的。网络视频、视频文件一般都是1080p这种逐行扫描。

这里顺便一提,如果视频播放时出现了锯齿,一般就是采用了隔行扫描(1080I等)的问题。

接下来是像素,像素其实很简单,就是分辨率长宽相乘,如1920X1080分辨率对应的像素就是200万(2073600)像素。

那么多少分辨率才是清晰的呢?取决于dpi ,也就是每英寸的像素多少。

但是dpi实际上并不是视频的一个参数,dpi理论上取决于显示设备和视频分辨率参数

至于多少dpi是清晰的,往往是根据实际场景决定的,毕竟观看距离也起了决定性的因素,如海报等印刷品就要求300dpi。

最后是色彩空间模型,色彩空间模型一般是RGB、YUV这些 ,实际上就是像素点记录色彩数据的方式。

不同色彩空间模型决定色彩的丰富程度,当然也决定着每个像素的数据量大小

一般来说:网络视频、图片都会采用YUV420这种数据量较少的色彩空间模型,虽然色彩存在一定程度的失真,但是数据量较少,以至于文件不会太大。

多个视频帧的概念

多个视频帧的概念,其概念有帧率、播放时间戳PTS、码率

帧率就是一秒的视频帧数,单位是fps,可以简单地理解为一秒切换的图片数量。

一般认为,一秒18帧以上才能看起来是流畅的。

但是这需要根据实际场景而定,电影一般是一秒24帧,游戏需要一秒30帧以上才是流畅的。

这涉及到人的视觉对模糊图像和静止图像切换的感受是不一样的缘故,所以会存在一些具体场景的最低要求偏差。

但是一般来说,网络视频、视频文件具备每秒25帧以上就可以了

但是帧率实际上并不能直接对视频帧的显示造成影响,很多时候,帧率只是一个平均值

因为帧率并不能说明每一帧的具体显示时间,比如每秒30帧,你会发现1帧的时间是0.033… 是一个无限小数。

真正影响视频帧显示的是播放时间戳PTS,在每一个视频帧数据中,都会记录此视频帧的播放时间戳PTS,每个时间戳都是整数,需要根据时间基才能换算成具体时间。

接下来是码率,码率是1秒的数据量大小,单位是Mbps。

很多人说,码率越大越清晰,感官上确实是这样的。

但是在音视频处理中,如直播转码中,实际上码率的设置是为了限制数据量的大小

因为这会影响到网络加载时间,如果码率较大,而带宽不足,那视频会一卡一卡的

一般来说,码率只是一个平均值,在音视频处理时,只需要设置最大码率

设置最大码率后,编码器可能会对视频数据进行有损压缩,所以较低码率的视频感官上是不清晰的。

这里的有损压缩只是可能,因为是否压缩,取决于原始数据量的大小,原始数据量的大小又取决于分辨率、帧率、图像的色彩空间模型、编码格式等因素

一般来说,1920X1080分辨率、30帧、H264编码的视频,最大码率设置为2或3Mbps一般都是清晰的。

当然,最大码率的限制需要看具体场景,有时候为了节省手机客户端的流量,可能会设置很低的最大码率。

H264、H265的特殊概念

最后是介绍一下出现在H264、H265编码格式的一些特殊概念:I帧、B帧、P帧、GOP

浏览器一般都支持H264编码的视频,H265与H264较为相似,只是H265比H264拥有更高的压缩能力,但同时H265编码的视频在播放时消耗性能也会更多。

H264、H265的编解码器是现成的,其具体算法和工作原理是不需要知道的,但是我们仍然需要知道I帧、P帧、B帧的概念。

其实是为了压缩相似帧的一种手段

I帧是能独立播放的,是完整的视频帧

P帧是需要根据前一个I帧或P帧计算所得。

B帧是需要根据前一个和后一个I帧或P帧计算所得。

I帧是数据量最大的,一般会出现在画面突变的位置,所以一些视频识别软件会优先处理I帧图像,这样有利于快速处理。

B帧虽然是数据量最小的,但是它需要后一个帧数据才能计算出来,所以在直播流等场景下,一般是不生成B帧的,这样有利于直播的流畅。

另外,还有一个对于直播流等流媒体来说非常重要的概念gop,gop指的是一组完整的视频帧 。

如gop设置为25,那么编码器会让每25帧的第一帧必定为I帧,如果帧率也是25帧,那每秒的第一帧就必定是I帧。

这样做的好处是,直播流出现画面花掉的概率会降低,信号中断重连后,直播流也能更快地重新播放,因为P帧、B帧实际上都需要依赖I帧才能计算出来,一般对于直播流而言,gop一般设置为帧率的1-2倍。

总结

以上是关于视频一些概念,这些概念非常重要,是视频处理中需要斟酌的设置,至于音频相关的概念,会在之后的内容中补充。

相关文章:

【音视频处理】码率、帧率越高越清晰?分辨率、像素、dpi之间是什么关系?码率的真实作用,I帧、B帧、P帧是什么

大家好,欢迎来到停止重构的频道。本期我们介绍一下视频的一些基础概念,如帧率、码率、分辨率、像素、dpi、视频帧、I帧、P帧、gop等。会解释多少码率是清晰的,是否帧率越高越流畅等问题。这些概念是比较杂乱的,我们按这样的顺序介…...

Java基础-认识注释、标识符关键字

注释 平时我们编写代码,当代码量较小时候,我们还可以看懂自己写的代码。但是当项目结构一旦复杂起来,我们就需要用到注释啦。注释并不会被执行,是写给我们开发者看的。 在java中的注释有三种 标识符 常见关键字 Java所有的组…...

【C#】静态扩展方法

静态类特征:1.不能用sealed或abstract修饰符;2.必须直接继承System.Object类型,不能试任何其他类的派生类;3.不能实现任何接口;4.不能包含任何操作符;5.不能使用protected或者protected internal修饰的静态成员&#x…...

医疗电子方案——血压计方案

高血压人群越来越多了,尤其是老人。高血压是一种十分常见的慢性疾病,同时也是引发心血管疾病最主要的因素。有关数据表明,我国每年因高血压死亡的病例竟然达到上百万之多,占到全部死亡比例的20%以上。所以大多数家庭都需要备有家用…...

深度分析React源码中的合成事件

热身准备 明确几个概念 在React17.0.3版本中: 所有事件都是委托在id root的DOM元素中(网上很多说是在document中,17版本不是了);在应用中所有节点的事件监听其实都是在id root的DOM元素中触发;React自…...

17.微服务SpringCloud

一、基本概念 Spring Cloud 被称为构建分布式微服务系统的“全家桶”,它并不是某一门技术,而是一系列微服务解决方案或框架的有序集合。它将市面上成熟的、经过验证的微服务框架整合起来,并通过 Spring Boot 的思想进行再封装,屏蔽…...

Java基础面试题——JavaWeb专题

文章目录1.HTTP响应码有哪些2.Forward和Redirect的区别?3.Get和Post请求的区别4.介绍下OSI七层和TCP/IP四层的关系5.说说TCP和UDP的区别6. 说下HTTP和HTTPS的区别7.说下HTTP、TCP、Socket的关系是什么?8. 说下HTTP的长链接和短连接的区别9.TCP原理10. Co…...

MySql数据库约束

概述、目的 概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。 目的:保证数据库中数据的正确性、有效性和完整性。 分类: 约束描述关键字非空约束限制该字段的数据不能为nullNOT NULL唯一约束保证该字段的所有数据都…...

TripleCross:一款功能强大的Linux eBPF安全研究工具

关于TripleCross TripleCross是一款功能强大的Linux eBPF安全研究工具,该工具提供了后门、C2、代码库注入、执行劫持、持久化和隐蔽执行等功能。 功能介绍 1、使用一个代码库注入模块通过往进程的虚拟内存中写入命令来执行恶意代码; 2、提供了一个行劫…...

2023最牛教程,手把手教你成为年薪30W的测试开发

随着互联网行业的高速发展,快速高质量的产品版本迭代成为企业始终立于不败之地的迫切需求,而在短期迭代的快节奏中,传统测试工作面对更大压力,无法持续提供高效率高质量的人力支撑,所以越来越多的企业需要技术更为全面…...

“深度学习”学习日记。--ImageNet、VGG、ResNet

2023.2.14 一、小历史: 在2012年的ILSVRC(ImageNet Large Scale Visual Recognitoin Chanllege),基于深度学习的方法AlexNet 以绝对优势获胜并且他颠覆了以前的图片识别方法,此后深度学习方法一直活跃在这个舞台。 二、ImageNet&#xff1…...

关于APP下载量提升的技巧

关于APP应用下载量提升,很多人都不是很了解。今天厦门巨神峰小编给大家说下关于APP下载量提升的几个技巧。 一、抓住流行趋势,提升APP下载量 1、利用社交媒体进行推广。社交媒体是当下最流行的推广手段,可以有效的将APP的消息传播到更多的用…...

以“大数据”赋能产业链精准招商

​ 随着我国产业发展的不断迭代升级,传统招商模式的不足逐步凸显,侧重土地与税费优惠的同质化竞争招商以及来者不拒的无门槛型招商已经遏制了区域产业的发展,导致各产业园区很难形成产业集聚及持续的吸引力。在这样的大环境下,产业…...

内存泄漏检测组件 -- hook

目录 hook malloc与free出现的问题 builtin_return_address(N) C/CLinux服务器开发/后台架构师【零声教育】-学习视频教程-腾讯课堂 hook malloc与free出现的问题 #define _GNU_SOURCE #include <stdio.h> #include <dlfcn.h> #include <stdlib.h> /****…...

Diffusion model(三): 公式结论

接上文 Diffusion model(一): 公式推导详解 这一节主要总结之前文章的公式结论 1. 已知x0x_{0}x0​时&#xff0c;sample过程的均值和方差 q(xt−1∣xt,x0)(xt−1;μ~(xt,x0),β~tI)\begin{aligned} q(x_{t-1}|x_{t}, x_{0}) \mathcal(x_{t-1}; \tilde{\mu}(x_{t}, x_{0}),…...

Angular笔记(二)组件

组件包括&#xff1a; HTML 模板: 声明页面渲染的内容TypeScript 类: 定义行为CSS 选择器: 定义组件在模板中的使用方式&#xff08;可选&#xff09;要应用在模板上的 CSS 样式 一、 创建组件: 使用 Angular CLI 创建一个组件 ng generate component <component-name>…...

微信小程序|基于小程序+C#制作一个超酷的个人简历

你还在用以前的方式投简历吗?趁着金三银四来临之际,跟随此文使用小程序制作一个便携超酷的个人简历,高调炫技,愉快的收offer吧! 一、小程序...

华为OD机试 - 最快到达医院的方法(Java JS Python)

题目描述 新型冠状病毒疫情的肆虐,使得家在武汉的大壮不得不思考自己家和附近定点医院的具体情况。 经过一番调查,大壮明白了距离自己家最近的定点医院有两家。其中: 医院A和自己的距离是X公里医院B和自己的距离是Y公里由于武汉封城,公交停运,私家车不能上路,交通十分不…...

92.【SpringCloud NetFilx】

SpringCloud(一)、这个阶段该如何学习?1.微服务介绍2.面试常见问题(二)、微服务概述1.什么是微服务?2. 微服务与微服务架构(1).微服务(2).微服务架构⭐(3). 微服务优缺点(4). 微服务技术栈有那些&#xff1f;(5). 为什么选择SpringCloud作为微服务架构(三)、SpringCloud入门概…...

[ahk]如何载入Scite的会话Session文件

加载session文件的AutoHotkey代码&#xff1a;oSciTE : ComObjActive("SciTE4AHK.Application") messageloadsession:d:\\ddd\\2023-2-15SciTE.session oSciTE.SendDirectorMsg(message)存储session文件的AutoHotkey代码&#xff1a;messagesavesession:d:\\ddd\\123…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望

文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例&#xff1a;使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例&#xff1a;使用OpenAI GPT-3进…...

IGP(Interior Gateway Protocol,内部网关协议)

IGP&#xff08;Interior Gateway Protocol&#xff0c;内部网关协议&#xff09; 是一种用于在一个自治系统&#xff08;AS&#xff09;内部传递路由信息的路由协议&#xff0c;主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

Nuxt.js 中的路由配置详解

Nuxt.js 通过其内置的路由系统简化了应用的路由配置&#xff0c;使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

今日科技热点速览

&#x1f525; 今日科技热点速览 &#x1f3ae; 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售&#xff0c;主打更强图形性能与沉浸式体验&#xff0c;支持多模态交互&#xff0c;受到全球玩家热捧 。 &#x1f916; 人工智能持续突破 DeepSeek-R1&…...

【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统

目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索&#xff08;基于物理空间 广播范围&#xff09;2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

C++使用 new 来创建动态数组

问题&#xff1a; 不能使用变量定义数组大小 原因&#xff1a; 这是因为数组在内存中是连续存储的&#xff0c;编译器需要在编译阶段就确定数组的大小&#xff0c;以便正确地分配内存空间。如果允许使用变量来定义数组的大小&#xff0c;那么编译器就无法在编译时确定数组的大…...

Java + Spring Boot + Mybatis 实现批量插入

在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法&#xff1a;使用 MyBatis 的 <foreach> 标签和批处理模式&#xff08;ExecutorType.BATCH&#xff09;。 方法一&#xff1a;使用 XML 的 <foreach> 标签&#xff…...

无人机侦测与反制技术的进展与应用

国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机&#xff08;无人驾驶飞行器&#xff0c;UAV&#xff09;技术的快速发展&#xff0c;其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统&#xff0c;无人机的“黑飞”&…...

[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.

ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #&#xff1a…...