问题标签 [audioqueueservices]

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

iphone - 使用 AudioQueueServices 提取 mp3 文件持续时间

我已经使用 AudioQueueServices 实现了一个流式 mp3 播放器,它通过 NSURLConnection 下载 mp3。播放、暂停和搜索效果很好,但是我不知道如何在 mp3 文件仍在下载时提取音频的持续时间。我希望能够从 id3 标签中提取信息,但对如何做到这一点一无所知。有什么想法吗?

0 投票
2 回答
882 浏览

iphone - iPhone SDK 中是否有 FSRef 或者是否有可以替代 FSRef 的东西?

这个问题可能听起来很愚蠢,但问题是:我正在学习如何使用音频队列,而我采取的示例 (aqtest) 对我来说是一个很好的指南,直到我最近发现 aqtest 不适用于 iPhone . (愚蠢的我)我在互联网上服务,发现没有适用于iPhone的FSRef。

如果可能的话,我想找到一种解决 FSRef 问题的方法。那么问题来了:我可以使用其他东西来代替 iPhone SDK 上存在的 FSRef 吗?还是我错过了什么?

0 投票
4 回答
11224 浏览

iphone - 如何正确处理 Cocoa Touch (Objective-C cross C++) 中的前向声明/#import?

我正在尝试编写此头文件:

AQPlayer 是一个用 C++ 编写的 .mm 文件。

我试图在这里进行类前向声明​​,但它向我抱怨:

error: cannot find interface declaration for 'AQPlayer'

所以我尝试“#import”头文件,但它抱怨一些完全不正确和奇怪的东西。这是抱怨的错误的一部分:

在包含的文件中

我错过了什么吗?我不能为此做一个前向声明吗?

0 投票
2 回答
14648 浏览

iphone - 如何获取 iPhone 上资源的文件系统路径?

在 iPhone 上,我需要获取资源的路径。好的,做到了,但是当涉及到 CFURLCreateFromFileSystemRepresentation 的事情时,我只是不知道如何解决这个问题。为什么会出现这个错误?任何解决方案或解决方法将不胜感激。先感谢您。

为了在 iPhone 上使用 AudioQueue 播放音频,我查看了以下示例:SpeakHere、AudioQueueTools(来自 SimpleSDK 目录)和 AudioQueueTest。我试着做这做那,试图把谜题放在一起。现在,我陷入了困境。由于上面的 sndFile 抛出的异常,程序崩溃了。

我正在使用 AVAudioPlayer 在我的 iPhone 游戏中播放所有声音。在真正的 iPhone 设备上,当播放声音时结果非常滞后,所以我决定需要使用 AudioQueue。

0 投票
1 回答
1110 浏览

objective-c - 使用 AudioQueue 创建文件时缺少块

所以一个 .wav 文件有几个标准块。在我使用的大多数文件中,首先是“RIFF”块,然后是“fmt”块,然后是“DATA”块。使用 AVAudioRecorder 录制时,会创建这些块(尽管在“DATA”块之前会创建一个额外的“FLLR”。)

使用 AudioQueue 创建文件时,不会创建那些标准块。相反,AudioQueue 按顺序创建“caff”、“desc”、“lpcm”、“free”和“data”块。

这是怎么回事?不是需要“RIFF”和“fmt”块吗?如何强制包含这些块?

我正在通过以下方式创建文件:

AudioFileCreateWithURL(URL, kAudioFileCAFType, &inputDataFormat, kAudioFileFlags_EraseFile, &AudioFile);

inputDataFormat 是具有完整属性的 AudioStreamBasicDescription。

那么,至少,如何使用 AudioQueue 编写“RIFF”和“fmt”块?

谢谢。

0 投票
1 回答
3947 浏览

iphone - 使用 AudioQueue 读取音频缓冲区数据

我正在尝试通过 AudioQueue 读取音频数据。当我这样做时,我可以验证文件的位深度是否为 16 位。但是当我得到实际的样本数据时,我只看到从 -128 到 128 的值。但我也看到了看起来可疑的交错数据,这让我很确定我只是没有正确读取数据。

