H.264——使用H.264视频编解码器JM进行YUV图像序列的编解码

常见H.264视频编码器

在这里插入图片描述
X264(只有编码没有解码)是由Video LAN组织制作的,这个组织还制作了一款著名的开源媒体播放器VLC

JM的参考代码托管在hhi组织(德国的研究机构),我们可以在这个机构中获取JM最新的源代码。
最近经典的版本是JM8.6,虽然没有包含最新的内容,但在开始阶段以及足够我们进行学习

JM基础配置

下载解压后用Visual Studio打开tml.sln

  • ldecod——解码器
  • lencod——编码器

在这里插入图片描述
将lencod设为启动项目
然后点击下方的属性,修改输出目录及工作目录
在这里插入图片描述

在这里插入图片描述
接下来重新生成项目
在这里插入图片描述
在这里插入图片描述
在bin目录下已生成lencod.exe
在这里插入图片描述

准备一个YUV视频

首先录一段视频,再使用ffmpeg将其转为yuv420p

ffmpeg -i srcVideo.mp4 -ss 00:00:00 -t 10 -s 1920x1080 -pix_fmt yuv420p srcVideo.yuv

该命令的作用是把所在路径下的srcVideo.mp4文件从第20秒开始,往下10秒,即20~30秒之间,截取这段时间的视频,把它转换为帧宽度为640,帧高度为272,像素格式为yuv420p的YUV文件:srcVideo.yuv。

然后放到bin目录下

JM实现编码

修改配置文件

在工作目录下,提供了三个config文件,表示三个profile的配置

在这里插入图片描述
本着由简单到复杂的原则,选择encoder_baseline.cfg,复制一份,修改文件名为encoder.cfg

用notepad打开
这个文件,是我们在编码过程中所需要的一些配置信息
修改文件名
在这里插入图片描述
后面头的长度和StartFrame我们都保持不变。

FrameToBeEncoded表示需要编码的帧数,3帧有点少,我们改为10帧
后面的帧率日志文件输出文件等都保持不变

Encoder Control

在这里插入图片描述

  • ProfileIDC——选择的profile
  • IntraPeriod——若为0则只有第一帧为I帧,这里设置为1
  • IDRIntraEnable——是否强制所有I帧为IDR关键帧,0关闭,1开启.

编译运行

在这里插入图片描述
这就是编码过程
在这里插入图片描述
编码完毕
在这里插入图片描述
上图可以看到,第一帧为IDR关键帧,其余都是I帧。总共编了10帧

在这里插入图片描述
这里是参数

在这里插入图片描述

  • test.264,就是生成的H.264码流文件
  • test_rec.yuv是编码过程中重建的yuv图像
  • trace_enc.txt是日志文件,配置文件中关闭则文件没有内容

通过YUVPlayertest_rec.yuv同源yuv进行比较,就可以看出失真所在
在这里插入图片描述

以上就是通过JM对YUV格式的图像序列进行编码,生成一个符合H.264标准的码流的过程

JM实现解码

在这里插入图片描述
ldecod设置为启动项目,然后修改设置
和上面一样,将输出目录和工作目录设置为$(ProjectDir)bin

接着打开解码器的配置文件decoder.cfg
在这里插入图片描述
检查需要解码的码流文件、输出文件以及参考帧文件
由于是和编码的时候设置一致,此时就不需要修改

在这里插入图片描述

然后将解码的配置文件写道ldecod的命令参数中

依次点击生成——清理解决方案
然后运行

在这里插入图片描述
解码完成
生成test_dec.yuv
在这里插入图片描述

如何判断编码解码是否正确

将解码后的图像与编码时重建的图像进行比对
只有这两个是一致的,那么我们所做的编解码才是匹配的

在这里插入图片描述
从第一帧一直比对到最后一帧,全部相同。
则编解码的过程是正确的,即编解码匹配

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Spark!

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

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

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

打赏作者

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

抵扣说明:

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

余额充值