音视频-什么是帧,视频为什么要编码

embedded/2024/12/4 4:47:27/

        帧就是动画中的一张图片,这相当于电影胶片上的一个镜头,一帧就是一幅静止的画面,连续的帧就形成了我们看到的动画和视频。

        但是直接采集后没经过处理的视频,其实是没有办法真正在互联网上进行传输的。以一张1920乘1080的图片为例,要传输这张图片就需要1920x1080x3x3,也就是47mb。其中8比特等于1字节,三代表的是RGB。

        如果现在要传输一个每秒30帧的视频,每一帧都是这样的图片。那么一秒就需要传输30x47mb,等于1.4Gb的数据。你所需要的带宽就是1.4GBPS。但是家用千兆带宽,所以要在日常传输这么大的视频几乎不太现实。视频必须经过压缩后才能进行正常传输,而这个压缩的过程就是视频编码。

        不过由于输入到视频编码器的视频数据必须是YUV格式的,因为只有使用YUV格式才能极大的去除冗余信息,最大限度的节省网络带宽。所以如果目前的数据是RGB格式的,只需要通过算法将RGB转换为YUV格式,准备好YUV视频数据后,就该进入编码阶段。

        现如今视频编码有很多标准,比如H.264,AV1还有VPS。之所以有这么多标准,一方面是有人研究出了更高效的编码算法,另一方面也是由于新的视频互动场景不断涌现,需要更好的编解码标准来支持,而目前最主流的编解码器还是H264。

        H264视频编码分为五个模块,帧类型分析、帧内/帧间预测、变换+量化、滤波,还有上电码。

        它们都是什么作用呢?首先YUV格式的视频数据会先经过帧类型分析模块确定当前这一帧是属于什么类型。视频帧会分为I、P、B3种帧。

        你可以把 “I帧” 理解为电影中的一段连续影像,里面包含了所有的图像信息。只要影像里的画面没有出现太多变化,基本不会出现新的“I帧”。如果在视频中画面只是出现了一些比较小的变化,那么这些变化的信息都会放在P/B帧中。针对性分析模块就是根据码流占用来判断真类型。

        接着这些帧会再经过帧类与帧间预测以及变换量化进一步得到压缩。由于这几步的处理可能会出现块效应,比如马赛克就是块效应的一种表现,块效应会影响我们的观看感受。

        为了避免这种情况,优化视频权让这些数据还会通过滤波模块。经过了压缩优化的处理,这些数据已经可以被传输出去了。这时上电码模块启动了,它会把当前的像素值转换压缩为二进制码流。最终解码器会输出这些适合传输的二进制码流进入网络传输。将这些数据传输到你的手机上时,解码器会通过熵解码、反量化、反变换等一系列操作把图像呈现出来,这时候你就看到了对方的视频画面。


http://www.ppmy.cn/embedded/142488.html

相关文章

家校通小程序实战教程03学生管理

目录 1 创建数据源2 搭建后台功能3 设置主列字段4 批量导入数据5 设置查询条件6 实现查询和重置总结 我们现在已经搭建了班级管理,并且录入了班级口令。之后就是加入班级的功能了。这里分为老师加入班级和学生家长加入班级。 如果是学生家长的话,在加入之…

python画图plt.close()一直闪烁

解决方法: import matplotlib matplotlib.use(Agg) # 设置后端为 Agg 在Matplotlib中,’后端’(backend)指的是用于实际绘制图形的底层图形库。Matplotlib支持多种后端,如’TkAgg’、’Qt5Agg’、’WXAgg’等&…

小车AI视觉交互--2.颜色跟随

一、实验目标 前面利用了颜色对象在摄像头画面的x,y不同位置通过云台进行跟踪,接下来我们可以在这个基础上修改下,x方向改为车身左右运动进行跟随,然后根据识别的图像外切圆大小进行前进的控制,通过二者叠加来整体控制…

PMP–一、二、三模、冲刺–分类–8.质量管理

文章目录 技巧五、质量管理 一模8.质量管理--质量管理计划--质量管理计划包括项目采用的质量标准,到底有没有满足质量需求,看质量标准即可。6、 [单选] 自项目开始以来,作为项目经理同事的职能经理一直公开反对该项目,在讨论项目里…

OGRE 3D----5. OGRE和QML事件交互

在现代图形应用程序开发中,OGRE(Object-Oriented Graphics Rendering Engine)作为一个高性能的3D渲染引擎,广泛应用于游戏开发、虚拟现实和仿真等领域。而QML(Qt Modeling Language)则是Qt框架中的一种声明式语言,专注于设计用户界面。将OGRE与QML结合,可以充分利用OGR…

faiss库中ivf-sq(ScalarQuantizer,标量量化)代码解读-4

参考内容 参考代码解读3 调试 通过调试跑通ivfsq的流程,记录调试内容: 前面的初始化内容如下: int d 64; // dimensionint nb 100000; // database sizeint nq 10000; // nb of queriesstd::mt19937 rng;std::uniform_real_dist…

VC++网络安全编程范例(12)-PKI编程

PKI(Public Key Infrastructure ) 即"公钥基础设施",是一种遵循既定标准的密钥管理平台,它能够为所有网络应用提供加密和数字签名等密码服务及所必需的密钥和证书管理体系,简单来说,PKI就是利用公钥理论和技…

蓝桥杯备赛笔记(一)

这里的笔记是关于蓝桥杯关键知识点的记录,有别于基础语法,很多内容只要求会用就行,无需深入掌握。 文章目录 前言一、编程基础1.1 C基础格式和版本选择1.2 输入输出cin和cout: 1.3 string字符串简介字符串的基本操作:字…