因此,首先,我可以验证源文件是 44100、16 位、单声道 wav 文件。

我的缓冲区是这样分配的:

所有相关值均设置并用于:

作为测试,为了让我可以看到检索到的数据,我运行:

现在,我知道我的源文件到处都是峰值,但我看到的最大值只有 -128 和 128。由于这是一个 16 位文件,我希望这些值改为 -32768 到 32768。

此外,数据中似乎存在两种模式。以下是返回数据的示例:

现在看看从第二行开始的每隔一行:-13。看看它是如何增加的,不是均匀的,但至少是平滑的?奇数行没有那么平滑。

我的第一个想法是这是交错的立体声数据,但不,它只有一个通道,所以不应该有任何交错,对吧?

我最好的猜测是我只是错误地读取了数据,因此样本数据跨越了两个返回。知道如何正确阅读吗?

感谢您阅读整个问题,以及您可以提供的任何见解。

0 投票
2 回答
1461 浏览

iphone - 使用音频队列流式传输音频。如何在播放结束前获取音频文件的长度?

已经完成了播放器的实现。我想实现进度条。但我想知道这是否可能,因为我们正在播放音乐。除非我们事先得到歌曲的长度。

拜托,我需要你的建议。

0 投票
1 回答
505 浏览

iphone - AudioQueueOfflineRender 返回空数据

我在使用 AudioQueueOfflineRender 解码 AAC 数据时遇到问题。

当我在调用后检查缓冲区时,它总是充满了空数据。我确保输入缓冲区有效并且提供了数据包描述。

我搜索并发现其他一些人也有同样的问题: http: //lists.apple.com/archives/Coreaudio-api/2008/Jul/msg00119.html

此外, inTimestamp 参数对我来说没有意义。为什么渲染器要关心音频中缓冲区的开头对应的位置?如果我传入 NULL,该函数会引发错误,所以无论如何我都会传入时间戳。

0 投票
2 回答
942 浏览

iphone - 构建更好的位置音频 [AudioQueue 操作]

我正在构建一个应用程序,该应用程序需要真正准确的位置音频,直至建模耳间时间差 (ITD) 水平,即立体声通道之间的轻微延迟差异随声音相对于听众的位置而变化。不幸的是,iPhone 的 OpenAL 实现没有这个功能,SDK 中也没有提供延迟音频单元。

经过一番阅读,我决定解决这个问题的最佳方法是通过操作 AudioQueue 来实现我自己的延迟(我还可以看到我未来的一些项目可能需要学习这些东西,所以这是学习的好借口)。但是,我根本没有任何低级音频编程的经验,当然也没有使用 AudioQueue。试图学习两者:

a) 音频处理的一般理论

b) AudioQueue 如何实现该理论的细节

事实证明,一次吸收太多了:(


所以,我的问题是:

1) 从哪里开始学习 DSP 以及音频生成和处理的一般工作原理(深入到音频数据在内存中的结构、混音如何工作,诸如此类)的好地方?

2) 什么是了解 AudioQueue 是如何做到这一点的好方法?有没有很好的例子来说明如何从生成的环形缓冲区中读取它,而不是AudioFileReadPackets像 Apple 的 SpeakHere 示例那样按需获取文件的位?

而且,最重要的是

3)有没有我忽略的更简单的方法?

0 投票
3 回答
1945 浏览

iphone - 如何降低 iphone 的 sdk Audioqueue 的声音?

我正在使用 Aran Mulhollan 的 RemoteIOPlayer,在 SDK iphone 中使用音频队列。我可以毫无问题: - 添加两个信号来混合声音 - 通过乘以我从 wav 文件中获得的 UInt32 来增加音量

但是其他所有操作都会给我带来扭曲和失真的声音,尤其是我无法分割信号。我似乎无法弄清楚我做错了什么,除法的实际结果似乎很好;声音/信号处理的某些方面显然必须躲避我:)

任何帮助表示赞赏!