我要问这个问题是因为太模糊或在一个问题中问了太多问题,但是我实际上只是在寻找正确方向的观点。
在我的应用程序中,我想记录音频,在记录时显示波形,并滚动浏览波形以从指定时间开始记录和播放。例如,如果我有3分钟的音频,我应该能够回滚到2:00并从那里开始录制以解决错误。
在语音备忘录中,这是即时完成的,没有任何延迟或加载时间。如果有人有线索,我想弄清楚这是怎么做的。
我尝试过的
EZAudio-这个库很棒,但是不能满足我的要求。您无法滚动波形。它在开始时删除波形数据,并在达到一定长度后开始将其附加到末尾。
SCWaveformView-此波形很好,但是它使用图像。一旦波形过长,将其置于滚动 View 中将导致真正的抖动滚动。同样,您只能在录制后才能建立波形。
至于追加,我已经使用了这种方法:https://stackoverflow.com/a/11520553/1391672
但是,即使将两个非常短的音频片段附加在一起(以我的经验),也需要大量的处理时间。
语音备忘录如何工作?您认为波形是在OpenGL还是CoreGraphics中绘制的?他们使用的是Core Audio还是AVAudioRecorder?有没有人造像这样的东西可以指引我正确的方向?
最佳答案
放大时,滚动 View 仅需要绘制可见波形的一小部分。缩小时,图形 View 可能仅在音频缓冲区的第N个点绘制一次,或者在渲染之前对数据使用其他DSP下采样算法。这很可能必须在UIScrollView或类似的自定义 Controller 中使用您自己的自定义绘图或图形呈现代码来完成。记录期间和之后的波形渲染代码不必相同。
您使用的录制API和绘图API可以完全独立,并且几乎可以是任何东西,从OpenGL到Metal到Core Graphics(在更新更快的设备上)。在音频方面,Core Audio将帮助提供最低的延迟,但是音频队列和AVAudioEngine也可能适用。
关于iOS录制音频并绘制波形,例如语音备忘录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30172366/