【视频编解码-02】视频编码的目的、条件和目标

article/2025/10/15 20:37:54

视频编码,是视频处理中的一个核心技术。
现代我们所看到的所有视频,包括电视、互联网、手机等等,几乎所有的视频都会被编码、解码。
整个视频技术的基本流程是:视频数据的采集、视频数据的编码、视频数据的传输、视频数据的解码、视频数据的处理。
当采集到视频数据,将视频传输之前,需要对视频数据进行编码。本文将要整理回答一下三个问题:

  1. 为什么要进行视频编码?
  2. 为什么能进行视频编码?
  3. 视频编码的终极目标是什么?

1. 为什么要进行视频编码?

简单的一句话,那就是为了减少传输的视频数据量,视频编码的主要目的就是为了压缩原始视频的数据量。
为什么要减少传输的数据量呢?因为网络带宽的资源是有限的,传输大量的视频数据的成本是很高的,为了减少成本,提高传输的效率,所以针对原始数据要进行压缩编码。
在第一篇文章【视频编解码-01】像素-PPI-比特率-码率……中计算了100分钟电影的原始数据量,如果不进行压缩,那么不仅传输,存储的成本也很高。

2. 为什么能进行视频编码?

了解了为什么要视频编码的原因。再来看看为什么能进行视频压缩编码。这个问题,就是要回答视频压缩编码的条件什么?视频压缩编码到底压缩掉了什么数据?

视频编码的理论基础是香农的信息论,信息论是用概率和数理统计的方法研究信息、信息熵、通信系统、数据传输、密码学以及数据压缩等问题的基础理论。因为视频编码属于数据压缩的范畴,所以信息论是视频压缩的基础。

至于香农的信息论,可以参见百度百科、香农三大定理。

首先,来了解一个概念,信息熵:
公式如下,它代表了信源S的熵:
在这里插入图片描述
单位:Bit/字符
那信息熵到底是什么呢?它是信息量的度量单位。不要再去想什么不确定性了,抽象的让人想去抽它,就认为它是信息的多样性吧,它的实际意义有两个:

  • 信源S的平均信息量
  • 编码所有符号S平均所需要的位数
    直观的理解就是:信源熵是编码这个信源平均所需要的最小位数。

为什么能进行视频压缩编码?
第一个条件:香农第一定理【可边长无失真新原编码定理】,其意义是:将原始信源符号转化为新的码符号,使码符号尽量服从等概分布,从而每个码符号所携带的信息量达到最大,进而可以用尽量少的码符号传输信源信息。

**第二个条件:**视频数据本身存在大量的数据冗余。
视频数据的冗余,总结来看,主要有以下冗余:

  • 空间冗余,是静态图像存在的主要的数据冗余。大片连贯性的空间像素相似度非常高;
    时间冗余,是视频序列,也即相邻帧之间包含的非运动背景数据;
  • 编码冗余,也是信息熵冗余,由信息论可知,为了表示图像数据的一个像素点,只要按照其信息熵的大小分配相对应的比特数即可,但是对于图像数据的每个像素,在获取图像时很难获取像素的信息熵,因此一般的是对每个像素采用相同的比特数表示,这样就必然存在信息熵冗余;
  • 视觉冗余,人眼对图像的没感性是非均匀和非线性的,对于某些失真并不敏感,察觉不到图像的细微变化,这些细微变化即是丢失,人眼也感受不到,但是在记录视频的原始数据的时候,通常假定视觉系统是线性和均匀的,这一样就是产生了比理想编码更多的数据,这就是视觉冗余;
  • 知识冗余,图像中包含了一些人们的先验知识,比如图像中的人脸五官架构,这些位置信息是固定的;根据已有知识,可以构造某些图像中所包含的物体的模型,创建特征图库,这样图像编码的时候只需要保存一些特征参数,从而可以减少数据量,知识冗余是模型编码利用的主要特性;
  • 结构冗余,图像中存在很强的纹理结构或者自相似性,如果已知某种像素的分布模式,则可以通过某以特定过程生成图像;

以上两个必要条件,回答了为什么可以进行视频压缩编码。

3. 视频编码的终极目标是什么?

回答这个问题,也就是回答视频压缩编码的上限是什么?压缩到什么地步就不能在压缩了。

数字视频因为存在数据冗余 , 所以可以被压缩 。
数字视频由于在数字化时采用了帧内与帧间均匀采样 , 并由 RGB 三个分量均 匀表达采样量化后的数据 , 从而带来了空间冗余 、 时间冗余 、 和编码冗余 。 正是由 于这三种冗余的存在 , 才使得视频可以被压缩 。 很显然 , 视频编码的上限就是当冗余不再存在时的数据表达 。

参考例子


http://chatgpt.dhexx.cn/article/GE6I9uhQ.shtml

相关文章

【视频】视频文件格式和视频编码

我们经常在电脑、电视、手机或者其他终端产品看视频,我们对视频有个大概了解,比如清晰度、大小、视频类型等,但是对于视频内部结构我们应该一无所知,现在我们来一步一步解开视频的神秘面纱。 首先大家要清楚两个概念,视…

H.265视频编码原理总结

H.265视频编码原理总结 转载地址 1 概述 H.265(HEVC High Efficiency Video Coding)是现行H.264标准于2003年实现标准化以来时隔10年推出的新标准,将成为支撑未来十年的影像服务和产品的视频压缩技术。其特点是,支持1080p以上的…

视频编码流程详解

1、视频编码整体流程 2、FFmpeg视频编码详细流程 从本地读取YUV数据编码为H264格式的数据,然后再存入到本地,编码后的数据有带startcode。 与FFmpeg示例音频编码的流程基本一致。 3、关键函数说明 (1)avcodec_find_encoder_by_n…

