常见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视频编解码器(X264和JM)及参考软件JM的下载与编解码相关推荐

  1. 【H.264/AVC视频编解码技术详解】四. 常见H.264视频编解码器(X264和JM)及参考软件JM的下载与编解码

    <H.264/AVC视频编解码技术详解>视频教程已经在"CSDN学院"上线,视频中详述了H.264的背景.标准协议和实现,并通过一个实战工程的形式对H.264的标准进行 ...

  2. H.264视频编解码器与H.265编解码器区别

    H.264编解码器与H.265编解码器介绍: H.264编解码和H.265编解码都是视频编码的格式.相比H.264,H.265能在有限带宽下传输更高质量的网络视频,也就是说只需原先H.264编码的一半 ...

  3. 四. H.264视频编解码器(X264和JM)及参考软件JM的下载与编解码

    实H.264是一种视频压缩标准,其只规定了符合标准的码流的格式,以及码流中各个语法元素的解析方法. H.264标准并未规定编码器的实现或流程,产生了一些比较著名的开源H.264编解码器工程.其中H.2 ...

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

    目录 常见H.264视频编码器 JM基础配置 准备一个YUV视频 JM实现编码 修改配置文件 Encoder Control 编译运行 JM实现解码 如何判断编码解码是否正确 常见H.264视频编码器 ...

  5. 【Android RTMP】RTMPDump 封装 RTMPPacket 数据包 ( 关键帧数据格式 | 非关键帧数据格式 | x264 编码后的数据处理 | 封装 H.264 视频数据帧 )

    文章目录 安卓直播推流专栏博客总结 一. x264 编码后的 H.264 数据帧 二. RTMP 协议中 关键帧 / 非关键帧 数据格式 说明 三. 判定 H.264 帧数据分隔符 四. 初始化 RT ...

  6. H.264视频的RTP有效负载格式 (RFC-3984)

    RFC文档链接 本备忘录的状态 略 摘要 本备忘录描述了ITU-T建议的H.264视频编解码器和技术上相同的ISO/IEC国际标准14496-10视频编解码器的RTP有效载荷格式.RTP有效载荷格式允 ...

  7. H.264 视频的 RTP 载荷格式

    本文是 IETF 的规范 RFC 6184 的一部分的翻译,该规范 地址.翻译这份文档,主要是为了编写一段用 RTP 传输 H.264 流的代码.本想在网上找一些文章完成任务了事的,但由于个人之前音视 ...

  8. 【Android RTMP】安卓直播推流总结 ( 直播服务器搭建 | NV21 图像采集 | H.264 视频编码 | PCM 音频采集 | AAC 音频编码 | RTMP 包封装推流 )

    文章目录 一. 安卓直播推流专栏博客总结 二. 相关资源介绍 三. GitHub 源码地址 四. 整体 Android 直播推流数据到服务器并观看直播演示过程 Android 直播推流流程 : 手机采 ...

  9. Windows 下令 OpenCV 支持 h.264 视频编码的方法

    引言 OpenCV 和 ffmpeg 修改 opencv_ffmepgdll 的步骤 安装 MinGW 编译 x264 编译 ffmpeg 生成 opencv_ffmpegdll 准备 生成 测试 结 ...

最新文章

  1. C# in depth 阅读笔记-- 委托
  2. 初学css list-style属性
  3. RAC环境在ASM上创建表空间出错ORA-569
  4. [机器学习-Sklearn]决策树学习与总结 (ID3, C4.5, C5.0, CART)
  5. 查看类的实现类mac_自定义类加载器实现热加载
  6. [高级软件调试方法] SoftProbe调试方法及实现
  7. SAP Open SQL
  8. pytdx 获取板块指数_板块指数指标详解 通达信源码指标
  9. swat weather 输入数据注意事项
  10. html取消select下拉,jquery取消选择select下拉框
  11. 简单高效的图片降噪方法
  12. 标签类目 知识图谱_短视频标签体系
  13. unity2D横版游戏教程10-场景控制
  14. 旺季选品逻辑:用数据思维找到潜力爆款
  15. 陀螺专访 | 元征科技CIO:疫情加速维修行业数字化进程
  16. DSN: Deep Subspace Clustering Networks
  17. flex布局交叉轴方向对齐方式详解
  18. 冷读术:瞬间抓住人心和操控人心的沟通技巧
  19. python量化策略——最简单的动量策略,简单趋势追踪策略
  20. 计算机辅助设计与制造专业课程,工程学院本科课程《计算机辅助设计与制造》教学大纲.PDF...

热门文章

  1. 面试:GET和POST两种基本请求方法有什么区别
  2. 大量的 TIME_WAIT 状态 TCP 连接,对业务有什么影响?
  3. 求职淡季成功跳槽大厂,他做对了这一件事!
  4. Spring Cloud Stream同一通道根据消息内容分发不同的消费逻辑
  5. 25岁社招进阿里,从电商到有赞新零售,他仅1年就打开了马云一直想做的新领域!
  6. c语言检测四个方向键盘输入,如何既检测鼠标单击又检测键盘输入
  7. java poi excel读写_JAVA-POI操作Excel读写
  8. python实现tcp通信_Python实现简易TCP通信程序
  9. opencv cuda使用笔记
  10. las数据转pcd并显示