问题标签 [adpcm]

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 投票
0 回答
839 浏览

c# - 无法使用 naudio 播放 adpcm 音频文件

我尝试用 NAudio 播放 adpcm alaw(我认为它的 g.723 adpcm 40)文件没有成功。

该文件是立体声采样率为 8000,位深为 16。

当我尝试使用 2 个通道创建 adpcm alaw 格式时,出现 acm not possible 错误。(错误是因为我尝试创建一个 SampleCannel 和 SampleCannel 类强制获取 pcm 或 ieefloat。所以我调用 CreatePcmFormat)。

因此我用 1 个频道创建它,然后我可以播放它,但我听到噪音。

vlc 可以成功播放文件。

0 投票
1 回答
1740 浏览

audio - Web Audio Api 实时流媒体 PCM ADPCM

我有一个传递客户端 PCM 或 ADPCM 数据的服务器。

我最初决定使用 PCM 是因为我不想处理编码和解码。

我让 PCM 工作,但是在我听到故障的每一块音频之间。(有点像剪辑)

所以我认为原因可能是延迟/高质量音频和所有这些东西。

所以我决定使用ADPCM来减少数据量。我用javascript写了一个adpcm到pcm解码器。这很麻烦。我希望由于数据数量减少可能会阻止故障(数据会赶上正在播放的内容)

但是我错了。我仍然得到故障。

这甚至可以用 TCP 完成吗?或者这是一个失败的原因。我没有通过 websockets 的 UDP。

我需要实现缓冲算法吗?我不想这样做,因为它是实时音频,我只想尽可能快地处理它。

你们知道通过网络阅读实时音频的好链接吗?

我可以给出代码示例,但这是一个高级问题。

PS:我尝试使用标签,但我们遇到了缓冲问题,我们无法控制它。我也没有从服务器获得任何流量控制。它并没有说音频启动器或音频停止了我们的暂停。这是一个推送协议,我得到的只是 ADPCM 和 PCM 数据

0 投票
1 回答
411 浏览

avaudiorecorder - iOS - AVAudioRecorder - 使用 ADPCM 或 IMA 录制

使用这些录音设置,我可以让 AVAudioRecorder 工作:

一旦我改变这个:

对此:

我收到以下错误:

也就是说,不支持音频格式。kAudioFormatUnsupportedDataFormatError

我需要做什么才能让 ADPCM 或 IMA 与 AVAudioRecorder 一起使用?

0 投票
1 回答
893 浏览

python - 使用 Pygame 播放 ADPCM 流

我有一些原始的 ADPCM 压缩音频流,我想用 pygame 播放它们,但据我所知,用 pygame 是不可能的。如何用 python 将它们解压缩为正常的 PCM 流(或 pygame 可以播放的其他东西),然后用 pygame 播放它们?

我已经尝试过 audioop 模块,因为它可以将 ADPCM 转换为线性流,但我不知道什么是线性流,也不知道如何使用转换它们的函数。

0 投票
0 回答
412 浏览

ios - 在 iOS 上播放 ADPCM 流 (MS IMA 0x11)

我正在使用 AudioUnit / RemoteIO API 来实现流式音频的播放。其他格式,如 a-law 和 u-law 运行良好。

这是我如何设置 a-law 格式的示例:

我尝试使用的格式是 MS ADPCM,在此处进行了描述。

据我了解,在这种情况下,我需要以某种方式计算每个数据包的帧数。我拥有的唯一附加信息是 nBlockAlign 字段,多媒体 wiki 将其描述为“IMA 编码数据块的大小”。

我对此感到茫然。

每个数据包的帧数是如何计算的?它是否涉及来自 nBlockAlign 的块大小?

我看到 kAudioFormatDVIIntelIMA 和 kAudioFormatAppleIMA4 被列为格式。iOS甚至支持这种ADPCM吗?

0 投票
0 回答
794 浏览

ios - iOS 上真的支持 kAudioFormatDVIIntelIMA 吗?

根据iOS 技术概述,据说支持 DVI/Intel IMA ADPCM 格式。具体来说,有一段表明:

iOS 支持许多行业标准和 Apple 特定的音频格式,包括:

AAC
Apple 无损 (ALAC)
A-law
IMA/ADPCM (IMA4)
线性 PCM
µ-law
DVI/Intel IMA ADPCM
Microsoft GSM 6.10
AES3-2003

