问题标签 [opus]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
150 浏览

c - 一次播放 15 个音轨,延迟小于 50 毫秒?

总而言之,我的问题是:是否可以同时解码和播放 15 个有损压缩的音轨,延迟时间低于 50 毫秒且没有卡顿?

背景

我正在为我正在创建的游戏用纯 C 语言编写声音库。我希望一次播放多达 15 个音轨,延迟小于 50 毫秒。

截至目前,该库能够播放原始 PCM 文件(48000Hz 压缩的 16 位样本),并且可以轻松地以 45 毫秒的延迟一次播放 15 种声音,而不会出现卡顿且 CPU 使用率最低。这是在我相对较旧的 Intel Q9300 + SSD 机器上。

由于原始音频文件很大,我扩充了我的库以支持使用 opusfile 播放 OPUS 文件(https://mf4.xiph.org/jenkins/view/opus/job/opusfile-unix/ws/doc/html/index .html)。我希望我仍然能够一次播放 15 种声音,而音频文件不会占用 200MB 以上。我错了——我一次只能播放 3 或 4 首 OPUS 曲目,然后才能听到口吃和其他缓冲不足的症状。与原始 PCM 播放相比,CPU 使用率也大幅增加。

我还尝试使用 vorbisfile ( http://www.xiph.org/vorbis/doc/vorbisfile/ ) 包含 VORBIS 支持。我想也许即时解码 VORBIS 不会占用大量 CPU。VORBIS 比 OPUS 好一点——我可以一次播放 5 或 6 个声音,然后才能听到口吃(我猜 VORBIS 确实更容易解码)——但这仍然远不及播放原始 PCM 文件。

在我深入研究低级 libvorbis/libopus API 并研究其他音频压缩格式之前,是否可以同时解码和播放 15 个有损压缩的音轨,延迟低于 50 毫秒且没有卡顿在中低端台式电脑上?

如果有帮助,我的声音库目前大约每 15 毫秒调用一次函数,该函数基本上执行以下操作(为清楚起见,省略了错误处理和后处理):

提前感谢您的帮助!

0 投票
1 回答
2440 浏览

ios - 获取 Ogg 的 Opus 标头

我有这个从 Vorbis 获取 Ogg Stream 的初始标头信息的示例:

如何使用 libopus 从 Opus 获取此标头信息?这里有一些信息,但我不知道如何使用它。

0 投票
1 回答
283 浏览

ogg - Opus ID 标头,那是什么?

查看OggOpus的文档,我无法弄清楚这张表的含义:

我应该如何从中获得标题?

0 投票
1 回答
2234 浏览

c++ - 如何使用 libopus 获得格式良好的 opus 文件?

我有 .wav 文件,我会使用 opus 对它们进行编码,将所有内容写入 .opus 文件,然后使用 vlc 读取它。我已经使用 opus trivial 示例完成了一些代码,但质量很差。其实有个问题,我从来不写header,这正常吗?我忘记了什么?

我认为我如何编写文件存在一个真正的问题,但我不知道它来自哪里,你能帮我吗?

0 投票
1 回答
6860 浏览

webrtc - webRTC:如何告诉 Opus 编解码器使用超宽带/全频段

我正在开发一个到目前为止运行良好的 webRTC Web 应用程序。例如,我还没有弄清楚如何告诉 Opus 编解码器(强制)使用“全频段”。

将编解码器设置为 510 kHz 比特率很容易:

但是有没有办法告诉 Opus 使用哪个乐队?

0 投票
0 回答
189 浏览

c++ - 在 Window 上链接时 Opus 未定义的参考

经过 4 小时的搜索,我无法理解为什么在链接库时出现一些未解决的外部符号错误。

我正在使用 VS 2015。

我想知道为什么 ?另外,我确定 lib 具有这些功能,因为我用 atom 和 ctrl+f 名称打开了它。

0 投票
2 回答
1470 浏览

ios - AudioUnit + Opus 编解码器 = 爆裂问题

我正在 Objective-c 中为 iOS 创建一个 voip 应用程序。目前我正在尝试创建音频部分:从麦克风录制音频数据,使用 Opus 编码,解码,然后播放。对于录音和播放,我使用 AudioUnit。我还做了一个缓冲区实现,它分配内存位置,每个位置都具有初始设置的大小。主要有三种方法: - setBufferSize - 用于设置缓冲区的子分配空间。- writeDataToBuffer - 用于创建新空间(如果需要),并将数据填充到当前写入空间。- readDataFromBuffer - 从当前读取空间读取数据。

我使用缓冲区在那里存储音频数据。它运作良好。我已经测试过了。此外,如果我尝试在没有 Opus 的情况下使用它,只读取音频数据,将其存储到缓冲区中,从缓冲区读取然后播放,一切都很好。但是当我包含作品时问题就来了。实际上它对音频数据进行编码和解码,但质量不太好,而且还有一些爆裂声。我想知道我做错了什么?这是我的代码片段:

音频单元:

输入缓冲区分配和设置存储缓冲区的大小:

记录回调:

播放回调:

作品初始化代码:

作品编码/解码:

以下是我使用的一些常量:

你能帮我吗?

0 投票
3 回答
6612 浏览

javascript - 如何为高质量的 Opus 音频设置 SDP

我一直在尝试通过 WebRTC 传输一些高质量的音频流。Opus,主要宣传的编解码器似乎很完美,因为它可以支持高达 510kbit/s,远远超过需要。问题是,设置 Webrtc SDP 并不像看起来那么明显。感谢 Muaz Khan 的出色工作,我能够将其强制为 128kbit/s。基本上代码如下所示:

所以现在一切都设置好了,firefox 和 chrome 都为发送者和接收者显示正确的值,通信打开,音乐播放!

但是质量很糟糕。Chrome 在 chrome://webrtc-internals/ 上显示大约 30kbit/s 并且声音严重失真且音量可变......关于这个问题的任何线索?

0 投票
2 回答
418 浏览

c++ - Are there any constraints to encode a audio signal?

I capture a pcm sound at some sampling rate, e.g. 24 kHz. I need to encode it using some codec (I use Opus for that) to send over network. I noticed that at some sampling rate I use for encoding with Opus, I often hear some extra "cracking" noise at the receiving end. At other rates, it sounds ok. That might be an implementation bug, but I though there might be some constraints also that I don't know.

I also noticed that if I use another sampling rate while decoding Opus-encoded audio stream, I get a lower or higher pitch of sound, which seems logical to me. So I've read, that I need to resample on the other end, if receiving side doesn't support the original PCM sampling rate.

So I have 2 questions regarding all this:

  1. Are there any constraints on sampling rate (or other parameters) of audio encoding? (Like I have a 24kHz pcm sound - maybe there are certain sample rates to use with it?)
  2. Are there any common techniques to provide the same sound quality at both sides when sending audio stream over network?
0 投票
1 回答
1566 浏览

audio - 如何使用 ffmpeg 或其他命令行工具为 opus 音频文件添加封面

我搜索了将近一整天,但没有找到可以为作品音频文件添加封面的内容。

我尝试使用 Kid3-cli 和以下命令。

如果我像这样添加一些其他元标记,它只在添加封面时才有效

然后出现一个随机封面,我不知道它来自哪里。我可以删除它,但不能像上面的命令那样添加我自己的封面。该随机封面仅出现在 VLC 最新版本中。

有人有一个解决方案,可以为 opus、vorbis、aac、mp3 等添加元标记和封面。

我安装了 foobar2000 并使用与上述相同的命令和 vorbis 音频数据,可以附加图片。在“管理附加图片”下的 foobar2000 的 GUI 中,我看到了我附加的图片。

但是对于作品仍然不起作用。

谢谢您的帮助!