问题标签 [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 回答
29873 浏览

android - 使用 Android SDK 从原始 PCM 数据创建 WAV 文件

我正在尝试使用 AudioRecord 类来录制 WAV 文件。问题是它只提供原始 PCM 数据,如果我将它写入文件,没有标题信息,所以它不会在任何媒体播放器中播放。如何从这些原始数据创建 WAV 文件?

或者,有没有其他方法可以将 Android 中的声音录制到 WAV 文件(或 MP3)?

哦,我知道 MediaRecorder 不能使用,因为它不支持 WAV 或 MP3 格式。

0 投票
4 回答
10837 浏览

iphone - 提取 iPod Library 原始 PCM 样本并播放音效

我正在尝试从 iPod 库中的 MP3 中提取原始 PCM 样本,以便我可以播放歌曲并操纵音高、速度和应用音效(例如过滤器)。我已经走上了 AVPlayer 和 AVAudioPlayer 的路线,它们都不允许对播放进行太多控制。

下面的代码是据我所知。我现在不知道如何处理我的 while 循环中的 CMSampleBufferRef,因为我不知道使用哪个框架来播放音频并应用此类效果。

知道实现这一目标的最佳方法是什么吗?我已经查看了使用 AVAssetWriter 转换文件的情况,但这对我来说不会削减它,因为该过程太耗时。当然,我可以将 PCM 样本读入内存进行播放,而无需先将它们写入磁盘?

注意:我知道下面的代码引用了项目中的 mp3,但我知道这种方法的工作方式与我从 MPMediaPropertyAssetURL 中提取 NSURL 相同

0 投票
2 回答
115683 浏览

ffmpeg - ffmpeg 可以将音频转换为原始 PCM 吗?如果是这样,怎么做?

我目前正在使用成功ffmpeg转换FLV/SpeexWAV/pcm_s16le。但是,我现在需要输出格式为 RAW,即 PCM 签名的 16 位小端序,没有 WAV 标头。我尝试了以下方法:

但 ffmpeg 回应:

我也尝试使用output.pcmoutput作为输出文件名,结果相同。

我还尝试使用-f标志来指定原始格式,但这给出了:

FFmpeg 可以吗?如果是这样,怎么做?

0 投票
2 回答
2912 浏览

java - AudioRecord PCM数据没用?

我已经在我的 android 应用程序中使用 Mic 进行了录制,并且在使用 AudioPlayer 类将数据流式传输时,它播放得非常好。我的问题是我想在这个数据上附加一个 wav 标头,以便它可以在应用程序之外播放。我很确定在使用其他音频文件在十六进制编辑器中播放后创建标题的方法会导致记录的 pcm 数据不能用作 wav 文件中的原始数据?

任何人都可以对此有所了解吗?我可以将 pcm/wav 文件作为原始文件导入 audacity,它可以完美播放,但是当我尝试打开 wav 时,我只会听到噪音,再次暗示 pcm 数据有问题。

录音设置:

标题变量:

转换器

0 投票
2 回答
3212 浏览

android - 从本机代码将 PCM 音频数据写入音频设备

是否可以直接从本机代码将 PCM 样本写入 Android 下的音频设备?我已经能够通过将数据发送到套接字并使用 AudioTrack 来重现 PCM 样本。是否可以通过直接从本机代码访问来避免所有通往音频设备的路径?谢谢!

0 投票
1 回答
2564 浏览

objective-c - 将 16 位 PCM 值转换为 -1 到 1 值

这是我的第一篇文章,所以我希望有人可以帮助!

我正在使用 AudioFileReadPackets 函数读取音频数据(在 CoreAudio 中),此代码工作正常并将 16 位 PCM 值加载到缓冲区中。

第一个样本值是:'65491'(此音频开头无声)。我知道这是一个无符号整数,所以我的问题是,如何将此值转换为 -1 到 1 的范围。

目前我将样本值除以 32768.0 成一个浮点变量,就像这样......

但是,对于上面给出的示例(作为示例),这会导致输出“1.998626709”不为零(因为它应该是静音)?

话虽如此,当我稍后在文件中查看样本时,我知道它的值在“0.3”标记附近,算法的结果出现在“0.311584473”,我认为这是正确的?

那么为什么第一个样本没有被读取为零,正如我所知道的那样?

0 投票
1 回答
78 浏览

audio - “WAV 参数集”是正确的名称吗?

我正在向一个外部组件发送一些元数据,该组件的工作是播放通过网络传输的 PCM WAV 文件。元数据由以下字段组成:

  • 每秒样本数
  • 每个样本的位数
  • 频道
  • 额外信息大小

你怎么称呼这个元数据?“WAV参数集”是个好名字吗?

0 投票
2 回答
3371 浏览

c - 如何使用 fread 和 fwrite 从文件中读取 pcm 样本?

我想使用 fread 从文件中读取 pcm 样本,并想确定样本的信号强度。我该怎么做?

对于读取,多少字节构成 1 pcm 样本?我可以一次读取超过 1 pcm 的样本吗?这适用于 WAV 和 AAC 文件。

0 投票
1 回答
2001 浏览

signal-processing - 如何确定 pcm 样本的信号强度?在权力方面

我读到信号功率=信号*信号。那是什么?什么是信号?我们如何获得它?我正在用 C 编程(如果有必要发布)

0 投票
2 回答
3533 浏览

c++ - PCM 到 AAC 与 FAAC,numberBytesWritten >> 16bits?


我的问题的下一次迭代:

感谢您的投入,它帮助我更多地了解 Frame 和 inputSamples 实用程序。我已经用你给我的新知识对我的源代码进行了修改。但是我仍然有问题,所以我可能没有完全理解你的意思。这是我的 OpenFile 函数,对不起名称,但我稍后会重构;什么时候可以工作=)

我正在打开文件,检查它的大小,创建一个短缓冲区并将 wav 的数据读入短缓冲区,最后我返回它。

总的来说,现在我评论了 G711 解码器。当我运行应用程序时,faacEncOpen 为我提供了 2048 的 inputSamples(这是逻辑,因为我在 Wav 的文件中有 2 个通道用于 1024 的 FRAME_LEN)。因此,如果我理解正确,我的应用程序需要 1 帧 == 2048 个样本。因此,对于我调用 faacEncEncode 的每个帧,我给出 tmpInputBuffer,它是一个与 inputBuffer[i * inputSamples] 索引处的 inputSamples 大小相同的缓冲区。

当输出数据转储到 .acc 文件(作为 RAW AAC)中时,我使用应用程序 mp4muxer.exe 创建一个 .mp4 文件来收听最终转换后的声音。但是音质一点都不好...

我想知道是否有一些我没有看到或不明白我应该看到的东西。

提前感谢您提供有用的信息。