问题标签 [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.
iphone - Iphone 流媒体和播放音频问题
我正在尝试制作一个使用 ffmpeg、libmms 播放音频流的应用程序。
我可以使用合适的编解码器打开 mms 服务器、获取流和将音频帧解码为原始帧。
但是我不知道下一步该怎么做。
我想我必须使用AudioToolbox/AudioToolbox.h
和制作音频队列。
但是当我给audioqueuebuffer解码缓冲区的内存和播放时,只播放白噪声。
这是我的代码。
我错过了什么?
非常感谢任何评论和提示。
非常感谢。
macos - 在 Mac 上用于多通道实时音频处理的音频队列
我有一个通过外部音频接口 (RME Fireface) 连接到 iMac 的 4 麦克风阵列。我需要同时记录所有 4 个,获取单个信号,执行一些操作,并播放输出声音,所有这些都是实时的。
首先,Mac 系统偏好设置中的音频输入没有显示 4 个单独的设备,而只显示了一个 RME FireFace。那么,我怎样才能找到每个麦克风的端口地址?
其次,主要问题 - 我可以为此目的使用音频队列吗?音频队列文档没有关于多通道音频输入和信号处理的明确信息。
iphone - 使用 AudioQueueServices 同时播放 (10+)
谁能告诉我这是如何为 iPhone 完成的?我正在尝试制作一款同时播放大约 12 种声音的游戏,但我不知道如何使用 AudioQueueServices。我知道您必须初始化、添加缓冲区、播放它们并使用 AudioQueueEnqueueBufferWithParameters 来同时播放,但我不知道如何将其转换为代码。任何对此有代码的人或可以向我解释的人都会很棒!
如果您听说过 Tone Grid/Tone Board,那正是我想要做的。我知道 Appstore 中已经有一些应用程序可以执行此操作,但我不知道它是如何完成的。
TLDR;需要 AudioQueueServices 同时播放 10 多种声音的帮助。
例子:
新播放
入队缓冲区
开始播放
设置流格式字段
iphone - AVAssestReader 停止音频回调
所以我设置了一个音频会话
然后设置 AudioQueue 或 RemoteIO 设置以直接从文件播放一些音频。
播放音频后,我可以在应用程序的状态栏中看到“播放图标”。接下来我设置了一个 AVAssetReader。
当我调用 [reader startReading] 时,音频停止播放。在 RemoteIO 和 AudioQueue 的情况下,回调停止被调用。
如果我添加混合选项:
然后在调用 AudioQueueStart 之后的音频时不再出现“播放图标”。由于手机不将我视为主要音频源,因此我也无法使用其他功能。
有谁知道我可以使用 AVAssetReader 并仍然保持主要音频源的方法?
iphone - 为什么我的 AudioQueueOutputCallback 可能不会被调用?
我正在使用音频队列服务 API通过 iPhone 上的 TCP 套接字连接播放从服务器流式传输的音频。我可以播放从套接字连接填充的缓冲区,我似乎无法让我的 AudioQueue 调用我的 AudioQueueOutputCallback 函数,而且我没有想法。
高水平设计
- 数据从套接字连接传递给播放器,并立即写入内存中的循环缓冲区。
- 当 AudioQueueBuffers 变得可用时,数据从循环缓冲区复制到可用的 AudioQueueBuffer 中,该缓冲区立即重新排队。(或者,如果我的回调发生了)
发生什么了
缓冲区全部填满并成功入队,我清楚地听到了音频流。为了测试,我使用了大量的缓冲区(15 个)并且所有缓冲区都无缝播放,但 AudioQueueOutputCallback 从未被调用,因此我从不重新排队任何缓冲区,尽管一切似乎都运行良好。如果我不等待我的回调,假设它永远不会被调用,而是根据写入的数据驱动缓冲区的排队,我可以无限期地播放音频流,重用和重新排队缓冲区,就好像它们一样已通过回调明确返回给我。正是这样一个事实:我可以完美地播放流,同时根据需要重用缓冲区,这让我最困惑。为什么不调用回调?
可能相关的代码
流的格式是 16 位线性 PCM,8 kHz,单声道:
我的回调原型和实现如下。没有什么花哨的,并且与我迄今为止看到的每个示例几乎相同:
我这样创建 AudioQueue:
我像这样将缓冲区排入队列。此时,就知道本地缓冲区包含正确的复制数据量:
请救救我。
iphone - 使用 AudioQueue 服务播放 MP3 数据缓冲区:Prime 失败 (-50)
这些天来,我一直在努力寻找在 iPhone 上使用 AudioQueue Service 播放网络音频流(MP3 数据包格式)的方法。
为了逐步实现这个目标,我首先使用AudioQueue获取了本地常见的MP3文件进行播放,它确实有效。然后,我用 stdio 函数 fread 替换了 AudioFileReadPackets,每次我像 AudioFileReadPackets 一样 fread 相同数量的 mp3 数据包,以模拟来自网络的音频流。然而,这一次,错误来了:
有人知道这个“Prime failed (-50)”错误的原因是什么吗?帮助 zzzzzzz
****************************************************** ****************************************************** ****************************************************** ***************。
为了解释我在替换工作中做了什么,我想向您展示代码的主要更改部分,有两个部分:“替换前”和“替换后”
- 替换前(playbak 本地 MP3 文件):
1)音频队列runloop回调
2) 打开音频文件
3) 创建音频队列
2.替换后(playbak mp3数据缓冲区通过fread获取):
为了使代码顺利移植,我复制了关键变量的运行时值,例如 pAqData->bufferByteSize、pAqData->mNumPacketsToRead、pAqData->mDataFormat……等。并使用替换代码中的复制值直接初始化这些变量。这种行为的目的是丢弃调用AudioToolbox框架的接口,如:AudioFileOpenURL、AudioFileGetProperty、AudioFileReadPackets……然后,我们可以使用stdio函数fread直接获取mp3包。更改后的代码如下所示:
1)音频队列runloop回调(在之前的代码中,AudioFileReadPackets读取了338个数据包,总共129792字节,我将这些值直接复制到替换代码中)
2)打开音频文件(使用fopen替换AudioFileOpenURL)
3)创建音频队列(直接用本地MP3播放模式下分配的值初始化pAqData->mDataFormat)
iphone - 来自 AVPlayer 对象的 AudioQueueLevelMeterState
是否可以以某种方式从 AVPlayer 中提取队列,因为可以从队列中提取诸如 AudioQueueLevelMeterState 之类的对象,或有关通道号、子级仪表的信息,以便在播放声音时在场景上绘制一些漂亮的动画,在此先感谢。
iphone - 如何使用音频队列播放 NSData(bytes)?
如何使用音频队列服务播放 [NSData 字节],从 speakHere 示例中,字节是来自 AudioFile 的令牌,但我从互联网下载了声音,我需要使用队列服务播放它。我试过这样的参数:
回调正在工作,但不幸的是无法设置缓冲区中的字节:
其中 inCompleteAQBuffer 是 AudioQueueBufferRef 类型,请帮助...
iphone - 使用音频队列服务记录到数据的音频
我想将语音从一部 iPhone 传输到另一部。我已经使用 TCP 在两部 iPhone 之间建立了连接,并且我已经设法在 iPhone 上录制语音并使用音频队列服务播放它。我还设法在两部 iPhone 之间发送数据。我通过发送 NSData 包来做到这一点。
我的下一步是在录制音频数据时将其发送到另一部 iPhone。我相信我应该在AudioInputCallback
. 我AudioQueueBufferRef
的被调用inBuffer
,似乎我想将其转换inBuffer->mAudioData
为 NSData,然后将 NSData 发送到另一台设备,然后解压缩它。
有谁知道这是否是这样做的方法以及如何将我的转换inBuffer->mAudioData
为 NSData?也欢迎其他方法。
这是我的回调方法,我认为我应该“抓取”数据并将其发送到另一部 iPhone:
macos - mp3 的核心音频 AudioStreamBasicDescription 的合理值是多少?
我正在尝试根据 Apple 的 AudioQueueTool 示例程序将一些音频录制到 mp3;但是,当我尝试使用 AudioQueueNewInput 创建音频队列时,我得到了错误 1718449215,根据 Apple 的文档,这意味着“播放数据格式不受支持”我的 AudioStreamBasicDescription 设置如下
我查看了 IOS 的其他类似问题,答案是 IOS 的 Core Audio 版本不支持录制 mp3,Mac 也是这种情况吗?任何帮助将不胜感激。