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,一经查实,立即删除!

相关文章

国赛练习(1)

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

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

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

Dockerfile使用

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

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

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

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

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

使用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的阿川 大佬的支持和鼓励,将是我成长路上最大的动力 阿川水平有限,如有错误,欢迎大佬指正 前面的博客 数据分析—技术栈和开发环境搭建 …

Vue3实战笔记(45)—VUE3封装一些echarts常用的组件,附源码

文章目录 前言一、柱状图框选二、折线图堆叠总结 前言 日前使用hooks的方式封装组件,在我使用复杂的图标时候遇到了些问题,预想在onMounted中初始化echarts,在使用hooks的时候,组件没有渲染完,使用实例会出现各种各样…

Qt Creator(1)【概述篇】

阅读导航 引言一、Qt概述1. 什么是Qt2. Qt的发展史3. Qt支持的平台4. Qt的优点5. Qt的应用场景 二、Qt下载安装 引言 在探索编程和软件开发的旅程中,我们已经奠定了坚实的基础,通过学习C语言和C,我们不仅掌握了结构化编程和面向对象编程的核…

HIVE3.1.3+ZK+Kerberos+Ranger2.4.0高可用集群部署

目录 一、集群规划 二、介质下载 三、基础环境准备 1、解压文件 2、配置环境变量 四、配置zookeeper 1、创建主体 2、修改zoo.cfg 3、新增jaas.conf 4、新增java.env 5、重启ZK 6、验证ZK 五、配置元数据库 六、安装HIVE 1、创建Hiver的kerberso主体 2…

网站笔记:huggingface model memory calculator

Model Memory Utility - a Hugging Face Space by hf-accelerate 这个工具可以计算在 Hugging Face Hub上托管的大型模型训练和执行推理时所需的vRAM内存量。模型所需的最低推荐vRAM内存量表示为“最大层”的大小,模型的训练大约是其大小的4倍(针对Adam…

LeetCode 第399场周赛个人题解

100323. 优质数对的总数 I 原题链接 100323. 优质数对的总数 I 思路分析 签到题 AC代码 class Solution:def numberOfPairs(self, nums1: List[int], nums2: List[int], k: int) -> int:n, m len(nums1), len(nums2)ret 0for i in range(n):for j in range(m):if nu…

关于构建生成式AI产品的思考

在过去的六个月里,我们 LinkedIn 的团队一直在努力开发一种新的人工智能体验。我们希望重新构想我们的会员如何进行求职和浏览专业内容。 生成式人工智能的爆炸式增长让我们停下来思考一年前不可能实现的事情。我们尝试了许多想法,但都没有真正实现&…

1.2 程序员职业发展

目录 1 程序员职业发展方向 2 计算机研究生为何青睐AI赛道 1 程序员职业发展方向 2 计算机研究生为何青睐AI赛道 计算机类研究生,大部分以人工智能作为主赛道,原因如下: 广阔的就业前景:人工智能是当今科技发展的前沿领域&…

7.Redis之String编码方式应用场景业务

1.内部编码 字符串类型的内部编码有 3 种: • int:8 个字节(64位)的⻓整型。 • embstr:⼩于等于 39 个字节的字符串。压缩字符串.适用于表示比较短的字符串。 • raw:⼤于 39 个字节的字符串。普通字…

Java的线程的使用

一.两种创建线程的方式 1.继承Thread类(匿名内部类) 创建方式: 1.定义一个子类继承Thread,重写run方法 2.创建子类对象, 3.调用子类对象的start方法(启动还是执行的run方法) 优缺点&#x…

公安知识学习与题目练习系统

一、系统概述 系统采用C用户小程序端、管理员Web端架构。通过UniappVueSpringboot主流技术实现。具体功能分为,管理侧:可以维护学习知识点、更新知识点详情;C端用户:可以学习知识点、在线刷题练习的功能。次系统在公安专业知识学习…