音频文件格式–celt

CELT介绍

CELT 是一种开放、免版税的有损音频压缩格式,也是一种免费软件编解码器,具有特别低的算法延迟,适用于低延迟音频通信。这些算法是公开记录的,并且可以不受软件专利限制地使用。

CELT 是一种基于改进的离散余弦变换 (MDCT) 和 CELP 概念的变换编解码器(带有用于激励的码本,但在频域中)。与 Vorbis 一样,CELT 是一种全频带(整个人类听觉范围)通用编解码器,即不专门用于特殊类型的音频信号,因此与其兄弟项目 Speex 不同。

CELT 提供从 32 kbps 到 128 kbps 的一系列比特率,最高比特率可提供与 Vorbis 或 AAC 类似的高质量音频。然而,CELT 还提供 16 kbps 和 8 kbps 的极低比特率,适用于 VoIP 或视频会议等低延迟应用。

许多流行的 VoIP 和视频会议应用程序都使用 CELT,包括 Skype、Jitsi 和 WebRTC。WebM 视频格式也使用它。

粉丝福利, 免费领取C++音视频学习资料包+学习路线大纲、技术视频/代码,内容包括(音视频开发,面试题,FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,编解码,推拉流,srs)↓↓↓↓↓↓见下面↓↓文章底部点击免费领取↓↓

CELT发展历程

CELT的发展历史可以追溯到2000年代初期,当时Xiph.Org基金会开始开发一种名为Speex的新音频编解码器。

CELT优缺点

CELT 的一些优势:

低算法延迟:CELT具有非常低的算法延迟,这意味着编码和解码音频所花费的时间非常短。这使其适合需要实时音频通信的应用,例如 VoIP 和视频会议。

高品质:CELT 可以以 64 kbps 或更高的比特率实现高质量音频。这与 Vorbis 或 AAC 的质量相当。

开源:CELT是开源的,这意味着它可以免费使用和修改。这使其成为想要创建自己的 VoIP 或视频会议应用程序的开发人员的热门选择。

多种比特率:CELT 支持多种比特率,从 32 kbps 到 128 kbps。这使得它适合各种应用,从低延迟 VoIP 到高质量音频流。

抗噪声能力强:CELT 对噪声具有鲁棒性,这意味着它在嘈杂的环境中仍然可以产生高质量的音频。这使得它成为重视音频质量的应用的不错选择,即使在嘈杂的条件下也是如此。

支持立体声音频:CELT 可以对立体声音频进行编码和解码。这使得它适合需要双通道音频的应用,例如音乐播放或视频会议。

支持可变比特率编码:CELT 可以以可变比特率对音频进行编码。这意味着可以调整比特率以匹配可用带宽或所需的质量水平。

支持丢包隐藏:CELT可以隐藏丢包。这意味着即使某些音频数据包丢失,它仍然可以产生高质量的音频。

CELT 的一些缺点:

不像其他编解码器那样得到广泛支持:CELT 不像 MP3、Vorbis 或 AAC 等其他编解码器那样得到广泛支持。这意味着可能无法在所有应用程序中使用 CELT。

计算成本可能很高:CELT 的编码和解码计算成本可能很高,尤其是在高比特率下。这可能并不适合所有设备,例如智能手机或低功耗嵌入式系统。

CELT核心要点

每一种音频算法兴起,都有其核心要点和关键步骤:

加窗:音频信号被分成重叠的帧,每个帧使用汉明窗加窗。这有助于减少频谱泄漏并提高 MDCT 的频率分辨率。

改进的离散余弦变换 (MDCT):使用 MDCT 将加窗音频帧变换到频域。这将音频信号分为 32 个频段,每个频段包含不同的频率范围。

量化:频率系数被量化以减少表示它们所需的位数。这是使用许多不同的技术来完成的,例如均匀量化、对数量化和自适应量化。

码本编码:使用码本对量化后的频率系数进行编码。这是一个预先计算的码字表,代表不同的频率系数模式。

打包:编码的码本条目被打包并传输到解码器。

解码:解码器接收数据包并解码以重建原始音频信号。

这些是 CELT 的核心步骤,但编码和解码过程中还涉及许多其他步骤。例如,CELT还使用了许多技术来提高解码音频的质量,例如噪声整形和后处理,其逻辑框图大概如下所示:

效果对比

对于音乐文件,尤其是在资源有限的设备上进行播放,CELT 还是存在一定价值的(数据来源于:Internal MUSHRA (ITU-R BS.1534) test):

CELT现状

