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

    你可能感兴趣的文章
    Nacos注册Dubbo(2.7.x)以及namespace配置
    查看>>
    Nacos注册中心有几种调用方式?
    查看>>
    nacos注册失败,Feign调用失败,feign无法注入成我们的bean对象
    查看>>
    nacos源码 nacos注册中心1.4.x 源码 nacos源码如何下载 nacos 客户端源码下载地址 nacos discovery下载地址(一)
    查看>>
    nacos源码 nacos注册中心1.4.x 源码 spring cloud alibaba 的discovery做了什么 nacos客户端是如何启动的(二)
    查看>>
    nacos源码 nacos注册中心1.4.x 源码 如何注册服务 发送请求,nacos clinet客户端心跳 nacos 注册中心客户端如何发送的心跳 (三)
    查看>>
    Nacos源码分析:心跳机制、健康检查、服务发现、AP集群
    查看>>
    nacos看这一篇文章就够了
    查看>>
    Nacos简介、下载与配置持久化到Mysql
    查看>>
    Nacos简介和控制台服务安装
    查看>>
    Nacos管理界面详细介绍
    查看>>
    Nacos编译报错NacosException: endpoint is blank
    查看>>
    nacos自动刷新配置
    查看>>
    nacos运行报错问题之一
    查看>>
    Nacos部署中的一些常见问题汇总
    查看>>
    NACOS部署,微服务框架之NACOS-单机、集群方式部署
    查看>>
    Nacos配置Mysql数据库
    查看>>
    Nacos配置中心中配置文件的创建、微服务读取nacos配置中心
    查看>>
    Nacos配置中心集群原理及源码分析
    查看>>
    nacos配置在代码中如何引用
    查看>>