OPUS编解码器简介

简介:

总览

Opus是一款完全开放的功能广泛的音频编解码器。Opus在互联网上的交互式语音和音乐传输方面无可匹敌,但也适用于存储和流媒体应用程序。它由Internet工程任务组(IETF)标准化为RFC 6716 ,该标准融合了Skype的SILK编解码器和Xiph.Org的CELT编解码器中的技术。

技术

Opus可以处理各种音频应用程序,包括IP语音,视频会议,游戏内聊天,甚至是远程直播音乐表演。它可以从低比特率的窄带语音扩展到高质量的立体声音乐。支持的特性有:

  • 从6kb/s到510kb/s的比特率;
  • 从8kHz(窄带)到48kHz(全频带)的采样率;
    *从2.5毫秒到60毫秒的帧长;
  • 支持固定比特率(constant bitrate,CBR)和可变比特率(variable bitrate,VBR);
  • 窄带到宽带音频带宽;支持语音和音乐;
  • 支持单声道和立体声;
  • 最多支持255个通道(多流帧, multistream frames)动态自适应比特率、音频带宽和帧长;
  • 良好的稳定性和丢包隐藏;
  • 可进行浮点和定点实现。

代码下载

(1)Opus库本身:

git clone https://git.xiph.org/opus.git

(2)Opus-tools
Opus-tools包含了一组将Opus与wav进行编解码的工具。

git clone https://gitlab.xiph.org/xiph/opus-tools/

(3)Opusfile
Opusfile提供了一个高级API,用于在.opus文件中进行解码和查找,类似于libvorbisfile为Vorbis提供的功能。

git clone https://git.xiph.org/opusfile.git

(4)libopusenc
Libopusenc提供了用于创建.opus文件和流的高级API。

git clone https://git.xiph.org/libopusenc.git

性能比较

下图说明了各种编解码器的质量与比特率的关系。它总结一系列听觉测试的结果,然后(当没有数据时)显示出轶事证据(由于样本比较小,没有完善的科学实验证明,这种证据有可能是不可靠的)。它总体上具有代表性,但是绝对不建议尝试以特定比特率提取任何精确值。
opus_comparison
quality

相关文章
|
30天前
|
存储 编解码 vr&ar
用C++实现视频编码器:FFmpeg与SDL技术结合,轻松编写高效编解码器
用C++实现视频编码器:FFmpeg与SDL技术结合,轻松编写高效编解码器
68 0
|
12月前
|
存储 编解码 安全
Opus从入门到精通(二):编解码器使用
opus_encoder_get_size()返回编码器状态要求的大小。注意,这段代码的未来版本可能改变大小,所以没有assuptions应该对它做出。编码器状态在内存中总是连续,复制它只要一个浅拷贝就足够了。使用opus_encoder_ctl()接口可以改变一些编码器的参数设置。所有这些参数都已有缺省值,所以只在必要的情况下改变它们。
1081 0
|
12月前
|
编解码 API 语音技术
Opus从入门到精通(七)Opus编码基础之认识声音
前面我们分析完Opus的编解码api使用,封装原理等,接下来我们准备分析Opus编码原理.Opus编码是一个复杂的工作,我们需要做一些基本铺垫,包括认识声音,压缩编码基础.认识音频有助于我们了解音频特征,不仅对语音有助于我们理解编码技术,同时在语音识别,TTS等场景提供帮助
365 0
Opus从入门到精通(七)Opus编码基础之认识声音
|
12月前
|
编解码 内存技术
Opus从入门到精通(四)Opus解码程序实现
由于我们解码后的数据直接写入文件,无法通过vlc等播放器播放,我们通过lame将解码后的数据再编码成mp3,当然,你要乐意也可以直接价格wav头输出成wav. 通过采样率,声道数等创建lame编码器
450 0
|
12月前
|
机器学习/深度学习 存储 编解码
Opus从入门到精通(八)Opus编码基础之压缩编码
莫尔斯码就是大家熟悉的电报码,它的发明为人类做出了巨大的贡献.该码采用"."和"-"来表示26个英文字母,这实质上还是二进制码(点为"0",而杠为"1"),但是它没有采用固定字长的编码方式,而是采用了常用字母用短码表示(如E用"."表示,T用"-"表示),不常用字母用长码表示(如Z用"--.."表示,j用"-..-"表示)的变长编码方式.通过对英文单词进行大量统计,找出各字母的概率,最后确定有12个字母出现概率最低,用4bit数字表示,有8个字母出现概率较低,用3bit数字表示;有4个字母出现概率较高,用2bit数字表示;有两个字母出现概率最高,用1bit表示,共26个字母.
411 0
|
数据采集 传感器 编解码
【Android RTMP】音频数据采集编码 ( 音频数据采集编码 | AAC 高级音频编码 | FAAC 编码器 | Ubuntu 交叉编译 FAAC 编码器 )(一)
【Android RTMP】音频数据采集编码 ( 音频数据采集编码 | AAC 高级音频编码 | FAAC 编码器 | Ubuntu 交叉编译 FAAC 编码器 )(一))
194 0
【Android RTMP】音频数据采集编码 ( 音频数据采集编码 | AAC 高级音频编码 | FAAC 编码器 | Ubuntu 交叉编译 FAAC 编码器 )(一)
|
数据采集 Ubuntu Shell
【Android RTMP】音频数据采集编码 ( 音频数据采集编码 | AAC 高级音频编码 | FAAC 编码器 | Ubuntu 交叉编译 FAAC 编码器 )(二)
【Android RTMP】音频数据采集编码 ( 音频数据采集编码 | AAC 高级音频编码 | FAAC 编码器 | Ubuntu 交叉编译 FAAC 编码器 )(二)
261 0
【Android RTMP】音频数据采集编码 ( 音频数据采集编码 | AAC 高级音频编码 | FAAC 编码器 | Ubuntu 交叉编译 FAAC 编码器 )(二)
|
存储 编解码 API
FFmpeg编解码处理4-音频编码
基于 FFmpeg 4.1 版本。
324 0
FFmpeg编解码处理4-音频编码
|
存储 编解码 API
FFmpeg编解码处理3-视频编码
基于 FFmpeg 4.1 版本。
295 0
FFmpeg编解码处理3-视频编码