思科
思科系统(英语:Cisco Systems, Inc.)是一间跨国际综合技术企业,总部设于加州硅谷;思科开发、制作和售卖网络硬件、软件、通信设备等高科技产品及服务,并透过子公司(例子有OpenDNS、Webex、Jasper)打入其他科技市场,比如物联网、域名安全、能源管理。公司成立于加州。
OpenH264
- 来源:
- 2013年10月30日,思科系统的Rowan Trollope宣布思科将以简化BSD许可证发布一个名为OpenH264的H.264视频编解码器的二进制文件和源代码,并为使用思科预编译二进制文件的任何软件项目向MPEG
LA支付所有使用费(因此思科的OpenH264的“二进制文件”为免费使用);不过,使用思科提供的源代码而非二进制文件的任何软件项目都有法律责任自行向MPEG LA支付所有著作权费用。- 思科于2013年12月9日发布了OpenH264的源代码。
- 2013年10月30日,思科的免费版公布当天,Mozilla的布兰登·艾克的写道,未来版本的Firefox将使用思科的二进制文件,在平台编解码器不可用时为Firefox提供H.264支持。2014年10月,Mozilla发布Firefox 33,这是首个支持OpenH264的正式版本。
- OpenH264的设计面向实时编码和解码视频的应用程序,例如WebRTC。
- 项目官网:https://www.openh264.org/
- git 地址:https://github.com/cisco/openh264
- 官方文档介绍:
- 解码:https://github.com/cisco/openh264/wiki/UsageExampleForDecoder
- 编码:https://github.com/cisco/openh264/wiki/UsageExampleForEncoder
- wiki:https://github.com/cisco/openh264/wiki
OpenH264 编码特性介绍
- 编码器特性:
- 支持Constrained Baseline Profile到5.2级别(最大帧大小为36864宏块)
- 任意分辨率支持,不限于16x16的倍数
- 具有自适应量化或恒定量化的速率控制
- 多种切片选项
- 多线程自动用于多切片
- 支持高达4层的时序可伸缩性
- 单一输入的4种空间分辨率的Spatial Simulcast
- 长期参考帧(LTR)
- 内存管理控制操作(MMCO)
- 引用图片列表修改
- 使用LTR和/或3-4时序层时的多个参考帧
- 定期和按需插入即时解码刷新(IDR)帧
- 动态更改比特率、帧率和分辨率
- Annex B字节流输出
- YUV 4:2:0平面输入
- 解码器特性:
- 支持Constrained Baseline Profile到5.2级别(最大帧大小为36864宏块)
- 任意分辨率支持,不限于16x16的倍数
- 所有切片使用单线程
- 长期参考帧(LTR)
- 内存管理控制操作(MMCO)
- 引用图片列表修改
- 序列参数集(SPS)中指定的多个参考帧
- Annex B字节流输入
- YUV 4:2:0平面输出
应用OpenH264编解码注意事项
- 操作系统支持
- Windows 64位和32位
- Mac OS X 64位和32位
- Linux 64位和32位
- Android 64位和32位 iOS
- 64位和32位 Windows Phone 32位
- 处理器支持
- 英特尔x86,可选MMX/SSE/AVX
- ARMv7,可选NEON;
- AArch64,可选NEON 使用C/C++回退函数的任何架构
- 构建库
- 需要安装NASM以进行汇编代码,建议版本2.07或以上
- 对于Windows Phone的ARM汇编,需要gas-preprocessor
- Android构建需要安装Android SDK和NDK,并导出ANDROID_SDK/tools到PATH
- iOS构建可使用Xcode项目文件或make命令行构建系统
- Windows构建使用MinGW,或通过设置路径使用Visual Studio编译器 Windows
- Phone构建遵循Windows构建的指令,但使用OS=msvc-wp,需要gas-preprocessor
- 通用构建指令
- 在主项目目录中使用make命令进行构建,可以指定ARCH和其他参数
- 已知问题
- 分辨率超过3840x2160时编码器出错
- 压缩帧大小超过未压缩大小的一半时编码器出错
- 压缩帧大小超过1MB时解码器出错
- 编码器RC需要启用帧跳过才能达到目标比特率
OpenH264 对比 x264
- 开发背景和许可
- OpenH264:由Cisco开发,专为实时应用程序如WebRTC设计,并在BSD许可下开源。这意味着它可以免费使用,且不会涉及MPEG-LA的H.264专利授权费用。
- x264:是一个成熟的开源编解码器,广泛用于视频编码,遵循GNU GPL许可。x264不是一个免费的解决方案,因为它可能需要用户支付MPEG-LA的专利费用。
- 性能和效率
- OpenH264:优化了实时编码,特别适合需要快速编码和较低延迟的应用。
- x264:提供了多种编码模式,包括非常高效的多通道编码,适合离线编码任务,用户可以等待较长的编码时间以获取更高质量的输出。
- 特性集
- OpenH264:
- 支持H.264的Constrained Baseline Profile至5.2级别。
- 提供了实时编码所需的关键功能,如多线程、长期参考帧等。
- 专注于提供足够的功能以满足实时通信的需求。
- x264:
- 支持完整的H.264/AVC标准,包括所有配置文件和级别。
- 提供高级特性,如心理视觉优化、去块滤波器、多参考帧编码等。
- 支持两遍编码(双通道编码)以优化压缩效率。
- 应用场景
- OpenH264:更适合实时视频通信、直播等需要快速编码的场景。
- x264:适用于视频编辑、电影制作、DVD/蓝光视频编码等需要高压缩率和视频质量的应用。
- 社区和支持
- OpenH264:由Cisco提供支持,拥有活跃的开源社区,适合需要特定实时编解码功能的开发者。
- x264:拥有庞大的用户和开发者社区,提供广泛的文档和论坛支持。
- 兼容性
- OpenH264:由于是开源的,易于集成到各种平台和应用中,特别是那些需要避免专利授权费用的平台。
- x264:广泛兼容,支持多种操作系统和平台,但由于许可问题,某些集成可能会有限制。
- 构建和使用
- OpenH264:提供了跨平台的构建脚本,易于在不同操作系统上构建和使用。
- x264:同样提供了跨平台支持,但构建过程可能需要更多的配置。