自 2011 年 2 月 4 日起,CELT/ SILK混合编解码器Opus (以前称为 Harmony)出现后不久,CELT 作为一个单独项目的开发就停止了,而是以 Opus 为基础(在处理时域中的频谱范围采用线性预测(SILK),频域中的较高部分采用MDCT)。

官网上也可以看到最后一次更新是在2011年2月15日。

虽然CELT暂停了,但是在OPUS算法中仍然可以看到其身影,我们会在后续的OPUS算法中再做一下介绍。

CELT 本身的标准化并未完成,IETF有一份草稿,有兴趣的可以参考一下:

https://datatracker.ietf.org/doc/html/draft-valin-celt-codec-02

总结

出道即巅峰

CELT编解码器的出现彻底改变了人们对音频编解码的看法。它能够提供极低的延迟(仅几个毫秒)和高质量的声音,这对于实时音频流、音乐制作和游戏等应用来说至关重要。此外,CELT还具有很强的鲁棒性,因此在网络环境恶劣时也能保证良好的表现。这些突破性的特性使CELT迅速在音频编解码领域达到了巅峰。

转型为背后的英雄

然而,之后CELT的身影逐渐淡出了公众视线。它并没有消失,而是成为了一个新的、更先进的音频编解码器——Opus的一部分。Opus结合了CELT和另一种编解码器SILK的优点,以实现更广泛的应用。

在Opus中,CELT主要负责处理高比特率、复杂的音频内容(如音乐),而SILK则处理语音信号。因此,尽管CELT可能不再是公众熟知的名字,但它仍在背后默默工作,为我们提供优质的音频体验。

就像做嫁衣的裁缝一样,CELT虽然转型为”隐形”角色,但其价值并未减损,反而在新的领域和环境中得到了充分的发挥。这是一个典型的例子,显示出一个算法或技术即使不再处于主导地位,也能通过融入新的系统,继续提供其核心价值。

粉丝福利, 免费领取C++音视频学习资料包+学习路线大纲、技术视频/代码,内容包括(音视频开发,面试题,FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,编解码,推拉流,srs)↓↓↓↓↓↓见下面↓↓文章底部点击免费领取↓↓

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

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

相关文章

你还没脱单,这些软件都得背锅

不管你是否认可情人节概念,是否会在这天与自己的那个ta相聚,每个成年人都会或多或少地思考自己的感情问题。 在互联网兴盛之前,人与人的交往大都依靠职场关系和熟人介绍来结识新的对象,但也有媒人、婚姻介绍所等专门的职业为适龄…

基于Jackson自定义json数据的对象转换器

1、问题说明 后端数据表定义的id主键是Long类型,一共有20多位。 前端在接收到后端返回的json数据时,Long类型会默认当做数值类型进行处理。但前端处理20多位的数值会造成精度丢失,于是导致前端查询数据出现问题。 测试前端Long类型的代码 …

安卓接入google的Firebase登录教程

1.https://console.firebase.google.com创建安卓项目 2.添加google登录 3.添加项目的SHA证书指纹 4. FireBase自动生成(API和服务) https://console.cloud.google.com/apis/credentials?authuser1&projectbattle-against-darkness 5.下载goog…

3.3.2 CSMA/ CD协议

3.3.2 CSMA/ CD协议 CSMA/CD(Carrier Sense Multiple Access with Collision Detection):载波监听多点接入/碰撞检测。 检测到碰撞后: 适配器立即停止发送。(碰撞点后面的信号会一直叠加)等待一段随机时间…

使用cURL和wget在Linux上进行HTTP请求和下载

在Linux上,cURL和wget是两个常用的命令行工具,用于发送HTTP请求和下载文件。下面我将详细介绍如何使用这两个工具进行HTTP请求和下载操作。 首先,让我们了解一下cURL。cURL是一个功能强大的命令行工具,可以用来发送各种类型的HTT…

WinEdt运行latex文件有eps图片编译不通过,各种报错解决办法

一、背景 我们在使用Winedt编辑并且编译Latex文件时,一般会选择PDFTeXify格式一键编译和生成pdf,如下图所示的选项,这样确实很方便,但经常会出现bug,例如转圈卡死,或编译不通过,报错Unknown gr…

【翻译】在Qt Designer中创建主窗口(Main Windows)

原文地址:https://doc.qt.io/qt-6/designer-creating-mainwindows.html Qt Designer 可用于为不同用途创建用户界面,并为每个用户界面提供不同类型的模板。主窗口模板用于创建具有菜单栏、工具栏和停靠窗口部件的应用程序窗口。 通过打开文件菜单并选择…

外观模式介绍

