攻克视频技术
李江
声网 Agora 视频专家
7494 人已学习
新⼈⾸单¥59
登录后,你可以任选3讲全文学习
课程目录
已完结/共 19 讲
攻克视频技术
15
15
1.0x
00:00/00:00
登录|注册

04|编码原理:视频究竟是怎么编码压缩的?

你好,我是李江。今天我们一起来聊一聊视频编码。
说到视频,我们首先想到的可能就是占内存。我们知道一个视频是由一连串图像序列组成的,视频中图像一般是 YUV 格式。现在,我们假设有一个电影视频,分辨率是 1080P,帧率是 25fps,并且时长是 2 小时,如果不做视频压缩的话,它的大小是 1920 x 1080 x 1.5 x 25 x 2 x 3600 = 521.4G。而我们的电脑一般是 500G 的硬盘,那就连 2 部电影都放不下了。如果是在视频通话场景下的话,按照这个大小去传输视频数据,对流量和带宽资源的消耗也是非常大的,并且如此大的数据发送对网络要求也非常高,很显然我们是接受不了的。因此,做视频编码压缩就非常有必要。
那么,接下来我就深入讲讲视频编码,带你从预测编码、变换编码、熵编码等方面,系统了解下视频编码的原理。相信这节课过后,你会对视频编码有一个全面的了解。

视频编码的原理

视频编码是对一帧帧图像来进行的。一般我们所熟知的彩色图像的格式是 RGB 的,即用红绿蓝三个分量的组合来表示所有颜色。但是,RGB 三个颜色是有相关性的,为了去掉这个相关性,减少需要编码的信息量,我们通常会把 RGB 转换成 YUV,也就是 1 个亮度分量和 2 个色度分量
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

视频编码是为了减小视频文件大小,减少传输流量和带宽资源消耗而必要的。本文深入讲解了视频编码的原理,包括预测编码、变换编码、熵编码等方面。通过对视频编码的了解,读者可以更全面地理解视频编码的工作原理。视频编码通过压缩视频文件大小,减少对存储和传输资源的消耗,对于节省空间和提高效率具有重要意义。 文章详细介绍了视频编码的原理,包括YUV格式、图像数据冗余、帧内预测和帧间预测等内容。通过对图像块进行DCT变换和量化,分离出低频和高频信息,进一步减少了图像数据的冗余。视频编码利用图像数据的冗余性和人眼对图像信息的感知特点,实现了对视频文件的高效压缩,从而减小文件大小,降低传输成本,提高存储和传输效率。 此外,文章还介绍了不同视频编码标准的对比及选择,包括H264、H265、VP8、VP9和AV1等编码标准的特点和应用场景。针对不同的实际应用场景和需求,读者可以根据硬件支持、专利费用、编码效率等因素选择合适的编码器。 总的来说,视频编码的原理涉及了多个技术细节,通过这些步骤实现了对视频文件的高效压缩,为节省存储空间和提高传输效率提供了重要技术支持。文章内容丰富,涵盖了视频编码的基本原理和实际应用,对读者了解视频编码技术具有重要参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《攻克视频技术》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(24)

  • 最新
  • 精选
  • Student
    1920 x 1080 x 1.5 x 25 x 2 x 3600 = 260.7G。其中的1.5是怎么来的 谢谢

    作者回复: 1.5是一般我们图像常用的是YUV420格式的,YUV420格式每一个像素对应了1个字节的Y、0.25个字节的U和0.25个字节的V。所以一个像素占用1.5个字节。你可以学习一下第二节课里面有详细的内容来讲述。

    2021-11-30
    5
    15
  • ForwardsHao
    一帧图像即存在空间冗余又存在时间冗余,所以是帧间预测和帧内预测都是可以同时可以在一帧上应用的。这样一个编码的宏块,都会即由本帧内的前面的宏块又由相关帧的预测块影响。

    作者回复: 是的,这个思路很正确。但是I帧是不能进行帧间预测的。因为帧间预测是需要依赖于参考帧的,这样肯定需要一开始有一个帧是可以独立的编解码的。不然大家都相互依赖了。

    2021-11-29
    7
  • 我有一条鱼
    上面中写av1和H265的编码速度是3fps和8fps。这样的速度是怎么在直播场景中使用的吗?在页面上展示的时候不是15fps左右吗?

    作者回复: 这个怪我没有解释清楚。这个对比看相对数据就可以。因为我选用的速度档是很慢速的。编码器是可以选择编码速度的。比如说x264和x265都有一个preset参数可以设置编码速度的。一般实际不会使用这种速度的。真实场景的编码速度需要看编码器设置,编码设备和编码画面的复杂度等多个方面来决定的。

    2021-12-03
    4
  • 一頭蠻牛
    老师请问 宏块转像素串 为什么是之字形扫描? 搜索无果 请求解答

    作者回复: 因为一般来说,DCT变换之后的系数(像素值)是从左上角到右下角成总体变小的趋势,量化之后右下角的很容易都变成0,之字形扫描很容易扫描出来一长串0的像素串,压缩率会高一些

    2022-09-02归属地:河北
    2
    3
  • Geek_495a1c
    在一帧中既有帧间预测又有帧内预测,最后是怎么确定使用哪种方式?

    作者回复: 编码器会选择“最优”的预测方式。或者你可以认为编码器会遍历所有的预测模式,选一种最好的。

    2021-12-15
    2
  • 我有一条鱼
    应该有一些被参考的帧是不可以帧间预测的,其他帧可以吧。要不每个帧都相互参考,没有一帧有完整的信息。在解码时,信息还能被解析出来吗?

    作者回复: 是的,I帧就只能帧内预测。

    2021-12-03
    2
    2
  • Max(Deguang)
    问一下,文中提到帧间参考的时候,会使用运动矢量记录参考宏块位置。帧内参考的时候,如何记录参考宏块的位置呢?谢谢

    作者回复: 帧内参考的参考像素就是当前编码块的左边,上边,左上,右上的相邻像素,具体是哪一个由帧内预测的模式来确定,帧内预测的模式在码流里面也会记录

    2022-03-12
    1
  • 被讨厌的勇气
    应该可以。帧内预测和帧间预测都是以块为基本单元的,而一帧包含多个块,所以,可以将帧间预测与帧内预测施加到同一帧的不同块上

    作者回复: 这个“以块为基本单元”的思考这个问题的方式很好,很棒。因为确实是分块来选择模式的。但是I帧不能用帧间预测。P帧和B帧两种预测方式都可以。

    2021-11-29
    2
    1
  • Geek_9c9938
    李老师好 文中 "假设 Y 分量这 16x16 个像素就是一个个数字,我们从左上角开始之字形扫描每一个像素值,则可以得到一个“像素串”。" 假设是数字什么意思,事实上是数字吗 ?

    作者回复: 其实像素值就是一个个0-255的数字,所以你可以认为就是数字

    2023-11-05归属地:北京
    2
  • CyanWoods
    这个DCT变换里面没有提到亮度和色度的量化矩阵,我研究生期间学这门课的时候记得是有这个步骤的啊

    作者回复: 也有量化矩阵去量化,但实际很少使用

    2023-08-17归属地:河南
收起评论
显示
设置
留言
24
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部