当前位置: 首页 > 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…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

【机器视觉】单目测距——运动结构恢复

ps&#xff1a;图是随便找的&#xff0c;为了凑个封面 前言 在前面对光流法进行进一步改进&#xff0c;希望将2D光流推广至3D场景流时&#xff0c;发现2D转3D过程中存在尺度歧义问题&#xff0c;需要补全摄像头拍摄图像中缺失的深度信息&#xff0c;否则解空间不收敛&#xf…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

ip子接口配置及删除

配置永久生效的子接口&#xff0c;2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式&#xff1a;dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一&#xff0c;腐蚀跟膨胀属于反向操作&#xff0c;膨胀是把图像图像变大&#xff0c;而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的

修改bug思路&#xff1a; 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑&#xff1a;async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)

引言 在人工智能飞速发展的今天&#xff0c;大语言模型&#xff08;Large Language Models, LLMs&#xff09;已成为技术领域的焦点。从智能写作到代码生成&#xff0c;LLM 的应用场景不断扩展&#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…...

数据结构第5章:树和二叉树完全指南(自整理详细图文笔记)

名人说&#xff1a;莫道桑榆晚&#xff0c;为霞尚满天。——刘禹锡&#xff08;刘梦得&#xff0c;诗豪&#xff09; 原创笔记&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 上一篇&#xff1a;《数据结构第4章 数组和广义表》…...