Advertisement

FFmpeg 视频编解码基本概念

阅读量:

SPS

H264 Profile

对视频压缩特性的描述,Profile越高,就说明采用了越高级的压缩特性

  • H264 Profile(一)
    在这里插入图片描述

  • H264 Profile(二)
    在这里插入图片描述

H264 Level

Level 是对视频的描述,Level 越高,视频的码率,分辨率、fps(帧率)越高
在这里插入图片描述

SPS重要参数

  • 分辨率相关
    在这里插入图片描述
    宏块默认 16 * 16

  • 帧相关

    • 帧数 :log2_max_frame_num_minus4
    • 参考帧数:max_num_ref_frames
    • 显示帧序号:pic_order_cnt_type
  • 帧率的计算
    framerate = (float)(sps-vui.vui_time_scale)/(float)(sps->vui.vui_num_units_in_tick)/2

PPS

在这里插入图片描述

Slice Header

  • 帧类型
  • GOP中解码帧序号
  • 预测权重
  • 滤波

H264分析工具

  • Elecard Stream Eye(付费)
  • CodecVisa(付费)
  • VideoEye雷神开发的功能
  • H.264分析器

参考资料

在这里插入图片描述

H264编码

  • 打开编码器
  • 转换NV12到YUV420P
  • 准备编码数据 AVFrame
  • H264编码

H264 参数详解

  • 预设值
  • 帧相关参数
  • 码流的控制
  • 编码分析
  • 输出

预设值

  • preset fast/slow :快速/慢速编码,编码快质量会降低,编码慢质量较好
  • tune :编码质量,电影、动画、图片

帧相关的参数

  • keyint:GOP_SIZE,默认250组成一个gop
  • min-keyint:在一组帧中最小插入I的间隔,场景切换时当图像有很明显变化时自动插入 I 帧
  • scenecut :设置临界值,根据临界值判断是否有场景切换
  • bframes:B帧数量,一般为 3 帧
  • ref:参考帧数量,解码器的缓冲区可存放的参考帧数量
  • no-deblock:不使用滤波器去块平滑处理。解码时会进行预测,预测结果解码出来的数据会有块(马赛克),就需要进行去块化
  • deblock:使用去块话滤波器平滑处理
  • no-cabac:是否使用cabac 进行熵编码,使用cabac 编码压缩比会更高

流控

  • Qp:设置量化器参数,关注量化器,比crf码流大且与bitrate/crf互斥
  • Crf:关注视频质量,默认是23, 数越低越好
  • Bitrate:关注平均码流,无法控制质量,码流越大,视频质量越好
  • Qmin:最小量化器,默认10
  • Qmax:最大量化器,默认51
  • Qpstep:两帧之间量化器的最大变化,默认为4

编码分析

  • Partitions:宏块划分p8 8、b8 8、i8 8、i4 4
  • Me运动评估算法:砖石算法、六边型算法那

输出

  • SAR 设置输出的宽高比
  • fps 帧率
  • level

参考资料

在这里插入图片描述

全部评论 (0)

还没有任何评论哟~