Windows11编译openh264源码

介绍

openh264是一个开源的H.264编解码器项目,由思科系统公司(Cisco Systems)维护并贡献给开源社区。它是基于H.264/AVC(Advanced Video Coding)标准的,该标准广泛应用于视频压缩和传输领域。

openh264项目的目标是提供一个高质量、高性能的H.264编解码器实现,同时保持对标准的兼容性。它采用了优化的算法和实现技术,以提供高效的编码和解码性能。该项目还支持多种平台和操作系统,包括Windows、Linux、macOS、Android和iOS等。

openh264的特点:
帧率、SVC、LTR在openh264上都有实现,这几个特点在x264都没有实现,但考虑主要为RTC打造,编码质量较差,码控能力较差。

源码中 README关于 openh264 的特点介绍 如下。

Encoder Features
----------------
- Constrained Baseline Profile up to Level 5.2 (Max frame size is 36864 macro-blocks)
- Arbitrary resolution, not constrained to multiples of 16x16
- Rate control with adaptive quantization, or constant quantization
- Slice options: 1 slice per frame, N slices per frame, N macroblocks per slice, or N bytes per slice
- Multiple threads automatically used for multiple slices
- Temporal scalability up to 4 layers in a dyadic hierarchy
- Simulcast AVC up to 4 resolutions from a single input
- Spatial simulcast up to 4 resolutions from a single input
- Long Term Reference (LTR) frames
- Memory Management Control Operation (MMCO)
- Reference picture list modification
- Single reference frame for inter prediction
- Multiple reference frames when using LTR and/or 3-4 temporal layers
- Periodic and on-demand Instantaneous Decoder Refresh (IDR) frame insertion
- Dynamic changes to bit rate, frame rate, and resolution
- Annex B byte stream output
- YUV 4:2:0 planar input

Decoder Features
----------------
- Constrained Baseline Profile up to Level 5.2 (Max frame size is 36864 macro-blocks)
- Arbitrary resolution, not constrained to multiples of 16x16
- Single thread for all slices
- Long Term Reference (LTR) frames
- Memory Management Control Operation (MMCO)
- Reference picture list modification
- Multiple reference frames when specified in Sequence Parameter Set (SPS)
- Annex B byte stream input
- YUV 4:2:0 planar output

OpenH264的接口包括:

WelsCreateDecoder:通过这个接口可以获取解码器对象。

WelsCreateSVCEncoder:通过这个接口可以获取编码器对象。

WelsDestroyDecoder:当解码器对象不再使用时,调用这个接口来释放资源。

WelsDestroySVCEncoder:当编码器对象不再使用时,调用这个接口来释放资源。

WelsGetCodecVersion:通过这个接口可以获取OpenH264编解码器的版本信息。

WelsGetCodecVersionEx:通过这个接口可以获取OpenH264编解码器的详细版本信息。

在调用这些接口时,需要使用C++对象指针来访问对象的方法。对象的头文件在源码的codec\api\svc目录下的codec_api.h。

网址: https://github.com/cisco/openh264

编译过程

源码下载: git命令行下载 git clone git@github.com:cisco/openh264.git。源码里的README.md有详细的各个平台的编译介绍。
在这里插入图片描述
编译环境搭建: 在README.md里介绍windows平台推荐使用Cygwin编译工具,小编使用了已搭建的MinGW编译工具来完成编译过程。
在这里插入图片描述
使用MinGW编译: 双击MinGW安装目录下msys/1.0/msys.bat,在弹出的窗口 cd 到openh264源码位置,直接make即可生成h264dec.exeh264enc.exe两个编解码可执行文件和对应的库文件。
在这里插入图片描述
验证: 输入./h264enc.exe之后弹出命令参数使用说明,即代表编译成功,可进行下一步使用。
在这里插入图片描述

sln工程的生成

openh264提供了生成sln工程的方法,进入codec/build/win32/enc/目录下,利用vs2022直接打开,点击运行,在testbin目录里生成WelsEncoder.exe。
在这里插入图片描述
在testbin目录里编辑welsenc.cfg文件,改动对应的InputFileOutputFile到本地位置,根据个人测试需求改动对应的编码参数即可,
在这里插入图片描述

备注

  1. openh264解码编译过程类似编码过程。
  2. Cygwin编译工具的配置参考网上资料。
  3. 关于 Mac、Linux 平台下的编译过程可以根据 README 进行实验。

关于思科

思科(Cisco)是全球领先的网络解决方案供应商,其名字取自San Francisco(旧金山),那里有座闻名于世界的金门大桥。
思科依靠自身的技术和对网络经济模式的深刻理解,成为了网络应用的成功实践者之一。与此同时,思科正在致力于为无数的企业构筑网络间畅通无阻的“桥梁”,并用自己敏锐的洞察力、丰富的行业经验、先进的技术,帮助企业把网络应用转化为战略性的资产,充分挖掘网络的能量,获得竞争的优势。
详细介绍可以参考其网址:https://www.cisco.com/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Codec Conductor

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

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

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

打赏作者

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

抵扣说明:

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

余额充值