网络知识 娱乐 【音视频基础】视频基础理论

【音视频基础】视频基础理论

【音视频基础】视频基础理论

  • 图像基本概念
    • 图像
    • 屏幕
  • 图像码流如何计算?
    • 分辨率
    • 帧率
    • 码流计算
    • 图像显示
  • YUV
    • YUV格式
    • RGB与YUV的转换
    • YUV存储
  • YUV查看工具
  • 参考资料

个人简介

📦个人主页:一二三o-0-O的博客
🏆技术方向:C/C++客户端(直播+音视频剪辑)
📣专栏目标:务实的掌握音视频相关专业知识
🧡如果对您有帮助的话辛苦点赞支持。👍👍👍

音视频基础专栏系列

(一)【音视频基础】音频基础理论
(二)【音视频基础】视频基础理论
(三)【音视频基础】封装格式与编码数据

ffmpeg专栏系列

(一)【ffmpeg】ffmpeg命令工具的使用
(二)【ffmpeg】视频解码器
(三)【ffmpeg】SDL视频显示
(四)【ffmpeg】ffmpeg+SDL实现播放器

图像基本概念

图像

  1. 视频是由一组图像组成,为了传输被压缩,最终在显示设备上显示;
  2. 图像是由像素组成,像素是由RGB组成;
    • RGB即三原色(红、绿、蓝),可以混合成世界上所有的颜色。具体RGB值表示如下图所示:
      在这里插入图片描述

      • 彩色图像中每个点,有R、G、B三个分量组成;以RGB24为例,图像像素数据的存储方式如下:
        在这里插入图片描述

      从图中可以看出,RGB24一次存储了每个像素点的R、G、B信息。

      • 与RGB类似的还有BGR格式,可以互相转换。转换方式可以自己写转换程序,也可以使用有swscale相关的ffmpeg库。
      • RGB
    • 分辨率表示横向的像素点个数与纵向的像素点个数

    • 位深:每一个像素占用的位数;最常见的是24位-RGB888,每个颜色都是8位;还有32位-RGBA,A表示alpha(透明度)。

屏幕

  • 一个像素是三个发光二极管组成,可以展示一组RGB值,如下图所示:
    在这里插入图片描述

  • 屏幕上的每个像素由三个发光二极管组成,整个屏幕即可表示为下图:
    在这里插入图片描述

  • 图像与屏幕的关系就是:图像是数据,屏幕是显示设备,图像数据经过驱动程序让屏幕显示图像。

  • 表示屏幕质量的指标:

    • PPI(pixels per inch):每英寸的像素数
    • DPI(Dots pen inch):每英寸的点数,基本上DPI=PPI
    • PPI>300就属于视网膜级别,人眼区分不出来,认为是一体的

图像码流如何计算?

要求的平滑度越高,帧率就越大;要求的清晰度越高,分辨率就越大

分辨率

  • 分辨率即是:X轴的像素个数 * Y轴的像素个数
  • 常见的宽高比16:9以及4:3
    • 16:9的分辨率有360P(640360)、720P(1280720)、1K(1080P 19201080)、2K(1440P,25601440)、4K(4096*2160;如今大多显示器都是用此宽高比
    • 4:3常见的是640*480;旧有的老电视机会采样这个宽高比

帧率

  • 帧率是:每秒钟采集/播放图像的个数
  • 动画的帧率是:25帧/s
  • 常见的帧率是:15帧/s,30帧/s,60帧/s
  • 实时通信一般是15帧/s(帧率越大,占用的传输带宽就越大)
  • 录课一般30帧/s能够满足需求
  • 电影一般是60帧/s

码流计算

  • 未编码的RGB码流 = 分辨率(宽*高)*3(Byte)*25(fps)
    • 例如:1280720325=69120000 约69兆Byte/s;码流是以位为单位的,则69M8=552Mbit/s

图像显示

  • 图像显示的三种情况
    • 图像大小等于显示区域大小
      在这里插入图片描述

    • 图像小于显示区域(拉伸/留白)
      在这里插入图片描述

    • 图像大于显示区域(缩小/截断)
      在这里插入图片描述

YUV

YUV格式

  • 相关实验表明,人眼对亮度敏感而对色度不敏感。因而可以将亮度信息和色度信息分离,并对色度信息采用更“狠”一点的压缩方案,从而提高压缩效率。
  • YUV(也称YCbCr)格式中,Y只包含亮度信息,而UV只包含色度信息
  • 主要的采样格式有YUV4:2:0、YUV4:2:2和YUV4:4:4。
    • YUV444:与RGB88同等概念
    • YUV422:每一行来说,隔一行有个U/V,数据量:1280720 +21280/2720=21280*720,数据量减少了2/3
    • YUV420:应用最广泛的格式,播放器必须支持
  • 为什么使用YUV? 显示器从黑白显示器演变过来的,为了和以前格式兼容以及YUV存储的数据比RGB要少很多

RGB与YUV的转换

  • RGB与YUV关系:RGB用于屏幕图像的展示,YUV用于采集与编码。

  • YUV转RGB:

    • R = Y + 1.140*v
    • G = Y - 0.394U -0.581v
    • B = Y + 2.032*u
  • RGB转YUV

    • Y = 0.299R + 0.587G + 0.114*B
    • U = -0.147R - 0.289G + 0.436*B = 0.492(B-Y)
    • V = 0.615R - 0.515G - 0.100B = 0.877*(R-Y)
  • 4:2:0并不意味着只有Y、Cb两个分量,而没有Cr分量。它实际指的是每行扫描线来说,只有一种色度分量,它以2:1的抽样率存储。相邻的扫描行存储不同的色度分量,也就是说,如果一行是4:2:0的话,下一行就是4:0:2,再下一行是4:2:0…以此类推

YUV存储

  • YUV420P为例,图像像素数据的存储方式如图所示。
    在这里插入图片描述
    从图中可以看出,YUV420P首先存储整张图像的Y信息然后存储整张图像的U信息最后存储了整张图像的V信息

YUV查看工具

可以使用YUV Player Deluxe查看视频像素数据:

在这里插入图片描述

参考资料

【1】雷神博客
【2】李超:音视频基础+ffmpeg原理