【H.264/AVC视频编解码技术详解】四. 常见H.264视频编解码器(X264和JM)及参考软件JM的下载与编解码
《H.264/AVC视频编解码技术详解》视频教程已经在“CSDN学院”上线,视频中详述了H.264的背景、标准协议和实现,并通过一个实战工程的形式对H.264的标准进行解析和实现,欢迎观看!
“纸上得来终觉浅,绝知此事要躬行”,只有自己按照标准文档以代码的形式操作一遍,才能对视频压缩编码标准的思想和方法有足够深刻的理解和体会!
链接地址:H.264/AVC视频编解码技术详解
本节视频免费
常见H.264视频编解码器(X264和JM)及参考软件JM的下载与编解码
我们已经知道,H.264是一种视频压缩标准,其只规定了符合标准的码流的格式,以及码流中各个语法元素的解析方法。H.264标准并未规定编码器的实现或流程,这给了不同的厂商或组织在编码实现方面极大的自由度,并产生了一些比较著名的开源H.264编解码器工程。其中H.264编码器中最著名的两个当属JM和X264,这二者都属于H.264编码标准的一种实现形式。
- JM:JM通常被认为是H.264标准制定团队所认可的官方参考软件,基本实现了H.264标准的全部特征。JM在运行时的运算过程较为复杂,而且没有采用汇编优化等加速方法,因此运行速度较慢,很难达到实时编解码。通常主要用于编解码技术的科学研究领域,目前(2016.7)最新版本为JM 19。
- X264:X264是另一个著名的H.264开源视频编码器,由开源组织VideoLan开发制定。X264是目前企业界应用最为广泛的开源编码器,主要因为X264相对于JM进行了大量的优化与简化,使其运行效率大幅提高,主要有对编码代价计算方法的简化以及添加了MMX、SSE汇编优化等部分。虽然编码的质量在某些情况下相对于JM略有下降,但是已无法掩盖其在可应用性,尤其是实时编码方面无可比拟的优势。
这里我们首先从JM开始入手来研究H.264标准的原理。JM的源代码的下载地址为:http://iphome.hhi.de/suehring/tml/download/。如下图所示:
在目录中,可以选择最新版的jm19.0,也可从old_jm中选择历史版本,如选择jm8.6版本。下载后解压,可见其中包含lencod、ldecod等工程:
在工程目录的bin文件夹中包含了多个后缀名为.cfg的配置文件:
- encoder_baseline.cfg:用于实现H.264基准档次的编码的配置文件;
- encoder_main.cfg:用于实现H.264主要档次的编码的配置文件;
- encoder_extended.cfg:用于实现H.264扩展档次的编码的配置文件;
将encoder_baseline.cfg复制一份并重命名为encoder.cfg,如此编码器便自动将该配置文件作为编码器的默认配置。修改配置文件为:
##########################################################################################
# Files
##########################################################################################
InputFile = "akiyo_qcif.yuv" # Input sequence, YUV 4:2:0
InputHeaderLength = 0 # If the inputfile has a header, state it's length in byte here
StartFrame = 0 # Start frame for encoding. (0-N)
FramesToBeEncoded = 10 # Number of frames to be coded
FrameRate = 30 # Frame Rate per second (1-100)
SourceWidth = 176 # Image width in Pels, must be multiple of 16
SourceHeight = 144 # Image height in Pels, must be multiple of 16
TraceFile = "trace_enc.txt"
ReconFile = "test_rec.yuv"
OutputFile = "test.264"##########################################################################################
# Encoder Control
##########################################################################################
ProfileIDC = 66 # Profile IDC (66=baseline, 77=main, 88=extended)
LevelIDC = 30 # Level IDC (e.g. 20 = level 2.0)IntraPeriod = 1 # Period of I-Frames (0=only first)
IDRIntraEnable = 0 # Force IDR Intra (0=disable 1=enable)
......
将待编码的YUV序列与encoder.cfg文件置于lencod.exe生成的目录下,执行编码程序,即可生成符合H.264标准的码流:
【H.264/AVC视频编解码技术详解】四. 常见H.264视频编解码器(X264和JM)及参考软件JM的下载与编解码相关推荐
- 【H.264/AVC视频编解码技术详解】三. H.264简介
<H.264/AVC视频编解码技术详解>视频教程已经在"CSDN学院"上线,视频中详述了H.264的背景.标准协议和实现,并通过一个实战工程的形式对H.264的标准进行 ...
- H.264/AVC视频编解码技术详解-殷汶杰-专题视频课程
H.264/AVC视频编解码技术详解-46880人已学习 课程介绍 H.264/AVC是目前业界应用为广泛的视频压缩编码标准,包含了先进而且较为成熟的视频编码技术.本课程将从原理.标准 ...
- 【H.264/AVC视频编解码技术详解】二十三、帧间预测编码(1):帧间预测编码的基本原理
<H.264/AVC视频编解码技术详解>视频教程已经在"CSDN学院"上线,视频中详述了H.264的背景.标准协议和实现,并通过一个实战工程的形式对H.264的标准进行 ...
- 【H.264/AVC视频编解码技术详解】十九:熵编码算法(5)——H.264的CABAC(上):语法元素的二值化方法...
<H.264/AVC视频编解码技术详解>视频教程已经在"CSDN学院"上线,视频中详述了H.264的背景.标准协议和实现,并通过一个实战工程的形式对H.264的标准进行 ...
- H.264/AVC视频编解码技术详解 第一章 视频信息与压缩编码
H.264/AVC视频编解码技术详解系列笔记 是对 H.264/AVC视频编解码技术详解 课程的学习 文章目录 人与世界的交互 视频信号的表示方法 视频压缩编码 视频信息为什么可以被压缩? 视频压缩编 ...
- 【H.264/AVC视频编解码技术详解】七、 熵编码算法(1):基础知识
<H.264/AVC视频编解码技术详解>视频教程已经在"CSDN学院"上线,视频中详述了H.264的背景.标准协议和实现,并通过一个实战工程的形式对H.264的标准进行 ...
- 【H.264/AVC视频编解码技术详解】二. 主流视频编码标准的发展
<H.264/AVC视频编解码技术详解>视频教程已经在"CSDN学院"上线,视频中详述了H.264的背景.标准协议和实现,并通过一个实战工程的形式对H.264的标准进行 ...
- 【H.264/AVC视频编解码技术详解】八、 熵编码算法(2):H.264中的熵编码基本方法、指数哥伦布编码
<H.264/AVC视频编解码技术详解>视频教程已经在"CSDN学院"上线,视频中详述了H.264的背景.标准协议和实现,并通过一个实战工程的形式对H.264的标准进行 ...
- 【H.264/AVC视频编解码技术详解】一. 视频信息与压缩编码
<H.264/AVC视频编解码技术详解>视频教程已经在"CSDN学院"上线,视频中详述了H.264的背景.标准协议和实现,并通过一个实战工程的形式对H.264的标准进行 ...
最新文章
- laravel 如何自定义全局的方法/类
- php和js中,utf-8编码转成base64编码
- 集成显卡+独立显卡实现三屏显示
- L2-003 月饼-团体程序设计天梯赛GPLT
- C++:迭代器(STL迭代器)iterator详解
- [导入].net分布式事务例子
- javascript --- Sortable一个拖拽的接口
- mysql 不用缓存_mysql有自己的缓存机制,为什么还要用redis和memcac? 爱问知识人
- python交互模式下tab键自动补全
- 批处理脚本:判断进程是否存在
- python画条形图-python绘制条形图方法代码详解
- jQuery→简介引入、jQuery类数组对象$()与DOM对象、各种选择器、attr()、html() 、text()、val()
- xss.haozi.me在线靶机挑战
- 比特大陆裁员潮据称已波及整个BCH开发团队
- linux c++ 线程支持 多核应用,linux C++多线程服务端开发
- 1400㎡,联诚发龙腾LED透明屏点燃五月天新加坡演唱会!
- 介绍汽车美容预约小程序app开发
- 攻防世界shanghai
- 云栖科技评论84期:英国零售商找错了“替罪羊”...
- 物流管理MATLAB,《Matlab与物流管理实验》实验教学大纲
热门文章
- 民航计算机初级职称有哪些,各系列专业职称资格分类一览表
- Hive UDF自定义函数(临时和永久的区别)
- 使用 PowerDesigner 生成 表结构图
- 计算机组原理ppt,计算机组原理1.ppt
- 【DBC专题】-7-在DBC中创建一个Signal Group信号组
- 计算机网络安全-----身份认证
- 用 Cloudreve 快速建设基于OSS的个人云盘
- C/C++描述 LeetCode 周赛 第199场周赛(阿里云专场)
- java kit 9_Java SE Development Kit 9
- nginx rewrite 配置说明与参数详解