目录 一、外观模式介绍 1.1 外观模式定义 1.2 外观模式原理 1.2.1 外观模式类图 1.2.2 模式角色说明 1.2.3 示例代码 二、外观模式的应用 2.1 需求说明 2.2 需求实现 2.2.1 类图 2.2.2 具体实现 2.2.2.1 灯光类 2.2.2.2 电视类 2.2.2.3 空调类 2.2.2.4 外观面板类…

Spring Cloud微服务基础入门

文章目录 发现宝藏前言环境准备创建第一个微服务1. 创建Spring Boot项目2. 创建微服务模块3. 编写微服务代码4. 创建一个简单的REST控制器 运行微服务 总结好书推荐 发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不…

【leetcode刷题】模拟专题

模拟 一、替换所有的问号1、题目链接2、解析3、代码 二、提莫攻击1、题目链接2、解析3、代码 三、Z字形变换1、题目链接2、解析3、代码 四、外观数列1、题目链接2、解析3、代码 五、数青蛙1、题目链接2、解析3、代码 一、替换所有的问号 1、题目链接 leetcode链接 2、解析 3、…

【开源】基于JAVA语言的网上药店系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 药品类型模块2.3 药品档案模块2.4 药品订单模块2.5 药品收藏模块2.6 药品资讯模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 角色表3.2.2 药品表3.2.3 药品订单表3.2.4 药品收藏表3.2.5 药品留言表…

装饰器模式介绍

目录 一、装饰器模式介绍 1.1 装饰器模式定义 1.2 装饰器模式原理 1.2.1 模式类图 1.2.2 模式角色说明 1.2.3 举例代码 二、装饰器模式的应用 2.1 需求说明 2.2 需求实现 2.2.1 类图 2.2.2 类图说明 2.2.3 具体实现 2.2.3.1 DataLoader类 2.2.3.2 BaseFileDataLoa…

初学者必知的微软.NET6开发环境相关技术介绍

我是荔园微风,作为一名在IT界整整25年的老兵,看到不少初学者在学习编程语言的过程中如此的痛苦,我决定做点什么,我小时候喜欢看小人书(连环画),在那个没有电视、没有手机的年代,这是…

企业数据挖掘平台哪家好?听听客户的真实反馈

泰迪大数据挖掘企业服务平台让数据创造更大的价值,具有拖曳式、免开发建模、可私有化部署、可提供源代码方便定制、全面培训服务丰富模型参考专业建模人员服务等特点。 听听客户真实反馈: 大数据挖掘企业服务平台包含四大产品服务,分别为&…

数据结构学习 jz40 最小的 k 个数

关键词:排序 快排思想 计数排序 大顶堆 题目:库存管理 III 方法一:sort快排,这种方法绝对过不了面试 方法二:快排思想,只排一半。效率最高 方法三:维护一个大小为cnt的最大堆 方法四&#…

ChatGPT:人工智能划时代的标志(文末送书)

🌈个人主页:聆风吟 🔥系列专栏:网络奇遇记、数据结构 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 一. 什么是ChatGPT?二. ChatGPT是如何工作的?三. ChatGPT的应用领域四. ChatGPT的优缺点…

认识Linux指令之 “tar” 指令

01.tar指令(重要) 打包/解包,不打开它,直接看内容 tar [-cxtzjvf] 文件与目录 .... 参数: -c :建立一个压缩文件的参数指令(create 的意思); -x :解开一个压缩文件的参数指令&am…

Webpack 怎么实现按需异步加载模块

要弄懂这个问题,需要先来看关于webpack打包的3个问题。 三个问题 第一个问题 项目中的json文件,如何使用webpack进行处理? 如果我们希望把json文件当做静态配置,例如有如下json文件 {"version": "1.0.0"…

介绍下Redis 的基础数据结构

目录 这周开始学习 Redis,看看Redis是怎么实现的。所以会写一系列关于 Redis的文章。这篇文章关于 Redis 的基础数据。阅读这篇文章你可以了解: 动态字符串(SDS) 链表 字典 三个数据结构 Redis 是怎么实现的。 SDS SDS &#xff…

前端框架前置课Node.js学习(1) fs,path,模块化,CommonJS标准,ECMAScript标准,包

目录 什么是Node.js 定义 作用: 什么是前端工程化 Node.js为何能执行Js fs模块-读写文件 模块 语法: 1.加载fs模块对象 2.写入文件内容 3.读取文件内容 Path模块-路径处理 为什么要使用path模块 语法 URL中的端口号 http模块-创建Web服务 需求 步骤: 案例:浏…