问题标签 [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# - 从设备发送 NAudio / Opus 编码的音频作为 RTP
首先,我要道歉。很久以前,我曾经修补过 VB5,并且已经离开程序员多年了——我仍在重新学习基础知识,最近开始学习 C#/.NET。我也是这个网站的新手,请耐心等待并给予指导。我的背景故事已经够多了。
将此包装器用于 Opus,其中我将包装器项目添加到我自己的解决方案中,并且 NAudio 我相信我已将其设置为主动从我的设备(声卡)中获取音频并利用示例编码器代码将编码的音频放入_playBuffer。
我的下一个任务是从 RDP 获取编码数据并使用它发送它,以便可以在另一台机器上的客户端应用程序中发送它以进行解码,在那里它将被解码并从他们的声音设备中播放出来。
我是否正确理解 _playBuffer 中的数据是现成的编码数据?或者这是否需要对 RTP 数据包进行不同的拆分?(我在这里看到了一个 uLAW 示例,但我不确定我是否可以适应我的需要。因为下载的源代码是用似乎是德语的注释 - 但我几乎不会说和写英语作为第一语言 - 即使那些也不是非常有帮助。)
(我什至使用了正确的术语吗?)截至目前,您看到的股票代码通过 WaveOut 将 _playBuffer 数据放回,就像他的示例一样 - 我在这里忽略了它并留下来解释我的(可能缺乏)理解。(如果它是“可播放的”,它就是“可发送的”。)
另一个问题是我的意图是在互联网上为点对点多播流 - 尽管我不确定多播是我想要的。
感谢您为帮助我了解如何通过 RTP 流获取数据而做出的任何贡献。
哦,是的,这首先开始于我从一个教程示例中重新创建一个 VU 表 - 因此命名空间名称和额外代码,它确实起作用。
android - 使用 vorbis AudioEncoder 录制时抛出 IllegalStateException
我正在尝试使用 ogg vorbis 格式录制音频捕获,但是在使用 mp3 格式时调用 start() 时出现 IllegalStateException 一切都很好我的 MediaRecorder 代码 snnipet:
如果可以选择将 MediaRecorder 与 Opus 编码器一起使用,那很好,我想要一个例子。我正在寻找一种免费的记录格式,所以我不能使用 mp3。
我的日志:
ios - 适用于 iOS 的 Opus,以 16000 的采样率崩溃
我正在使用 Opus for iOS(Objective-C 和 C++)开发 Voip 应用程序。
它适用于 8000、12000、24000 和 48000 采样率,但 16000 除外,其中应用程序在 opus_encode 方法上崩溃。
这是我正在做的事情:
常数:
之后,我使用来自 m_oAudioSession.sampleRate 和 m_oAudioSession.IOBufferDuration 的真实采样率和缓冲持续时间。它们被设置到 m_fSampleRate 和 m_fBufferDuration 变量中。
配置如下:
我做的计算是:
音频单元的读写是使用 m_sInputBuffer 完成的。
这是作品的创作:
Opus 配置如下:
当我编码和解码时,我使用这些方法:
当应用程序应该发送数据时:
这是阅读:
inputAudioQueue 是来自我的音频单元回调的记录数据的队列。
outputAudioQueue 是我的音频单元回调中用于播放声音的队列。
m_iMaxPacketSize 与 m_iBufferSizeBytes 相同。
我的问题是:
我想知道,我的计算是否正确?
如果没有,我该如何改进它们?
您看到代码中有任何错误吗?
当采样率设置为 16000 时,您对修复 opus_encode 方法的崩溃错误有什么建议吗?
先感谢您。
PS。我对 16000 的采样率进行了一些测试,发现:
如果我使用这个公式:frame_duration = frame_size / sample rate,并且如果我将 frame_duration 设置为preferedIOBufferDuration:
120 / 16000 = 0.0075 //AVAudioSession 设置 0.008000 —— 崩溃
240 / 16000 = 0.015 //AVAudioSession 设置 0.016000 —— 崩溃
480 / 16000 = 0.03 //AVAudioSession 设置 0.032000 —— 崩溃
960 / 16000 = 0.06 //AVAudioSession 设置 0.064000 —— 崩溃
1920 / 16000 = 1920 / 16000 = 0.12 //AVAudio Session 设置 2 ——
88800.2 / 16000 = 0.18 //AVAudioSession 设置 0.128000 —— 崩溃
然后我发现没有编码器崩溃,采样率为 16000,preferredIOBufferDuration 为 0.12(1920),其中 AVAudioSession 设置为 0.128000。所以它只在这种情况下有效。
有任何想法吗 ?
c++ - 使用 libwebm (VP8/Opus) 的非音频视频 -- 同步音频 --
我正在尝试创建一个非常简单的 webm(vp8/opus) 编码器,但是我无法让音频正常工作。
ffprobe 确实检测文件格式和持续时间
Stream #1:0(eng): Audio: opus, 48000 Hz, mono, fltp (default)
视频可以在 VLC 和 Chrome 中正常播放,但没有音频,由于某种原因音频input bitrate
始终为 0
大部分音频编码代码是从 https://github.com/fnordware/AdobeWebM/blob/master/src/premiere/WebM_Premiere_Export.cpp复制而来的
以下是相关代码:
更新 #1:问题似乎在于 WebM 需要交错的音频和视频轨道。但是我不知道如何同步音频。我应该计算帧持续时间,然后编码等效的音频样本吗?
.net - Naudio opus 编解码器支持
在找不到最新的 opus ( http://opus-codec.org/ ) .NET 包装器后,我意识到 (naudio) + (opus) 可能 = (很好用)。问题是,我从来没有真正使用过 naudio,即使我已经下载了它并且可以在需要时使用。所以,问题是,naudio 是否支持 opus-codec,如果不支持,是否有可能支持它,如果支持,必须实现哪些类才能实现这一点?
compilation - 编译 opus-codec API 库
首先,要诚实。我是 ac#/java 语言级别的居民。所以我不知道如何编译诸如 opus 之类的 native-C 项目。
我试过自己做,我试过用谷歌搜索它。我只需要帮助编译 opus-codec API(在 Windows 上)。
编译完库后,我将为它的 API 构建一个包装器。虽然我的搜索确实找到了针对我当前项目的语言 (c#) 的 opus 包装器,但我找不到最新的。我不知道这是否重要,但我需要它是因为它的 VoIP 功能。
对不起我在这件事上的愚蠢。
[更新]
使用 Visual Studio 2010: Ultimate 编译后,我有一个 .lib 库文件。我需要一个.dll。我不知道我在做什么。帮助?
c++ - 解码音频后调用阻塞 snd_pcm_writei 会导致奇怪的播放吗?
如果我的问题标题很糟糕,请原谅我。我的妻子总是告诉我我不擅长措辞。
我编写了一些代码来读取由另一个线程填充的缓冲区。缓冲区充满了由 opus 编解码器编码的音频数据。每次 20 毫秒从远程端接收 VoIP 数据。为了尽可能快地播放音频,在一个循环中,我一次从缓冲区中取出 20 毫秒的数据,然后对其进行解码,然后将其直接发送到 snd_pcm_writei 上播放。
我在 Google 上查看了一些关于将 snd_pcm_writei 与先前编码的音频一起使用的示例,以了解其他人是如何做到的。我运气不太好。
我的想法是,如果我在等待互斥体并等待编码,我无法从逻辑上看到音频“流畅”。我想在每 20 毫秒帧之间会有一段时间没有音频发送到扬声器。我的怀疑是否正确,这可能会产生不完美的音频?
我的代码与此相关:
ios - 如何使用 OPUS 格式在我的 Xamarin.iOS 应用程序上录制音频?
是否有任何使用 OPUS 格式录制音频的示例?
我使用的是 OPUS 格式,因为它可以以小尺寸录制高质量的音频。我已经下载了 OPUS Xamarin 库,但找不到教程或任何示例代码。
我找到了这段代码:
AudioStream.RegisterCodec("opus", 48000, 2, () => { return new OpusCodec(); }, true);
我不知道如何添加到我的录音样本中。我在用着AVAudioRecorder
python - 尽管已安装 Opus,但不会导入
我已经在 gitbash 中使用 pip 为 python 3.4 安装了最新版本的 opus
尽管如此,当我尝试导入它时,我会收到一个未安装的错误
...