博客
关于我
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/

    你可能感兴趣的文章
    Mysql 中的日期时间字符串查询
    查看>>
    mysql 中索引的问题
    查看>>
    MySQL 中锁的面试题总结
    查看>>
    MySQL 中随机抽样:order by rand limit 的替代方案
    查看>>
    MySQL 为什么需要两阶段提交?
    查看>>
    mysql 为某个字段的值加前缀、去掉前缀
    查看>>
    mysql 主从
    查看>>
    mysql 主从 lock_mysql 主从同步权限mysql 行锁的实现
    查看>>
    mysql 主从互备份_mysql互为主从实战设置详解及自动化备份(Centos7.2)
    查看>>
    mysql 主从关系切换
    查看>>
    MYSQL 主从同步文档的大坑
    查看>>
    mysql 主键重复则覆盖_数据库主键不能重复
    查看>>
    Mysql 事务知识点与优化建议
    查看>>
    Mysql 优化 or
    查看>>
    mysql 优化器 key_mysql – 选择*和查询优化器
    查看>>
    MySQL 优化:Explain 执行计划详解
    查看>>
    Mysql 会导致锁表的语法
    查看>>
    mysql 使用sql文件恢复数据库
    查看>>
    mysql 修改默认字符集为utf8
    查看>>
    Mysql 共享锁
    查看>>