博客
关于我
H264(9)---------h264面试题
阅读量:140 次
发布时间:2019-02-28

本文共 2258 字,大约阅读时间需要 7 分钟。

为什么要有YUV这种数据出来?(YUV相比RGB的优点)

YUV是一种用于视频编码和处理的像素格式,主要用于描述图像的亮度(Y)和色彩信息(U和V)。YUV与RGB的主要区别在于:

  • 存储空间优化

    • 除了YUV444外,其他格式(如YUV422、YUV420、YUV411)在存储空间上都比RGB格式占用更少。
    • YUV444与RGB格式占用的存储空间相同,但其它YUV格式的存储需求远低于RGB。
  • 色彩模型与编码效率

    • YUV的色彩模型基于YCbCr,Y表示亮度,U和V分别表示绿色和红色分量。
    • 与RGB格式相比,YUV的色彩信息编码效率更高,能够在更少的数据量下传达高质量的图像信息。
  • H264与H265的主要区别

    H264和H265(HEVC)是主流的视频编码标准,两者在压缩效率和技术特性上有显著差异:

  • 分辨率和压缩能力

    • H264的压缩率相比H265理论上较低,H265的压缩率通常能达到H264的1.5倍至2倍。
  • 宏块划分

    • H264宏块尺寸固定为16x16。
    • H265宏块尺寸根据视频内容的变化幅度动态调整,支持从8x8到64x64的多种分辨率。
  • 运动编码能力

    • H265支持更复杂的运动编码技术,能够在相同压缩率下实现更好的运动预测和补偿效果。
  • 格式容容性

    • H265支持更宽广的色彩范围和更高的动态范围,适合高动态和广色域视频内容。
  • 平常电视的帧率通常是多少?

    • 标准电视:通常以25帧/秒(25Hz)为帧率,适用于黑白电视和早期彩色电视。
    • 高清电视:帧率通常为60帧/秒(60Hz),以提升画面流畅度和清晰度。
    • 游戏与动画:帧率通常为30帧/秒(30Hz),以支持较高的画面更新频率。

    SPStm的作用

    SPStm(Slice Parameter Set)在H264/H265视频编码中承担以下重要功能:

  • Profile和Level的解析

    • Profile决定了视频的压缩级别和支持的编码特性。
    • Level决定了视频的最大分辨率和比特率。
  • 视频尺寸的计算

    • Pic_width_in_mbs_minus1和Pic_height_in_mbs_minus1可用于计算视频的宽度和高度。
  • 帧率控制

    • Frame_mbs_only_flag用于标识帧编码与场编码的区别。
    • Log2_max_frame_num_minus4可用于计算最大GOP(Group of Pictures)数量。
    • Max_num_ref_frames可用于确定参考帧的数量。
  • 颜色平面和场编码信息

    • Separate_color_plane_flag和Color_plane_id用于标识颜色分量的分离和位置。
    • Field_pic_flag和Bottom_field_flag用于场编码信息。
  • IDR帧检测

    • Idr_pic_id用于标识独立决断帧(Intra-Display Refresh),用于减少闪烁现象。
  • PPS的作用

    PPStm(Picture Parameter Set)在H264/H265编码中主要负责以下功能:

  • 熵编码控制

    • 确定是否启用权重预测(Weighted prediction),优化压缩效率。
  • 分片处理

    • 确定分片的解码顺序和量化参数。
  • 纵向预测控制

    • 调整纵向预测器的参数,优化预测性能。
  • Slice Header的作用

    Slice Header用于定义解码顺序和分片信息,具体包括:

  • 解码顺序

    • Slice Header中定义了当前分片的解码顺序和位置。
  • 颜色分量信息

    • Separate_color_plane_flag用于标识颜色分量的分离。
    • Color_plane_id用于指定当前分片的颜色分量。
  • 场编码信息

    • Field_pic_flag和Bottom_field_flag用于标识场编码信息。
  • IDR帧信息

    • Idr_pic_id用于标识独立决断帧。
  • H264的编解码框架

    H264的编解码框架包括以下主要步骤:

    编码流程

  • 帧内预测(Intra prediction)

    • 对于I帧,使用帧内纵向预测生成预测块。
  • 残差编码

    • 计算当前帧与参考帧之间的残差。
  • 变换和量化

    • 对残差进行变换编码,量化并生成量化表。
  • 熵编码

    • 对量化表和其他信息进行熵编码。
  • NALU编码

    • 将编码数据组织为NALU(Network Abstraction Layer Unit)单元。
  • 解码流程

  • 熵解码

    • 解码生成的量化表和其他信息。
  • 逆量化

    • 根据量化表恢复原始残差。
  • 变换反转换

    • 进行逆变换,恢复原始图像数据。
  • 帧重构

    • 结合预测和残差,恢复原始帧并进行滤波处理。
  • H264的码流结构

    H264的码流结构基于NALU单元,主要包括以下组成部分:

  • NALU Header

    • 1字节的NALU Header,包含重要性标志位和NALU类型。
  • NALU Body

    • 包含RBSP数据。
    • RBSP数据通过SODB(Sparse Transform of Bytes)存储,通常以1字节的填充位和多个0结尾形成RBSP。
  • Slice Header

    • 定义解码顺序、颜色分量信息等。
  • Slice Data

    • 包含宏块数据,包括宏块类型、预测信息和残差值。
  • PPI与DPI的定义

    • PPI(Pixels per Inch):表示屏幕每英寸上的像素数量。

    • DPI(Dots per Inch):表示屏幕每英寸上的点数,通常用于打印和显示设备。

    • 300 PPI:表示屏幕像素密度达到视网膜水平,能够提供视觉舒适的显示效果。

    转载地址:http://rucc.baihongyu.com/

    你可能感兴趣的文章
    MYSQL8.0以上忘记root密码
    查看>>
    Mysql8.0以上重置初始密码的方法
    查看>>
    mysql8.0新特性-自增变量的持久化
    查看>>
    Mysql8.0注意url变更写法
    查看>>
    Mysql8.0的特性
    查看>>
    MySQL8修改密码报错ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
    查看>>
    MySQL8修改密码的方法
    查看>>
    Mysql8在Centos上安装后忘记root密码如何重新设置
    查看>>
    Mysql8在Windows上离线安装时忘记root密码
    查看>>
    MySQL8找不到my.ini配置文件以及报sql_mode=only_full_group_by解决方案
    查看>>
    mysql8的安装与卸载
    查看>>
    MySQL8,体验不一样的安装方式!
    查看>>
    MySQL: Host '127.0.0.1' is not allowed to connect to this MySQL server
    查看>>
    Mysql: 对换(替换)两条记录的同一个字段值
    查看>>
    mysql:Can‘t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock‘解决方法
    查看>>
    MYSQL:基础——3N范式的表结构设计
    查看>>
    MYSQL:基础——触发器
    查看>>
    Mysql:连接报错“closing inbound before receiving peer‘s close_notify”
    查看>>
    mysqlbinlog报错unknown variable ‘default-character-set=utf8mb4‘
    查看>>
    mysqldump 参数--lock-tables浅析
    查看>>