OpenH264 编解码器介绍

思科

思科系统(英语:Cisco Systems, Inc.)是一间跨国际综合技术企业,总部设于加州硅谷;思科开发、制作和售卖网络硬件、软件、通信设备等高科技产品及服务,并透过子公司(例子有OpenDNS、Webex、Jasper)打入其他科技市场,比如物联网、域名安全、能源管理。公司成立于加州。

OpenH264

  1. 来源
  • 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。
  1. 项目官网:https://www.openh264.org/
    在这里插入图片描述
  2. git 地址:https://github.com/cisco/openh264
    在这里插入图片描述
  3. 官方文档介绍
  • 解码:https://github.com/cisco/openh264/wiki/UsageExampleForDecoder
  • 编码:https://github.com/cisco/openh264/wiki/UsageExampleForEncoder
  • wiki:https://github.com/cisco/openh264/wiki

OpenH264 编码特性介绍

  1. 编码器特性:
  • 支持Constrained Baseline Profile到5.2级别(最大帧大小为36864宏块)
  • 任意分辨率支持,不限于16x16的倍数
  • 具有自适应量化或恒定量化的速率控制
  • 多种切片选项
  • 多线程自动用于多切片
  • 支持高达4层的时序可伸缩性
  • 单一输入的4种空间分辨率的Spatial Simulcast
  • 长期参考帧(LTR)
  • 内存管理控制操作(MMCO)
  • 引用图片列表修改
  • 使用LTR和/或3-4时序层时的多个参考帧
  • 定期和按需插入即时解码刷新(IDR)帧
  • 动态更改比特率、帧率和分辨率
  • Annex B字节流输出
  • YUV 4:2:0平面输入
  1. 解码器特性:
  • 支持Constrained Baseline Profile到5.2级别(最大帧大小为36864宏块)
  • 任意分辨率支持,不限于16x16的倍数
  • 所有切片使用单线程
  • 长期参考帧(LTR)
  • 内存管理控制操作(MMCO)
  • 引用图片列表修改
  • 序列参数集(SPS)中指定的多个参考帧
  • Annex B字节流输入
  • YUV 4:2:0平面输出

应用OpenH264编解码注意事项

  1. 操作系统支持
  • Windows 64位和32位
  • Mac OS X 64位和32位
  • Linux 64位和32位
  • Android 64位和32位 iOS
  • 64位和32位 Windows Phone 32位
  1. 处理器支持
  • 英特尔x86,可选MMX/SSE/AVX
  • ARMv7,可选NEON;
  • AArch64,可选NEON 使用C/C++回退函数的任何架构
  1. 构建库
  • 需要安装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
  1. 通用构建指令
  • 在主项目目录中使用make命令进行构建,可以指定ARCH和其他参数
  1. 已知问题
  • 分辨率超过3840x2160时编码器出错
  • 压缩帧大小超过未压缩大小的一半时编码器出错
  • 压缩帧大小超过1MB时解码器出错
  • 编码器RC需要启用帧跳过才能达到目标比特率

OpenH264 对比 x264

  1. 开发背景和许可
  • OpenH264:由Cisco开发,专为实时应用程序如WebRTC设计,并在BSD许可下开源。这意味着它可以免费使用,且不会涉及MPEG-LA的H.264专利授权费用。
  • x264:是一个成熟的开源编解码器,广泛用于视频编码,遵循GNU GPL许可。x264不是一个免费的解决方案,因为它可能需要用户支付MPEG-LA的专利费用。
  1. 性能和效率
  • OpenH264:优化了实时编码,特别适合需要快速编码和较低延迟的应用。
  • x264:提供了多种编码模式,包括非常高效的多通道编码,适合离线编码任务,用户可以等待较长的编码时间以获取更高质量的输出。
  1. 特性集
  • OpenH264:
    • 支持H.264的Constrained Baseline Profile至5.2级别。
    • 提供了实时编码所需的关键功能,如多线程、长期参考帧等。
    • 专注于提供足够的功能以满足实时通信的需求。
  • x264:
    • 支持完整的H.264/AVC标准,包括所有配置文件和级别。
    • 提供高级特性,如心理视觉优化、去块滤波器、多参考帧编码等。
    • 支持两遍编码(双通道编码)以优化压缩效率。
  1. 应用场景
  • OpenH264:更适合实时视频通信、直播等需要快速编码的场景。
  • x264:适用于视频编辑、电影制作、DVD/蓝光视频编码等需要高压缩率和视频质量的应用。
  1. 社区和支持
  • OpenH264:由Cisco提供支持,拥有活跃的开源社区,适合需要特定实时编解码功能的开发者。
  • x264:拥有庞大的用户和开发者社区,提供广泛的文档和论坛支持。
  1. 兼容性
  • OpenH264:由于是开源的,易于集成到各种平台和应用中,特别是那些需要避免专利授权费用的平台。
  • x264:广泛兼容,支持多种操作系统和平台,但由于许可问题,某些集成可能会有限制。
  1. 构建和使用
  • OpenH264:提供了跨平台的构建脚本,易于在不同操作系统上构建和使用。
  • x264:同样提供了跨平台支持,但构建过程可能需要更多的配置。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/841366.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DataFrame—数据汇总6

文章最前: 我是Octopus,这个名字来源于我的中文名--章鱼;我热爱编程、热爱算法、热爱开源。所有源码在我的个人github ;这博客是记录我学习的点点滴滴,如果您对 Python、Java、AI、算法有兴趣,可以关注我的…

国赛练习(1)

Unzip 软连接 软连接是linux中一个常用命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接。换句话说,也可以理解成Windows中的快捷方式 注意:在创建软连接的文件的所有目录下不能有重名的文件 打开环境,是文件上传&am…