但是,在尝试使用 kAudioFormatDVIIntelIMA 格式键时:

我收到错误消息:

kAudioFormatUnsupportedDataFormatError 为 1718449215。那么给出了什么?

(请注意,如果我将其更改为 kAudioFormatAppleIMA4,则上面的代码可以正常工作。所以似乎只支持 IMA4 ADPCM,而不支持 DVI/Intel IMA ADPCM)。

0 投票
1 回答
316 浏览

audio - Windows 手机 xaudio2

海吉

我正在使用一个库来在此处找到的 Windows Phone 中播放音频。 哪个工作正常。

然后我试图向这个系统添加一个新的 .wav 文件。我得到一个内存错误。在互联网上搜索让我不得不使用 AdpcmEncode 命令行工具对音频进行编码。但是,使用此工具无法转换我的 .wav 文件。任何人都可以在这里提供帮助,关于编码以使音频正常工作吗?

此外,仅供参考,我的音频文件可以有多大?我想我读了一些 20 mb 的地方,但不确定。

0 投票
1 回答
1216 浏览

naudio - 使用 NAUDIO 播放 Dialogic ADPCM 音频文件

我正在尝试使用 NAUDIO 库播放 Dialogic ADPCM 文件(无 RIFF 标头)。我尝试了几种不同的方法,但到目前为止都没有成功。我尝试了一个简单的 wav 转换:

这实际上加载了文件并开始播放,但它非常嘈杂和失真(实际上不可听),几乎就像选择了错误的编解码器来转换文件一样。我尝试了更具体的转换,因为 NAUDIO 似乎支持内置的 Dialogic ADPCM:

这会在调用 WaveOut.Init() 时引发异常 - 异常是“WaveBadFormat 调用 waveOutOpen”我也尝试使用

对于我的 WaveFormat 对象-我得到了同样的例外。该文件以 8000 Hz 的采样率录制,只有 1 个通道。任何帮助解决这个问题将不胜感激。谢谢

0 投票
2 回答
7403 浏览

audio - 如何使用 sox 将无头 ima-adpcm 原始文件转换为 wav

我正在尝试将原始文件(无标题)转换为 wav

它在 ADPCM 16 速率 8000

我尝试了三个控制台命令

这些触发相同的错误:

最后一次尝试

触发另一个错误

你知道我为什么会收到这些错误吗?

谢谢

编辑

前 48 个字节的十六进制转储仅供参考

0 投票
1 回答
225 浏览

c# - acmStreamConvert - 目标缓冲区始终为空

我有一个编码的 adpcm 文件(采样率为 9600,位深度为 4),我想用 NAudio 播放它。

我用 RawSourceWaveStream 读取文件,然后执行以下操作:

PS 如果有什么不同,我实际上也用 SampleProvider 封装了流。

当我尝试播放文件时,在 acmStreamConvert 中,目标缓冲区始终为空,因此没有缓冲区填充到 waveOut 缓冲区。

我在所有 acm 函数中都没有错误,包括 convert 函数,所以我知道格式(源和建议)是正确的,那么为什么从 acmConvert 返回的缓冲区是空的?

编辑

我添加了一些可能会有所帮助的信息..

我尝试播放的 adpcm 文件是我通过以下步骤创建的文件:

  1. 我有一个原始 pcm 文件(没有 wav 标头)采样率 = 9600,每个采样的位数 = 16,通道 = 单声道
  2. 我从原始文件创建了一个 wav 文件
  3. 我读了这个 wav 文件并将其转换为 adpcm 文件 sample rate=9600, bits per sample=4, channels=mono
  4. 我阅读了编码的 adpcm 文件并尝试播放它但没有成功

使用 NAudio 完成的所有步骤。

我检查了所有输出文件(raw、wav、adpcm)的信号,信号看起来正确。使用 Audacity 完成检查。

我还尝试使用 WaveFileReader 读取 adpcm,但随后在 WavFormatConversionStream 的读取方法中,“计数”始终为零(因为块对齐检查)。

原始采样率为 9600 会不会有问题?

还有一件事,我刚刚看到 WaveFileWriter 无法创建每个样本位 = 4 的文件,所以我的编码文件实际上是使用每个样本 16 位而不是 4 位创建的。