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

objective-c - AVAssetReader 到 AudioQueueBuffer

目前,我正在做一个小测试项目,看看是否可以从 AVAssetReader 获取样本以在 iOS 上使用 AudioQueue 进行播放。

我读过这个:(使用 AudioQueue 播放未压缩的原始声音,没有声音)和这个:(如何使用 AVAssetReader 在 iOS 上正确读取解码的 PCM 样本——目前解码不正确),

这两者实际上确实有帮助。在阅读之前,我完全没有声音。现在,我得到了声音,但音频播放速度非常快。这是我第一次涉足音频编程,因此非常感谢任何帮助。

我因此初始化读者:

我就这样抓取了数据:

最终将我们带到音频队列,以这种方式设置:

我们就这样排队

我试图尽可能地包含代码,以便让每个人都能轻松指出我在哪里是个白痴。话虽如此,我感觉我的问题出现在轨道阅读器的输出设置声明中或 AudioQueue 的实际声明中(我向队列描述我将要发送什么样的音频)。事实是,我真的不知道如何在数学上实际生成这些数字(每个数据包的字节数,每个数据包的帧数,你有什么)。对此的解释将不胜感激,并提前感谢您的帮助。

0 投票
1 回答
961 浏览

iphone - iOS 上的录音

我刚开始做一个项目,需要我在 iOS 上做很多与音频相关的事情。

这是我第一次在音频领域工作,完全不知道如何去做。因此,我在 Google 上搜索了文档,并且主要依赖于 Apple 文档。首先,我必须提到,这些文件非常令人困惑,而且常常具有误导性。

无论如何,为了测试录音,我使用了 AVAudioSession 和 AVAudioRecorder。据我了解,这些对于简单的录制和播放来说都是可以的。所以,这里有几个关于做更复杂的事情的问题:

  • 如果我希望在录制过程中对音频进行任何实时处理,是否需要使用音频队列服务?
  • 除了音频队列服务,我还有哪些其他选择?
  • 什么是音频单元?

我实际上得到了 Apple 的音频队列服务编程指南,并开始编写音频队列进行录制。他们的音频队列服务指南(PDF 第 19 页)上的“图表”显示正在使用 AAC 编解码器进行录制。但是,经过一番挫折和浪费大量时间后,我发现 AAC 录制在 iOS 上不可用 - “Core Audio Essentials”,“Core Audio Plug-ins: Audio Units and Codecs”部分。

这让我想到了另外两个问题:

  • 考虑到 Apple Lossless、iLBC、IMA/ADPCM、Linear PCM、uLaw/aLaw,什么是适合录制的格式?有没有人可以参考的图表?
  • 此外,如果无法使用音频队列进行 MPEG4AAC (.m4a) 录制,我怎么能使用 AVAudioRecorder 录制 MPEG4AAC (.m4a)?!

非常感谢您提前帮助我解决这个问题。我会非常感谢任何链接、方向和/或智慧之言。

再次感谢和欢呼!

0 投票
1 回答
2258 浏览

iphone - 仅从 iphone 的扬声器(不包括麦克风)录制音频输出

我正在尝试从 iPhone 扬声器录制声音。我能够做到这一点,但我无法避免录音输出中的麦克风输入。尝试使用不同网站上提供的示例代码,但没有成功。

我使用的示例使用音频单元进行录制。我需要知道音频单元是否有任何属性可以将麦克风输入音量设置为零。除此之外,我从其他帖子中了解到音频队列服务可以为我做这件事。任何人都可以使用音频队列服务实现的示例代码重定向我。在将数据作为输入发送到扬声器之前,我需要知道是否有办法将数据写入单独的音频文件。

提前致谢

0 投票
1 回答
899 浏览

objective-c - iPhone 上的音频混合:需要建议

我正在使用 AudioQueue 服务在我的应用程序中播放音频。我需要一起播放几个音频文件。我现在所做的只是创建尽可能多的音频队列来播放文件。即我为两个音频文件创建两个音频队列并同时启动它们以获得音频混合效果。

