H264视频编码原理基础分析

引言

  • 本文章旨在记录本人学习有关音视频时对H264码流视频编解码原理部分的内容,如有不对请留言指出

1、音视频封装格式

​ 我们一般下载或者播放的视频文件常见都是以 xxx.mp4、xxx.flv、xxx.mkv等标识结尾,其实这都是对视频+音频的进一步封装,详见如下视频文件的经典图:

在这里插入图片描述

通过上图我们知道一个视频需要播放起来能看,经过的步骤

①解封装格式→ ②视频解码 → ③音视频同步,

H264视频压缩数据就在视频解封装格式后这步。所以单纯的想要播放有画面的视频只需要拿到xxx.h264文件即可。

通过FFmpeg工具即可直接得到一个视频的h264视频压缩文件。

FFmpeg 工具抽取视频的H264文件命令:

1)mp4视频文件抽取H264视频文件命令:
ffmpeg.exe -i 源视频名.mp4 -codec copy -bsf: h264_mp4toannexb -f h264 输出视频文件名.h264
(2)播放H264文件
ffplay.exe (h264文件名).h264

在这里插入图片描述
在这里插入图片描述

2、H264介绍

​ 关于H264的由来介绍可参考以下几篇文章,就不过多记录了

​ 1)H264百度百科:https://baike.baidu.com/item/H.264/1022230?fromtitle=H264&fromid=7338504&fr=aladdin

​ 2)H264由来介绍:

3、H264文件分析

​ 首先我们还是用FFmpeg工具将之前抽取到的视频压缩H264文件进一步抽取出原始视频数据 yuv文件:

1)H264文件抽取yuv视频文件命令:
ffmpeg.exe -i out.h264 -s 544x960 -pix_fmt yuv420p out.yuv
解释:
out.h264:(h264源文件名)
544x960:(视频分辨率)
yuv420p:(编码格式)
out.yuv: (输出的yuv文件名)
(2)播放yuv文件命令:
ffplay.exe -video_size 544x960 -i out.yuv
解释:
544x960:(视频分辨率)
out.yuv:(yuv文件名)

在这里插入图片描述

​ 然后看个文件大小数据对比:

源视频 【2.79MB】←pk→ H264文件【2.65MB】 ←pk→ yuv【454MB】文件

​ 裸数据从454MB直接压缩到2.65MB,直接压缩了差不多200倍,逆天了。真的是极大的节约了存储空间

在这里插入图片描述

H264说到底就是对视频数据进行压缩的技术,主要采用了以下几种方法对视频数据进行压缩

  • 帧内预测压缩,解决的是空域数据冗余问题
  • 帧间预测压缩(运动估计与补偿),解决的是时域数据冗徐问题
  • 整数离散余弦变换(DCT),将空间上的相关性变为频域上无关的数据然后进行量化
  • CABAC压缩

​ 经过压缩后的帧分为:I帧,P帧、B帧

  • I帧:关键帧,采用帧内压缩技术
  • P帧:向前参考帧,在压缩时,只参考前面已经处理的帧。采用帧音压缩技术
  • B帧:双向参考帧,在压缩时,它即参考前而的帧,又参考它后面的帧。采用帧间压缩技术

​ 除了I/P/B帧外,还有图像序列GOP

​ GOP:两个I帧之间是一个图像序列,在一个图像序列中只有一个I帧。如下图所示:

在这里插入图片描述

4、H264压缩技术过程

…由于此压缩技术过程篇幅过长,可看此篇记录文章

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逆流的剑客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值