用实践结果告诉你为啥说 CloudFlare 是赛博菩萨?

最近几天明月都没有更新博客了,主要是接了几个 CloudFlare 代维配置的活儿,有需要加速优化的,有需要排除疑难故障的,有需要提高防御攻击能力的甚至还有纯粹为了体验“打不死”装逼需要的。总之,各种各样的需求,五花八门的,好在 CloudFlare 都能一一满足,最主要的是这些…

Dockerfile使用

1.Dockerfile是什么 官网地址 https://docs.docker.com/reference/dockerfile/概念 是什么 Dockerfile 是用于构建 Docker 镜像的文本文件,它包含一系列的指令(instructions)和参数,用于描述如何构建和配置镜像。 Dockerfile 是…

软测刷题-错题

提高测试效率的方法: 1、不要做无效的测试 2.不要做重复的测试 3.不同测试版本的测试侧重点 4.优化测试顺序 LoadRunner是对服务器进行施压。 在数据库中存在的用户数是指注册用户数。 input标签可以直接使用send_keys实现上传,而非input标签是无法直…

解析售后维修服务平台如何助力企业高效运营与决策

随着生活质量的不断提高,人们对于售后服务的要求也越来越多。因此,售后服务已经成为企业竞争力的重要组成部分。售后服务平台作为连接企业与消费者的桥梁,不仅关乎着消费者的满意度,而且直接影响着企业的品牌形象与市场地位。那么…

Linux 第三十八章

🐶博主主页:ᰔᩚ. 一怀明月ꦿ ❤️‍🔥专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章,「初学」C,linux 🔥座右铭:“不要等到什么都没有了…

Linux--正则表达式详解

1.1概念 在进行程序设计的过程中,用户会不可避免地遇到处理某些文本的情况。有的时候,用户还需要查找符合某些比较复杂规则的字符串。对于这些情况,如果单纯依靠程序设计语言本身,则往往会使得用户通过复杂的代码来实现。但是&…

[7] CUDA之常量内存与纹理内存

CUDA之常量内存与纹理内存 1. 常量内存 NVIDIA GPU卡从逻辑上对用户提供了 64KB 的常量内存空间,可以用来存储内核执行期间所需要的恒定数据常量内存对一些特定情况下的小数据量的访问具有相比全局内存的额外优势,使用常量内存也一定程序上减少了对全局…

Spring Cloud 面试题(五)

1. Eureka的自我保护模式是什么? Eureka的自我保护模式是一种应对网络异常的安全保护措施,旨在防止因网络分区或其他异常情况导致服务实例被错误地注销。当Eureka Server在短时间内丢失过多的客户端心跳时,会触发自我保护机制。以下是自我保…

行为型模式 (Python版)

模板方法模式 """案例:写简历内容:最近有个招聘会,可以带上简历去应聘了。但是,其中有一家公司不接受简历,而是给应聘者发了两张公司自己定制的简历表,分别是A类型的简历表和B类型的简历表…

汽车液态电池充电时,充电时的化学反应是怎样的? 电池电量是怎么充满的?

标签: 汽车液态电池充电时的化学反应; 电池充电过程;锂电池,石墨负极 问题:汽车液态电池充电时,充电时的化学反应是怎样的? 电池电量是怎么充满的? 汽车液态电池充电时的化学反应 汽车液态电池(如锂离子电池)在充电时,通过电化学反应将电能转化为化学能并储存在电…

C++ 时间处理-统计函数运行时间

1. 关键词2. 问题3. 解决思路4. 代码实现 4.1. timecount.h4.2. timecount.cpp 5. 测试代码6. 运行结果7. 源码地址 1. 关键词 C 时间处理 统计函数运行时间 跨平台 2. 问题 C如何简单便捷地实现“函数运行时间的统计”功能? 3. 解决思路 类的构造函数&#x…

使用python对指定文件夹下的pdf文件进行合并

使用python对指定文件夹下的pdf文件进行合并 介绍效果代码 介绍 对指定文件夹下的所有pdf文件进行合并成一个pdf文件。 效果 要合并的pdf文件,共计16个1页的pdf文件。 合并成功的pdf文件:一个16页的pdf文件。 代码 import os from PyPDF2 import …

深入理解 Spring Web 应用程序初始化流程

前言 在构建基于 Spring 的 Web 应用程序时,了解初始化流程是至关重要的。本文将详细介绍 Servlet 容器的初始化过程,并重点探讨 Spring 框架在其中的作用,特别是 ServletContainerInitializer、SpringServletContainerInitializer 和 WebAp…

源码部署ELK

目录 资源列表 基础环境 关闭防护墙 关闭内核安全机制 修改主机名 添加hosts映射 一、部署elasticsearch 修改limit限制 部署elasticsearch 修改配置文件 单节点 集群(3台节点集群为例) 启动 二、部署logstash 部署logstash 添加配置文件 启动 三、部署kiban…

数据清洗操作及众所周知【数据分析】

各位大佬好 ,这里是阿川的博客 , 祝您变得更强 个人主页:在线OJ的阿川 大佬的支持和鼓励,将是我成长路上最大的动力 阿川水平有限,如有错误,欢迎大佬指正 前面的博客 数据分析—技术栈和开发环境搭建 …

问题排查复盘

5月份中旬一天晚上,业务需求上线后反馈,该业务对应的搜索功能有问题,晚上10点多开始排查,到凌晨2点,最后大致定位了问题,并行修改后恢复,虽然问题不是很大,但是当时上线的业务对业绩…

抖音a-bogus加密解析(三)

要补的环境我给提示,大家自行操作,出了问题就是因为缺环境,没补好 window global; // reading _u未定义 window.requestAnimationFrame function () {} // XMLHttpRequest 未定义 window.XMLHttpRequest function () {} window.onwheelx …