xiph/opus
GitHub: xiph/opus
Opus 是一种专为互联网设计的开源免版税音频编解码器,覆盖从低码率窄带语音到高质量立体声音乐的广泛音频应用,具有低延迟和强抗丢包能力。
Stars: 3080 | Forks: 761
== Opus 音频编解码器 ==
Opus 是一种用于通过 Internet 进行交互式语音和音频传输的编解码器。
Opus 能够处理广泛的交互式音频应用,包括
IP 语音、视频会议、游戏内聊天,甚至是远程现场音乐
表演。它的范围可以从低比特率窄带语音扩展到非常高质量的
立体声音乐。
Opus 在结合适当的容器格式时,也适用于
非实时的存储文件应用,例如音乐发行、游戏
原声带、便携式音乐播放器、点唱机,以及其他
历史上曾使用高延迟格式(如 MP3、AAC 或 Vorbis)的应用。
```
Opus is specified by IETF RFC 6716:
https://tools.ietf.org/html/rfc6716
```
Opus 格式及其本实现受 COPYING 文件中指定的
免版税专利和版权许可证的约束。
本软件包实现了一个用于编码和解码原始 Opus
比特流的共享库。原始 Opus 比特流应根据
https://tools.ietf.org/html/rfc7587 通过 RTP 使用。
该软件包还包含许多测试工具,用于测试
库的正确操作。这些工具读写的
比特流不应用于 Opus 文件分发:它们包含
额外的调试数据且不支持随机访问。
存储在文件中的 Opus 应使用 Ogg Opus 封装格式,该格式
描述于:
https://tools.ietf.org/html/rfc7845
提供了一个 opus-tools 软件包,支持对 Ogg 封装的
Opus 文件进行编码和解码,并包含许多有用的功能。
Opus-tools 可以在以下地址找到:
https://gitlab.xiph.org/xiph/opus-tools.git
或者在 Opus 官方网站上:
https://opus-codec.org/
== 深度学习与 Opus ==
丢包网络仍然是实时通信面临的一项挑战。
虽然 Opus 的原始实现提供了出色的丢包
隐藏机制,但团队仍在不断推进所用的方法论,以
改善挑战性网络环境下的音频质量。
在 Opus 1.5 中,我们添加了一个基于深度学习的冗余编码器,它通过
在每个数据包的填充数据中嵌入一秒的恢复数据,
来增强丢包网络中的音频。编码和解码
恢复数据背后的底层算法称为深度冗余(DRED)算法。通过利用
数据包内的填充数据,Opus 1.5 完全向后兼容
以前的 Opus 版本。请参阅“dnn”子目录下的 README 来
了解 DRED。
DRED 由 Amazon Web Services 最初赞助的团队开发,
他们开源了该实现,并启动了
IETF 的标准化进程:
https://datatracker.ietf.org/doc/draft-ietf-mlcodec-opus-extension/
Opus 背后的许可证或 Opus 的知识产权状况
不会随 Opus 1.5 而改变。
== 编译 libopus ==
要从发行版压缩包构建,只需执行以下操作:
```
% ./configure
% make
```
要从 git 仓库构建,需要执行以下步骤:
0. 设置开发环境:
在 Ubuntu 或 Debian 系列的 Linux 发行版上:
```
% sudo apt-get install git autoconf automake libtool gcc make
```
在基于 Fedora/Redhat 的 Linux 上:
```
% sudo dnf install git autoconf automake libtool gcc make
```
或者对于较旧的 Redhat/Centos Linux 版本:
```
% sudo yum install git autoconf automake libtool gcc make
```
在 Apple macOS 上,安装 Xcode 和 brew.sh,然后在终端中输入:
```
% brew install autoconf automake libtool
```
1. 克隆仓库:
% git clone https://gitlab.xiph.org/xiph/opus.git
% cd opus
2. 编译源码
% ./autogen.sh
% ./configure
% make
在 x86 架构上,最好使用允许使用 AVX2 的 -march= 选项。
3. 安装编解码器库(可选)
% sudo make install
编译完编解码器后,顶层目录中将生成一个
opus_demo 可执行文件。
用法:opus_demo [-e]
[options]
标签:Bash脚本, DNS解析, IETF标准, Opus, RFC 6716, VoIP, 丢包隐藏, 多媒体, 实时通信, 客户端加密, 开源项目, 无损音频, 流媒体, 深度学习, 游戏语音, 编解码库, 网络传输, 网络音频, 视频会议, 语音通话, 音频压缩, 音频编解码器, 预握手, 高保真