问题标签 [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.
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 毫秒调用一次函数,该函数基本上执行以下操作(为清楚起见,省略了错误处理和后处理):
提前感谢您的帮助!
ios - 获取 Ogg 的 Opus 标头
我有这个从 Vorbis 获取 Ogg Stream 的初始标头信息的示例:
如何使用 libopus 从 Opus 获取此标头信息?这里有一些信息,但我不知道如何使用它。
ogg - Opus ID 标头,那是什么?
查看OggOpus的文档,我无法弄清楚这张表的含义:
我应该如何从中获得标题?
c++ - 如何使用 libopus 获得格式良好的 opus 文件?
我有 .wav 文件,我会使用 opus 对它们进行编码,将所有内容写入 .opus 文件,然后使用 vlc 读取它。我已经使用 opus trivial 示例完成了一些代码,但质量很差。其实有个问题,我从来不写header,这正常吗?我忘记了什么?
我认为我如何编写文件存在一个真正的问题,但我不知道它来自哪里,你能帮我吗?
webrtc - webRTC:如何告诉 Opus 编解码器使用超宽带/全频段
我正在开发一个到目前为止运行良好的 webRTC Web 应用程序。例如,我还没有弄清楚如何告诉 Opus 编解码器(强制)使用“全频段”。
将编解码器设置为 510 kHz 比特率很容易:
但是有没有办法告诉 Opus 使用哪个乐队?
c++ - 在 Window 上链接时 Opus 未定义的参考
经过 4 小时的搜索,我无法理解为什么在链接库时出现一些未解决的外部符号错误。
我正在使用 VS 2015。
我想知道为什么 ?另外,我确定 lib 具有这些功能,因为我用 atom 和 ctrl+f 名称打开了它。
ios - AudioUnit + Opus 编解码器 = 爆裂问题
我正在 Objective-c 中为 iOS 创建一个 voip 应用程序。目前我正在尝试创建音频部分:从麦克风录制音频数据,使用 Opus 编码,解码,然后播放。对于录音和播放,我使用 AudioUnit。我还做了一个缓冲区实现,它分配内存位置,每个位置都具有初始设置的大小。主要有三种方法: - setBufferSize - 用于设置缓冲区的子分配空间。- writeDataToBuffer - 用于创建新空间(如果需要),并将数据填充到当前写入空间。- readDataFromBuffer - 从当前读取空间读取数据。
我使用缓冲区在那里存储音频数据。它运作良好。我已经测试过了。此外,如果我尝试在没有 Opus 的情况下使用它,只读取音频数据,将其存储到缓冲区中,从缓冲区读取然后播放,一切都很好。但是当我包含作品时问题就来了。实际上它对音频数据进行编码和解码,但质量不太好,而且还有一些爆裂声。我想知道我做错了什么?这是我的代码片段:
音频单元:
输入缓冲区分配和设置存储缓冲区的大小:
记录回调:
播放回调:
作品初始化代码:
作品编码/解码:
以下是我使用的一些常量:
你能帮我吗?
javascript - 如何为高质量的 Opus 音频设置 SDP
我一直在尝试通过 WebRTC 传输一些高质量的音频流。Opus,主要宣传的编解码器似乎很完美,因为它可以支持高达 510kbit/s,远远超过需要。问题是,设置 Webrtc SDP 并不像看起来那么明显。感谢 Muaz Khan 的出色工作,我能够将其强制为 128kbit/s。基本上代码如下所示:
所以现在一切都设置好了,firefox 和 chrome 都为发送者和接收者显示正确的值,通信打开,音乐播放!
但是质量很糟糕。Chrome 在 chrome://webrtc-internals/ 上显示大约 30kbit/s 并且声音严重失真且音量可变......关于这个问题的任何线索?
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:
- 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?)
- Are there any common techniques to provide the same sound quality at both sides when sending audio stream over network?
audio - 如何使用 ffmpeg 或其他命令行工具为 opus 音频文件添加封面
我搜索了将近一整天,但没有找到可以为作品音频文件添加封面的内容。
我尝试使用 Kid3-cli 和以下命令。
如果我像这样添加一些其他元标记,它只在添加封面时才有效
然后出现一个随机封面,我不知道它来自哪里。我可以删除它,但不能像上面的命令那样添加我自己的封面。该随机封面仅出现在 VLC 最新版本中。
有人有一个解决方案,可以为 opus、vorbis、aac、mp3 等添加元标记和封面。
我安装了 foobar2000 并使用与上述相同的命令和 vorbis 音频数据,可以附加图片。在“管理附加图片”下的 foobar2000 的 GUI 中,我看到了我附加的图片。
但是对于作品仍然不起作用。
谢谢您的帮助!