问题标签 [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 投票
1 回答
129 浏览

c# - 一种将托管代码中的 mp3 帧解压缩为 PCM 或更好的 ADPCM 的方法

有没有办法在不使用本机代码 dll 的情况下将托管代码中的 mp3 帧解压缩为 PCM 或更好的 ADPCM 数据?DllImport 和 P/Invoke 在平台上受到限制。我检查了 NAudio 及其所有 mp3 解压缩类都需要 windows dll,所以我已经没有想法了

0 投票
1 回答
754 浏览

c++ - 流和循环 MS ADPCM (WAVE_FORMAT_ADPCM)

我正在尝试使用 XAudio2 流式传输 MS ADPCM 文件(在 C++ 中,但这个问题似乎与语言无关)。

该文件使用 ADPCMEncode.exe 进行编码,这给出了一个带有 WAVE_FORMAT_ADPCM 格式标记的 WAV 文件。

像任何流一样,我创建了一个 IXAudio2SourceVoice(从文件开头使用完整的 ADPCMWAVEFORMAT),并在它请求时为其提供块对齐缓冲区。数据似乎可以正常播放,直到循环播放。

循环读取器如您所料:如果发生短读取,则将偏移量返回到开头并执行另一次读取以填满缓冲区的其余部分。PCM 很好,但 MS ADPCM 有时声音会停止。它似乎停止要求更多缓冲区,因此用完并停止。

错误发生的时间各不相同。有时它会在数据循环时立即发生,有时在循环数次后发生。显然,我需要通过 XAUDIO2_BUFFER 传递一些额外的信息,但我找不到任何文档告诉我什么。

谁能指出我正确的方向?

0 投票
2 回答
1432 浏览

wav - 将每个样本 8 位音频编码为每个样本 2 位的方法

如果 ADPCM 可以将每个样本 16 位的音频存储为每个样本的 4 位,那么有没有办法将每个样本的 8 位音频存储为每个样本的 2 位?

0 投票
1 回答
1236 浏览

google-chrome - HTML5 音频浏览器无法解码使用 IMA ADPCM 编码的 wav 文件

首先,我很抱歉,因为我基本上是使用音频的新手。

我目前使用的 Web 应用程序是使用 asp.net/vb.net 设计的,它允许用户使用 Nanogong 小程序 ( http://nanogong.ust.hk/doc_faq.html )录制和播放音频。我们正在转向 HTML5 音频,因为对 NPAPI 插件的支持已从大多数浏览器中移除(Firefox 除外,直到今年年底)。

Nanogong 使用 4-bit IMA ADPCM 编码 wav 文件。我可以使用 sox 将 Nanogong wav 文件转换为 16 位 PCM,然后使用该 wav 文件创建一个使用 oggenc2 的 ogg 版本和一个使用 lame 的 mp3 版本。我们需要 Firefox 和 Chrome 的 ogg 文件,以及 Safari 的 mp3。

我想了解的是为什么浏览器似乎无法播放 4 位 IMA ADPCM 格式?他们只能播放 8 位或 16 位的 PCM 格式吗?在 Firefox 中,firebug 指示 IMA ADPCM wav 文件无法解码;Chrome 和 Opera 在开发者控制台中没有提及任何内容,但我猜它与 Firefox 相同,因为该文件不会在这些浏览器中播放。

我试过在网上搜索,但似乎没有太多关于 HTML5 音频的信息,或者其中大部分似乎是较旧的信息。我还看到更多关于从 PCM 转换为 ADPCM 的文章。

任何指导或资源将不胜感激。谢谢!!

0 投票
1 回答
216 浏览

c# - NAdio ImaAdpcm 输入重新采样 AcmNotPossible 错误

我正在尝试将音频流编码为 IMA ADPCM,这是我的代码。

每次我运行代码时,我都会收到此错误“NAudio.MmException:'AcmNotPossible 调用 acmStreamOpen'”

0 投票
1 回答
196 浏览

c - 为什么我的 ADPCM 解码器似乎在振荡?

我正在为嵌入式处理器(ARM Cortex-M4)编写代码

此代码的目的是解码 Intel/DVI 格式(也称为 IMA 格式)的 4 位 ADPCM。audioop我已经使用 Python 的模块对方波的 ADPCM 样本进行了编码。然后我使用相同的audioop模块成功地解码了这个样本,它与输入非常匹配。

但是,我无法在嵌入式处理器上正确解码输入数据。代表输出的valpred值似乎在大的正值和大的负值之间失控并振荡。这似乎是由sign值的行为驱动的。我遇到的问题是,这段代码实际上是 C 实现代码的抄本,audioop删除了 Python 部分。据我所知,该算法是相同的。然而,对于几乎每个输入数据值,它似乎仍处于振荡状态。这显然是通过sign翻转vpdiff值来驱动的,但我看不出如何避免这种情况,因为量化步长如此之高(通常在最大步长 88 处)并且数据似乎确实有交替的符号。

这是我现在正在使用的实现。该adpcm_step_size数组包含量化步长(例如 7、8、9 ... 29794、32767),而adpcm_step_size_adapt包含步长增量(-1、-1、-1、-1、2、4、6、8、重复)。

这是输入方波输入的输出;可以看出,当 valpred 应该稳定在给定值时,它会在两个值之间快速振荡。

如果我只取第二个样本,它对于方波几乎可以接受,但对于其他波形会出现问题。这仍然不是一个可接受的解决方案,但也许它是问题原因的线索。

如果有人有任何想法,我将不胜感激。这几天我一直在为此烦恼。

编辑:audioop模块的源代码可以在这里找到https://github.com/python/cpython/blob/master/Modules/audioop.c,ADPCM解码器是audioop_adpcm2lin_impl.

0 投票
1 回答
1173 浏览

c - C语言中的ADPCM解码

当我尝试将 IMA ADPCM 解码为 16 位签名 PCM 时,我有半垃圾 PCM

我尝试在 WAV 文件中解码和编码 IMA ADPCM(22050 个样本/秒,4 位/样本,36(!)字节(?)对齐(?!),1 个通道)。

带有 WAV 文件的完整项目: https ://drive.google.com/open?id=1xuxwXj3Y_QhPDWhrQY7nmz8ycBE1cgyL

转换为 PCM WAV 的 ADPCM WAV 文件包含一些垃圾,但 ffmpeg 可以正常转换。当前未实现 PCM WAV 到 ADPCM WAV 的转换。

0 投票
0 回答
186 浏览

java - java声音api似乎不接受带有编解码器的.wav文件-IMA WAV ADPCM

我正在尝试使用 java sound api 计算 .wav 文件的持续时间。Java 声音 api 支持带有 PCM S16LE 编解码器的 .wav 文件,但它似乎不支持带有 IMA WAV ADPCM 编解码器的 .wav 文件。是否有任何库可以帮助我使用任何类型的编解码器获取各种 .wav 文件的持续时间,或者有什么方法可以在不使用任何库的情况下计算 .wav 文件的持续时间?

到目前为止,我已经尝试了很多:

有什么方法可以使用我在这里使用的相同逻辑来计算 IMA WAV ADPCM AUDIO 的 .wav 文件的持续时间?如果是,我如何获得文件的帧长度和帧速率?

0 投票
0 回答
85 浏览

audio - 如何解码 filename.g726 编码信息?

我尝试了所有播放 g726 编解码器文件的方法,但找不到解码器或如何播放 g726 文件。

我尝试过使用 ffmpeg、mplayer、aplay。

0 投票
1 回答
603 浏览

audio - 当我想在 RTP 中发送时,ffmpeg 不支持的编解码器 adpcm_ima_wav

当我想对 wav 文件进行编码并在 ffmpeg 中使用 rtp 发送时,我收到一条错误消息,提示“不支持的编解码器 adpcm_ima_wav”,但我可以使用 adpcm_ima_wav 对该文件进行编码并保存该文件,但我无法在 ffmpeg 中使用 rtp 发送。

下面显示此错误: