JM编码器的介绍
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
1 概述 (6)
2 JM编码器的介绍 (7)
2.1 JM编码器主要流程 (7)
2.2 JM编码在VC中编译过程 (9)
3 JM的编解码过程 (11)
3.1 JM的编解码过程 (11)
3.1.1 JM编码过程 (11)
3.1.2 JM解码过程 (12)
3.2 JM的输出文件格式 (13)
3.2.1 基于比特流文件格式 (13)
3.2.2 RTP文件格式 (15)
3.3 JM的视频质量评估 (16)
3.4 JM的文件接口................................................................................................................. 错误!未定义书签。
4 问题解答 (18)
4.1 JM能在linux下运行么? (18)
4.2 JM编码器对数据丢失的处理? (18)
4.3 在下载的flv中为什么会只有15fps? (18)
4.4 怎么设置JM输出为固定码速率? (19)
5 参考资料 (20)
图目录
图2-1 JM编码器主函数部分 (8)
图2-2 JM的Encode_one _frame函数部分 (9)
图2-3 Project Setting (10)
图3-1 JM编码参数 (11)
图3-2 JM编码结果1 (12)
图3-3 JM编码结果2 (12)
图3-4解码结果 (13)
图3-5 NAL内部防竞争机制 (14)
图3-6 JM编码后数据-1 (14)
图3-7基于比特流的文件格式 (14)
图3-8 RTP的格式 (15)
图3-9 RTP负载头部 (15)
图3-10 PSNR求解结果 (17)
图3-11接口文件.................................................................................................................. 错误!未定义书签。
表目录表3-1 RTP的type值 (15)
JM编码器
关键词:JM编码器、JM安装、视频评估
摘要:本报告主要对JM编码器做了比较详细的介绍,包括其主要作用、安装和使用过程、编解码过程及其文件输出格式,并对其自带的视频的质量评估作一个简单的介绍,并对整个编解码的过程给出了实例分析。
缩略语清单:
缩略语英文全名中文解释
CBR Constant bit rate 固定比特速率
FLV Flash video Flash视频
NAL Network abstract layer 网络抽象层
NALU Network abstract layer unit 网络抽象层单元
PSNR Peak signal to noise ratio 峰值信噪比
RTP Real-time Transport protocol 实时传输协议
1 概述
JM编码程序是H.264的官方测试源码,由德国hhi研究所负责开发[1]。起始时间是2002年2月。JM 实现了H.264所有的特性,几乎所有的学术研究的算法都是在JM基础上实现并和JM进行比较。但其程序结构冗长,只考虑引入各种新特性以提高编码性能,忽视了编码复杂度,其编码复杂度极高,不宜实用。本报告从JM编码器的安装和使用过程、JM的编码流程、JM的文件输出、JM中自带的视频评估策略等方面对JM编解码器进行了详细的介绍,并给出了实例分析。
本报告的章节结构如下:
第2章JM编码器的介绍介绍JM编码程序主要流程和在VC下编译过程。
第3章JM的编解码过程结合实例对JM程序的编解码过程、文件输出格式、视频评估机制的介绍。
第4章参考资料列出报告中引用的参考资料。
2 JM编码器的介绍
JM编码器是H.264官方发布的测试源码,其实现了H.264建议的所有的特性,所以学术研究的算法都是在JM的基础上进行实现并和JM源进行比较,得出算法的优缺点。但是JM程序在编写的时候就没有考虑效率,只是考虑引入各种新特性以提高编码的性能而忽视了整个程序的复杂度,让JM的编码复杂度极高、运行速度相当慢。所以JM编码器只适用于学术研究,没有实用效果。
2.1 JM编码器主要流程
整个JM编码源就是一个总工程tml.project,其下面又包含两个子工程lencod.project和ldecod.project。打开总工程tml.pjt中可以看到两个子工程,分别编译生成lencod.exe和ldecod.exe两个可执行文件。当然lencod.project和ldecod.project这两个子工程也是完全独立,各自包含各自的C文件、主函数文件、H头文件、配置文件,是可以独立进行编译的。
JM编码器采用的是标准的C代码格式,可以在windows、linux、android等环境中进行编译,而且JM 编码器的基本参数的选择采用配置文件格式进行提供,对编译好的JM程序进行参数修改时,只需要在配置文件中进行修改即可,不需要重新编译。JM提供了baseline、main、extended三种不同级别的配置文件,里面的基本参数的参考值也已经提供。详细的配置文件见附录A。
下面是JM编码器的主要的流程图:见图2-1、图2-2。
图 2-1JM编码器主函数部分
注:
1.这里主函数部分省略了一些函数的调用和条件判断、释放空间,判断帧类型影响不大的部分。
2.率失真后的申请两帧图像的空间:一个是编码帧,一个是参考帧。
3.在快速运动估计后面的阈值是为了在运动估计时给出一个判断条件,小于阈值则进行快速运动
估计,大于则放弃。