问题标签 [avaudioconverter]

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 回答
1205 浏览

ios - AVAudioConverter.convertToBuffer 抛出错误代码 -50

我需要将使用 2 个音频通道录制的 .wav 文件转换为只有 1 个通道的 .wav 文件,并将位深度从 32 减少到 16。我一直在尝试使用AVAudioConverter.convertToBuffer但是,转换会引发错误:Error Domain=NSOSStatusErrorDomain Code=-50 "(null)"

基本上,唯一真正需要改变的是将音频剥离到单个通道和位深度。我从不同的工具获取这些文件,所以我不能只改变文件的记录方式。

我在处理音频方面并不是那么出色,而且我有点难过。我正在处理的代码如下 - 我有什么遗漏吗?

至于输出:

0 投票
1 回答
1088 浏览

avfoundation - AVAudioConverter 在 iOS 10 中被破坏

AVAudioConverter 在 iOS 10 中似乎坏了。该代码在 iOS 9 中运行,现在

错误域=NSOSStatusErrorDomain 代码=-50 "(null)"

无论使用什么音频格式都会返回。每年都让我感到惊讶,基本的库功能停止工作。

0 投票
1 回答
2207 浏览

swift - AVAudioConverter 将 AVAudioPCMBuffer 转换为 AAC

我有一个问题AVAudioConverter。我正在尝试转换AVAudioPCMBuffersAAC.

这是我的转换函数,取自WWDC 2015“Core Audio 中的新功能” 会话 507

问题是 outBuffer 是空的。如果我打印它,我会得到输出<AVAudioCompressedBuffer@0x170012420: 0/6144 bytes>,所以你可以看到它没有被填充。

如果您想知道我是AVAudioPCMBuffer通过在AVAudioEngine. 我正在转换为与inputFormat使用AVAudioEngines主混音器相同的格式。

有谁知道解决这个问题?

0 投票
0 回答
332 浏览

ios - 如何在 iOS 中重新采样 pcm 数据

我想使用AudioConverterFillComplexBuffer来转换pcm缓冲区的采样率(32k到44.1k)。但我不知道为什么声音似乎改变了(噪音太大)。这里是主要代码:</p>

//转换回调

0 投票
0 回答
654 浏览

avaudiopcmbuffer - 如何使用 AVAudioConverter convertToBuffer:error:withInputFromBlock:

我想使用 AVAudioConverter 将 AVAudioPCMFormatFloat32 非交错 44.1 KHz 缓冲区转换为 AVAudioPCMFormatInt16 交错 48 KHz。

传入的 AVAudioPCMBuffer 有 800 个样本,我需要返回 1920 容量的 AVAudioPCMBuffer。

当我有一些音频但还不够时,块中提供的音频将转换为 outputBuffer。

当更多传入音频可用时,我再次调用 convertToBuffer 并重用相同的 outputBuffer。

问题是转换器而不是将转换后的音频附加到末尾,而是覆盖现有内容。

有没有办法在最后附加音频而不是覆盖它?

如果不是,我将不得不在返回任何传入的音频缓冲区之前等待获得请求数量的样本。

任何建议将不胜感激。

0 投票
2 回答
2745 浏览

swift - 带有 AVAudioConverterInputBlock 的 AVAudioConverter 处理后音频口吃

我正在尝试将音频缓冲区转换为不同的格式,并且我正在使用 AVAudioConverter。当您具有相同的采样率并且您不需要使用 AVAudioConverterInputBlock 时,AVAudioConverter 可以完成这项工作。

但是,如果我处理相同的采样率,我的音频数据就会出现奇怪的卡顿。我感觉我没有很好地处理输入块。输出中有重复两到三遍的单词。下面是完整的方法:

有什么想法吗?我从Apple 幻灯片示例中得到了这段代码:

0 投票
1 回答
5281 浏览

ios - 使用 AVAudioConverter Swift 将 AAC 解码为 PCM 格式

如何在 Swift 上使用 AVAudioConverter、AVAudioCompressedBuffer 和 AVAudioPCMBuffer 将 AAC 转换为 PCM?

在 WWDC 2015 上,507 Session 说,AVAudioConverter 可以对 PCM 缓冲区进行编码和解码,显示了编码示例,但没有显示解码示例。我尝试解码,但有些东西不起作用。我不知道是什么:(

来电:

这是转换代码:

结果 AVAudioPCMBuffer 的数据为零。在消息中我看到错误:

0 投票
1 回答
442 浏览

macos - 使用 AVAudioEngine 更改某些频道的音量

我正在开发一个混合来自 VideoCard 和外部声卡的音频的 mac 应用程序。

如何使用 AVAudioEngine 独立更改每个通道(不是每个源)的音量。

假设我有一个 16 个通道交错的 AVAudioPCMBuffer,我希望通道 1 和 2 的音量为 50%,其他为 100%

我应该从 1 个具有 16 个通道的 AVAudioPCMBuffer 转换为 16 个单声道 AVAudioPCMBuffer 并为每个通道设置一个 AVPlayerNode 吗?然后改变每个 AVPlayerNode 的音量?

或者我可以保留 o 有没有办法从 AVAudioMixerNode 更改底层音频单元?

还是我应该直接使用 CoreAudio AudioUnits?

0 投票
1 回答
233 浏览

ios - AVAudioConverter 损坏数据

我正在尝试AVAudioPCMBuffer从 Float32 44.1kHz 转换为 Int16 8kHz。我用AVAudioConverter. 但转换后我得到损坏的数据。当我每 100 毫秒从麦克风读取数据时,我每 800 个样本被破坏(读取数据中的第一个样本)。破损样本如下所示: 破损样本

这只是 800 个样本中的一个,但听起来每 100 毫秒的点击真的很烦人。这是我的一段代码:

当我在没有任何转换的情况下写入缓冲区时,我会得到清晰的声音而不会损坏。如果我每 200 毫秒读取一次数据,则每 1600 个样本都会被破坏。所以只有我得到的每个缓冲区的第一个样本被破坏了。

我真的不知道我的代码有什么问题以及为什么会这样。有什么错误吗?

PS 我并不真正关心转换,我只需要从麦克风获取 16 位 PCM 8kHz 原始音频数据。如果有人知道如何以另一种方式做到这一点,我将非常感谢您的帮助。

0 投票
0 回答
29 浏览

ios - 将流式 u-law 转换为 PCM 听起来很金属

我有一个语音流应用程序,它通过 websocket 接收实时音频,编码为 G.711 u-law 8KHz 单声道,我想使用AVAudioEngine.

为此,我将音频样本转换为具有相同采样率和音频参数的 PCM (Float32),使用AVAudioConverter.

出于某种原因,我听到的声音是金属的和回声的。

这是我的代码:

func convertAudio(data: Data)每次我从 websocket 接收音频数据时都会调用它。

我想知道我用于转换音频的代码是否不正确,或者是否有更好的解决方案来解决这个问题,并希望得到任何建议。