视频编码知识

记录一下学习视频编码的过程和自己的理解 视频 数字图像在计算机中的表示:二维矩阵,或三维矩阵(彩色)。 矩阵中的每个点为像素,数值的大小反应色彩的强度,颜色深度需要使用一定数据空间存储,每…

视频的专业基础知识(一)常用的编码格式和参数

1. 常用的编码格式 编码格式:一个视频文件本身,通常由音频和视频两部分组成。例如视频文件,就是由avc视频编码AAC音频编码组成的,常见的视频编码格式有Xvid,AVC/H.264,MPEG1,MPEG2 等&#xff…

常见视频编码格式解析

常见视频编码格式解析 文章目录 常见视频编码格式解析1、MPEG2-TS编码技术1.1. MPEG-TS简介1.2. 基本概念及TS流概述1.3. 基本流程1.4. TS流传输包(简称TS包)结构分析1.4.1. TS包包头1.4.2. TS包净荷部分1.5. PS节目流2、MPEG-4编码技术2.1. MPEG-4概述2.2. MPEG-4各部分2.3.…

视频编码全流程

视频编解码用到的一些算法: 正反傅里叶变换、fft算法 dct变换、快速dct变换 如何自己实现一个视频编解码器: (1)取一帧作为I帧,类似jpeg压缩编码,也就是 rgb转yuv,然后dct去除高频信息。因为这种压缩会造成边界bloc…

视频编码技术详解

1、引言 如今我们所处的时代,是移动互联网时代,也可以说是视频时代。从快播到抖音,从“三生三世”到“延禧攻略”,我们的生活,被越来越多的视频元素所影响。 而这一切,离不开视频拍摄技术的不断升级&#x…

FIO源码解读测试

在磁盘测试中,fio是最常用的测试的工具,其下载网址为https://github.com/axboe/fio; 对于fio,其测试命令有许多,这个大家很容易就可以查到,此处不讲解具体的测试命令, 而是讲一下大概的源码框架。 Fio的入口函数在fio.…

fio引发的一些问题

fio引发的一些问题 奇怪的255扇区在nvme驱动中插入打印语句直接编译模块加载源码编译内核 查找内核源码 奇怪的255扇区 由于块设备驱动项目需要测试读写速度,故使用fio工具,没想着深入了解,简单测个速就可以 使用tldr命令得到测试磁盘读写的…

【fio】关于磁盘性能测试

一、关于磁盘 磁盘是可以持久化存储的设备,根据存储介质的不同,常见磁盘可以分为两类:机械磁盘和固态磁盘。 第一类,机械磁盘,也称为硬盘驱动器(Hard Disk Driver),通常缩写为 HDD。…

【测试】 FIO:ceph/磁盘IO测试工具 fio(iodepth深度)

目录 随看随用 NAS文件系统测试 块系统测试 FIO用法 FIO介绍 FIO 工具常用参数: FIO结果说明 I/O 的重放(录下实际工况的IO,用fio重放) fio工作参数可以写入配置文件 fio的iodepth参数说明 IO状态监控: Ios…

FIO详解

fio - Flexible IO Tester 一、服务器配置: 由于我们想通过fio得到SSD真实的参数信息,因此我们需要服务器BIOS一些参数的配合,以便能更好的体现硬盘的性能。 以华为1288HV5为例: 二、fio 1.安装 a.下载地址:htt…

FIO 存储性能压测

一、 FIO简介 FIO 是一个多线程IO生成工具,可以生成多种IO模式(随机、顺序、读、写四大类),用来测试磁盘设备的性能。GFIO是FIO的图形监测工具,它提供了图形界面的参数配置,和性能监测图像。 在github上的…

磁盘性能测试工具-FIO的安装及使用

文章目录 FIO介绍FIO安装在线安装离线安装 磁盘测试命令行方式测试结果说明命令参数说明配置文件方式 dd命令介绍使用方法 FIO介绍 FIO是一款测试IOPS的工具,用于对磁盘进行压力测试和验证,磁盘I/O是检查磁盘性能的重要指标,可以按照负载情况…

NuGet学习笔记(1)——初识NuGet及快速安装使用

http://kb.cnblogs.com/page/143190/ 1. NuGet是什么? NuGet is a Visual Studio 2010 extension that makes it easy to add, remove, and update libraries and tools in Visual Studio projects that use the .NET Framework. This topic lists documentation t…

Nuget路径问题

VS NetGet包管理器 问题场景: 装了两遍VS2019,第一次装D盘卸载了,然后装C盘,结果生成 .netCore项目时就悲剧了,报错:error MSB4018: “ResolvePackageAssets”任务意外失败。Microsoft.PackageDependencyResolution.t…

使用nuget 打包并上传 nuget.org

使用nuget 打包并上传 nuget.org 一、准备工作二、打包你的项目三、上传 nug.org 服务器 前言:今天又玩了个新东西,那就是 使用nuget 打包并上传 nuget.org,在这里即时记录一下,废话不多说,直接上教程。 一、准备工作…

nuget 的生成、发布、使用和更新

nuget 的生成、发布、使用和更新 一、nuget 的生成1.生成.dll1.1创建.net项目(类库)1.2 打包生成 .dll 2.打包成.nupkg文件2.1安装 [NuGetPackageExplorer.exe](https://github.com/NuGetPackageExplorer/NuGetPackageExplorer)程序2.2打开软件,完成打包…

修改NuGet包默认存放位置

默认情况下,NuGet下载的包存放在系统盘(C盘中),这样一来,时间长了下载的包越多,C盘占用的空间也就越多。 1、问题描述 默认情况下,NuGet下载的包存放在系统盘(C盘中,一般在路径C:\Users\用户\.nuget\packag…