问题标签 [audioqueue]
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.
objective-c - 如何从 iOS 中的 AudioQueueRef 获取浮点音频数据数组?
我正在努力以一种可以将音频传递给(C++)分析算法的形式将音频输入 iPhone。当然,有很多选择:trailsinthes 上的 AudioQueue 教程让事情开始。
但是,音频回调给出了AudioQueueRef
,我发现 Apple 的文档在这方面很薄。写入文件的内置方法,但没有在数据包内部实际查看数据的地方。
我需要数据。我不想将任何内容写入文件,这似乎是所有教程——甚至是 Apple 的便利 I/O 对象——的目标。Apple AVAudioRecorder
(令人愤怒)会给你关卡并写入数据,但实际上并没有让你访问它。除非我错过了什么...
这该怎么做?在下面的代码中,有inBuffer->mAudioData
一个非常接近但我找不到有关此“数据”的格式或如何访问它的信息。
音频队列回调:
以及将音频写入文件的代码:
iphone - AudioSessionSetActive 中断后失败
我试图弄清楚几周以来实际发生的事情,但我不知道为什么在中断后我无法继续播放,所以你们可能知道答案。如果我的应用程序在后台播放并且我在不同的应用程序中,则在重新激活时,AudioSessionSetActive(TRUE) 始终返回“!cat”,即 kAudioSessionIncompatibleCategory。虽然如果我在我的应用程序中遇到中断,它可以正常工作并继续播放。
原始代码实际上将所有 AudioSession 和 AudioQueue 调用包装在宏中,如果这意味着错误,则会打印 OSStatus,但我将其删除以提高可读性。此外,[self pause] 只是切换暂停,所以基本上它在 upause 时调用 AudioQueueStart(audioQueue, NULL) 但如果 AudioSession 失败,它当然不起作用。
音频会话初始化代码:
中断处理程序代码:
这个流媒体源代码可以在这里找到https://bitbucket.org/and/amaudiostreamer/src/122de41fe6c0/AMAudioStreamer/AMAudioStreamer/Classes/NxAudioStreamer.m如果它会以某种方式帮助解决问题..
iphone - iphone:如何缓冲和播放音频?
我需要为我的应用程序实现代码来缓冲和播放我正在流式传输的音频文件。
我有一个选项AudioQueue
,但没有找到太多代码来理解要实现的东西。
我尝试过简单地创建流光和销毁流光。
ios - 如何在录制过程中获得录制音频的确切持续时间?
我正在使用录音机并使用 SpeakHere 示例代码中的 AQRecorder。我想在 UI 上添加一个滑块来显示录制持续时间。我使用在录制开始时初始化的简单计时器来做到这一点。但有时录制会滞后 1 秒。例如,滑块显示 10 秒,但保存时音频的实际持续时间为 9 秒。
有什么方法可以让我在录制更新滑块时获得准确的持续时间,而不是使用计时器。
我也尝试了以下方法
但是第一个给出了写入文件的数据包长度,它总是小于实际的记录持续时间。第二个也没有给出确切的持续时间(增加 1-2 秒)。
如果有人实施了相同的方法,请提供帮助。谢谢。
ios - 音频路由按钮 - AirPlay
我目前正在通过 AudioQueues 播放音频。我想允许用户连接到 Airplay 设备。
如果我创建一个 MPVolumeView 并使用“showsRouteButton”显示路由按钮,我可以成功连接。
有没有办法在不使用 MPVolumeView 的情况下将音频路由更改为 Airplay?还是一个更简单的 Apple 视图,它只是路由按钮?
cocoa - 音频队列和 EXC_BAD_ACCESS
这是我使用音频队列生成噪音的代码:
问题是我的代码生成了一个 EXC_BAD_ACCESS。问题似乎出在作业中
在回调例程中。我怀疑这可能与 MAAudioManager 类的线程访问有关。
任何的想法?
ios - 当我需要自定义音频效果时,我是否需要处理音频单元,或者我可以依赖音频队列服务?
据我了解,音频队列服务是比使用音频单元的音频单元更高级别的 API。OpenAL 也使用音频单元。所以 Audio Units 是 iOS 中最低级别的音频 API。
我需要录制声音,然后将自定义过滤器应用于音频流并播放。Audio Queue Services 似乎很适合录制,也可以用来播放。但我仍然不确定他们是否允许将自己的算法应用于音频流,就像 AURemoteIO 音频单元一样。
ios - AudioQueue 得到错误的数据包数?
我的应用程序使用ffmpeg 将 mms 流解析到缓冲区,并使用音频队列播放缓冲数据。现在我可以确认缓冲的数据是好的,但我不能播放它。播放结构基于AudioFileStreamExample demo的客户端,可以播放http流(AudioFileStreamExample demo的服务器)。我在回调函数中注意到:
当我直接播放AudioFileStreamExample demo的http流时,paraminNumberPackets
大多时候大于1;当我播放 mms 流时,inNumberPackets
总是 1。audioQueue 只播放第一个数据包,所有最后一个数据包都丢失了。
AudioFileStreamExample demo的http流使用日志:
使用解析的mms流的日志:
我不知道如何解决这个问题。似乎该MyPacketsProc
函数的参数错误,但是如何修复它?
非常感谢。
xcode - 如何访问 AudioQueue 缓冲区中的数据?
我正在努力研究如何将数据从缓冲区传递到数组以允许我显示缓冲区中的内容。是否有一个简单的记录音频和读取缓冲区的代码示例?越简单越好。
我正在尝试实时做某事,而不是从保存的文件中读取数据。我可以粘贴一些我尝试过但没有成功的代码。
ios - 音频队列服务和 iPhone 系统声音的时序
我正在使用音频队列服务分析 iPhone/iPod Touch 上的传入音频。分析器的期望行为归结为:当应用程序激活时,开始分析;当App被发送到后台时,停止分析。
我正在使用一种直接的方法,只要 App 状态发生变化,就使用 AppDelegate 来启动和停止分析器。
这是一些代码:
所有变量都已初始化并正在工作 - 将其视为给定并经过测试。我知道,队列和缓冲区不应该每次都被处理和分配,但现在没有什么不同,而且这种方式更完整。
这是发生的事情:
步骤 1)启动应用程序,音频队列开始,Bob 是你的叔叔。
步骤 2)按下电源按钮,应用程序暂停。但是您听不到锁定声音,因为音频队列似乎仍然阻止了系统声音。但是,有时它确实会出现,主要是在应用程序首次启动之后,但这并不可靠。第一个故障。
步骤 3)按下主页按钮并解锁手机。同样,您不会听到解锁手机的系统声音,因为音频队列已经接管。不过,您可能会听到一小段解锁声音。有时。也不靠谱。第二个故障。
步骤 4)按主页按钮并将应用程序发送到后台。App消失约一秒后,系统记得无法播放第3步的解锁声音,立即播放。全音量。这真的很糟糕。
这让我想到了两个问题:
问题 1):当按下电源按钮时,我看不到任何其他方法可以比 applicationWillResignActive: 更早地停止音频队列。我在这里缺少什么吗?我对缺少锁定声音感到满意,但我很高兴了解任何其他方法可以使其可靠地发声(或不发声)。
问题2):第4步的延迟解锁声音让我很头疼。防止这种情况的一种简单方法是延迟音频队列的启动,以便可以畅通无阻地播放解锁声音。但这似乎是一种 hack,如果有人可以为我指出一个更好的方向,我会成为一个更快乐的编码员。
谢谢/安德烈亚斯