所以基本上我想知道这是一种“优雅”的方式。

请注意,我知道音频单元服务及其 MixerHost 示例,请不要建议该选项,我需要专门使用音频队列服务进行声音混合。

0 投票
1 回答
1255 浏览

objective-c - AC3 音频 FramesPerPacket 大小

我确实以以下方式创建音频队列

格式如下

创建失败并出现 kAudioFormatUnsupportedDataFormatError。我检查过它mavfContext->streams[audio_index]->codec->frame_size是 0。那么 ac3 媒体的 mFramesPerPacket 是否有任何标准值?

0 投票
0 回答
582 浏览

objective-c - 如何按字节读取音频队列服务缓冲区?

我正在使用音频队列服务从麦克风输入录制声音。

回调:

在这里我想读取记录的缓冲区。是否有可能得到这样的东西:

short[] buffer = ?;//这里应该将音频缓冲区转换为某种结构(仅以short[]为例)

然后我想阅读这个结构的每个元素:

简而言之,录制时如何处理缓冲区?

谢谢。

0 投票
1 回答
345 浏览

ios - 带有 AudioFileReadPackets 的 EXC_BAD_ACCESS

我一直在尝试按照此处的说明序列化本地音频文件,而不是将数据包直接提供给 AudioQueBuffer,我想使用GKSession通过蓝牙/wifi 发送它。我收到 EXC_BAD_ACCESS 错误:

我知道是 AudioFileReadPackets 调用破坏了代码,因为如果我注释掉它,它运行良好

我尝试过使用 xcode 4.3 进行Zombies 分析,但它只是崩溃了。我得到的一个有用的调试技巧是在代码崩溃时中断并使用 gdb 控制台输出错误代码。这就是我得到的:

但我无能为力..有什么帮助吗?

0 投票
1 回答
574 浏览

ios - 当 audioqueue 播放从 ffmpeg 解码的 lpcm 时,音频队列的经过时间超过了媒体的持续时间

使用音频队列播放从ffmpeg解码的lpcm数据时,经过的时间AudioQueueGetCurrentTime超过了媒体的持续时间。但是当用AVFoundation框架解码相同的媒体时,经过的时间等于媒体的持续时间,所以当ffmpeg在没有解码的情况下读取媒体,然后将压缩的媒体数据发送到audioqueue,经过的时间也等于媒体的持续时间。AudioStreamBasicDescription设置如下:

播放从 AVFoundation 解码的数据时,AudioStreamBasicDescription的设置同上。通过我的测试发现ffmpeg和AVFoundation的AudioTimeStamp.mSampleTimeget byAudioQueueGetCurrentTime是不同的,ffmpeg的值大于AVFoundation。所以我想知道这是怎么发生的,以及如何解决它?谢谢!

0 投票
2 回答
736 浏览

ios - 从音频队列会话中删除静音在 ios 中录制的音频

我正在使用音频队列从 iphone 的麦克风录制音频,并在检测到静音时停止录制(10 秒内没有音频输入),但我想丢弃音频文件中的静音。

AudioInputCallback函数中,我使用以下代码来检测静音:

但是如何删除这些数据包?或者有没有更好的选择?

0 投票
1 回答
6505 浏览

iphone - 在 iOS 中使用 Core Audio 同时播放和录音

我需要使用 Core Audio 同时播放和录制。我真的不想使用 AVFoundation API (AVAudioPlayer + AVAudioRecorder) 来做这件事,因为我正在制作一个音乐应用程序并且不会有任何延迟问题。

我查看了来自 Apple 的以下源代码:
aurioTouch
MixerHost

我已经查看了以下帖子:
iOS:同时录制和播放的示例代码同时录制和
播放音频

我仍然不清楚如何使用 Core Audio 同时播放和录制相同的内容。任何关于我如何实现这一目标的指针都将非常可观。任何指向任何示例源代码的指针也将有很大帮助。