FFmpeg与H.265概述

  • H.265
  • 编码分类
  • 编码原理
  • 帧内压缩
  • 帧间压缩
  • FFmpeg
  • 参考链接


H.265

    H.265是ITU-T VCEG继H.264之后所制定的新的视频编码标准。H.265标准围绕着现有的视频编码标准H.264,保留原来的某些技术,同时对一些相关的技术加以改进。新技术使用先进的技术用以改善码流、编码质量、延时和算法复杂度之间的关系,达到最优化设置。具体的研究内容包括:提高压缩效率、提高鲁棒性和错误恢复能力、减少实时的时延、减少信道获取时间和随机接入时延、降低复杂度等。

编码分类

IOS软解H265 h265硬解还是软解效果好_帧间压缩 软件编码(简称软编):使用CPU进行编码。
IOS软解H265 h265硬解还是软解效果好_帧间压缩 硬件编码(简称硬编):不使用CPU进行编码,使用显卡GPU,专用的DSP、FPGA、ASIC芯片等硬件进行编码。
优缺点
IOS软解H265 h265硬解还是软解效果好_帧间压缩 软编:实现直接、简单,参数调整方便,升级易,但CPU负载重,性能较硬编码低,低码率下质量通常比硬编码要好一点。
IOS软解H265 h265硬解还是软解效果好_帧间压缩

编码原理

对视频执行编码操作后,原始视频数据会被压缩成三种不同类型的视频帧: I帧,P帧,B帧。
IOS软解H265 h265硬解还是软解效果好_帧间压缩 I帧:关键帧.完整编码的帧.可以理解成是一张完整画面,不依赖其他帧
IOS软解H265 h265硬解还是软解效果好_帧间压缩 P帧:参考前面的I帧或P帧,即通过前面的I帧与自己记录的不同的部分可以形成完整的画面.因此,单独的P帧无法形成画面.
IOS软解H265 h265硬解还是软解效果好_帧间压缩 B帧:参考前面的I帧或P帧以及后面的P帧
注: I帧的压缩率是7(跟JPG差不多),P帧是20,B帧可以达到50. 但是iOS中一般不开启B帧,因为B帧的存在会导致时间戳同步较为复杂.

帧内压缩

    当压缩一帧图像时,仅考虑本帧的数据而不考虑相邻帧之间的冗余信息,这实际上与静态图像压缩类似。帧内一般采用有损压缩算法,由于帧内压缩是编码一个完整的图像,所以可以独立的解码、显示。帧内压缩一般达不到很高的压缩,跟编码jpeg差不多。

帧间压缩

P帧与B帧的压缩算法
    相邻几帧的数据有很大的相关性,或者说前后两帧信息变化很小的特点。也即连续的视频其相邻帧之间具有冗余信息,根据这一特性,压缩相邻帧之间的冗余量就可以进一步提高压缩量,减小压缩比。帧间压缩也称为时间压缩(Temporal compression),它通过比较时间轴上不同帧之间的数据进行压缩。帧间压缩一般是无损的。帧差值(Frame differencing)算法是一种典型的时间压缩法,它通过比较本帧与相邻帧之间的差异,仅记录本帧与其相邻帧的差值,这样可以大大减少数据量。

FFmpeg

    FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。
我们可以根据H.265的编码标准,使用FFmpeg库对视频进行encode和decode

参考链接

(推荐阅读)H264, H265硬件编解码基础及码流分析H.264码流结构 (H.264 Data Structure)(强烈推荐)移动端音视频从零到上手