问题标签 [pcm]

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 投票
3 回答
3303 浏览

java - 将带符号的 int(2 字节,16 位)转换为双精度格式。使用 Java

我有问题。在 Java 中,我需要从 wav 文件中读取样本。文件格式为:wav、PCM_SIGNED、signed int of 2bytes = 16bits、little endian... 该对象读取 BYTES 中的音频样本,我需要将这两个字节转换为一个 double 值。我尝试使用这个公式,但它并不完全正确:

将结果与 Matlab 进行比较,我总是注意到 Matlab 中的实际值与 Java 中转换后的值之间的差异。有人可以帮我吗?谢谢你,戴夫

0 投票
3 回答
8149 浏览

java - 将 16 位 PCM Wave 数据转换为浮点数的正确方法

我有一个 16 位 PCM 格式的波形文件。我在 a 中获得了原始数据byte[]和一个提取样本的方法,我需要它们以浮点格式,即 afloat[]来进行傅立叶变换。这是我的代码,这看起来对吗?我正在使用 Android,所以javax.sound.sampled等不可用。

0 投票
3 回答
5127 浏览

iphone - 从线性 PCM 中提取音频通道

我想从 LPCM 原始文件中提取声道音频,即提取立体声 LPCM 文件的左右声道。LPCM 为 16 位深度、交错、2 通道、小端。从我收集的字节顺序是 {LeftChannel,RightChannel,LeftChannel,RightChannel...} 并且由于它是 16 位深度,每个通道将有 2 个字节的样本对吗?

所以我的问题是,如果我想提取左通道,那么我会获取 0,2,4,6...n*2 地址中的字节吗?而右声道是 1,3,4,...(n*2+1)。

同样在提取音频通道后,我应该将提取通道的格式设置为 16 位深度,1 个通道吗?

提前致谢

这是我目前用来从 AssetReader 中提取 PCM 音频的代码。这段代码可以很好地编写音乐文件而不提取其频道,所以我可能是由格式或其他原因引起的……

使用 audiofileservices 的输出格式如下:

0 投票
1 回答
2215 浏览

iphone - AudioConverterConvertBuffer 问题与 insz 错误

我对这个函数 AudioConverterConvertBuffer 有问题。基本上我想从这种格式转换

到这种格式

我想要做的是根据输入格式从 LPCM 缓冲区中提取音频通道(左通道或右通道),使其成为输出格式的单声道。一些要转换的逻辑代码如下

这是为 PCM 输出文件设置通道映射

这是在while循环中转换缓冲区

但是存在 insz 问题......所以它无法转换。我会很感激任何意见

提前致谢

0 投票
1 回答
1575 浏览

java - 来自 AudioTrack 流的通知消息

我已经实现了一个写入AudioTrack对象的 PCM 解码器。

AudioTrack一切似乎都很好,但是,当最后一个写入的块停止播放时,我需要从对象获得某种通知。

我注意到有一些回调方法,setNotificationMarkerPosition,但是我找不到任何关于如何使用它们的广泛文档。

提前致谢!

0 投票
1 回答
2395 浏览

c++ - 如何在 C++ 中有效地从 void* 数组中解包浮点、int16、int32 等数据?

我有一组 PCM 数据;它可以是 16 位、24 位压缩、32 位等。它可以是有符号的,也可以是无符号的,它可以是 32 位或 64 位浮点数。它当前存储为void**矩阵,首先按通道索引,然后按帧索引。目标是允许我的库采用任何 PCM 格式并对其进行缓冲,而无需处理数据以适应指定的结构。如果 A/D 转换器输出交错 PCM 的 24 位打包数组,我需要优雅地接受它。我还需要支持 16 位非交错,以及上述格式的任何排列。

我知道运行时的位深度和其他信息,并且我正在尝试有效地编码而不复制代码。我需要的是一种有效的方式来投射矩阵,将PCM数据放入矩阵中,然后再将其拉出。

我可以将矩阵分别转换int32_tint16_t32 位和 16 位带符号的 PCM;我可能还必须将 24 位 PCM 存储在int32_t32 位、8 位字节系统中。

谁能推荐一种将数据放入此数组并稍后将其取出的好方法?我想避免看起来像这样的大段代码:

限制:我在 C/C++ 中工作,没有模板,没有 RTTI,没有 STL。认为嵌入式。当我必须将它移植到具有 16 位字节的 DSP 时,事情变得更加棘手。

有没有人愿意分享任何有用的宏?

0 投票
1 回答
1677 浏览

winapi - 在 Windows 7 中模拟 PC 扬声器?

最近我很惊讶地发现,Windows API 中的 Beep() 函数从 Windows 7(和 Visa x64?)开始被重新路由到声卡。我目前正在开发一个 2D 视频游戏引擎,并认为允许使用 PC 扬声器将是一个很酷的功能。有什么方法可以在 Windows 7 中以编程方式调用 PC 扬声器?如果没有,是否有任何资源可以帮助通过声卡模拟 PC 扬声器?我知道 DOSBOX 能够做到后面...任何帮助表示赞赏。

- -担

0 投票
4 回答
17189 浏览

android - Android AudioRecord 问题?

我一直在搞乱 Android API 的 AudioRecord 功能,并发现了一些奇怪的行为。

背景信息:我的手机是 HTC Incredible 我正在使用 Eclipse 插件与模拟器一起进行 Android 开发。目标平台或操作系统是 2.2... 因为这是我的手机使用的。

一些代码:

这是我用来设置 AudioRecord API 的代码。现在,对于模拟器来说,它喜欢将 FREQUENCY 设置为 8000 以使其工作。返回缓冲区大小 640。对于手机,我使用 44100。这里的一个问题是,波形的结果 PCM 数据似乎是八位有符号波形。我得到从 -127 到 128 的值。我认为该值AudioFormat.ENCODING_PCM_16BIT会产生不同的结果。

我用线程处理音频,

我有一种方法可以使用SurfaceView. MIC 似乎有很多噪音。我也从模拟器和手机中得到这种噪音。我是否需要通过某种过滤器运行数据?我想用这些数据来计算一些有趣的 FFT 和一些东西,只是为了玩波。但我需要以某种方式减少噪音。

有没有其他人也经历过这种情况。有没有人有办法解决吗?

感谢您的时间和回复,谢谢,dk

0 投票
3 回答
17323 浏览

java - PCM Wave 文件 - 立体声到单声道

我有一个立体声音频文件。将其转换为单声道只是跳过每隔一个字节(在标题之后)的情况吗?它以 16 位签名 PCM 格式编码。我javax.sound.sampled有空。

这是我尝试过的代码不起作用:

此代码在.ogg使用 Jorbis 读取文件以将其转换为 PCM 数据后使用。唯一的问题是结果是立体声,我需要它是单声道的,所以如果有另一种解决方案,我很高兴听到它!

0 投票
3 回答
3246 浏览

pcm - 从 PCM 16 位波中过滤噪声的最佳算法?

我已经从 PCM 波产生了 FFT。过滤噪音的最佳方法是什么?

感谢您的时间和回复,dk