在 Android 中录制音频时的 VU(音频)计

Posted

技术标签:

【中文标题】在 Android 中录制音频时的 VU(音频)计【英文标题】:VU (Audio) Meter when Recording Audio in Android 【发布时间】:2011-04-20 17:36:19 【问题描述】:

我是 android 开发的新手,对于我的第一个应用程序,我创建了一个允许录制音频的应用程序。录音和音频播放一样正常。应用程序中缺少的一件事是在录制过程中以 vu 表的形式向用户提供反馈。在 ios 平台上,我相信有一个内置的 vu Meter 可以用于应用程序。我无法在 Android 平台上找到对应的。

我一直在寻找各种专门用于 Android 开发的论坛并在 google 上搜索,但我没有发现任何有用的东西。

有人知道用于录制音频的数字 VU Meter 的任何编码示例吗?

有人知道在录制时显示反馈的任何编码示例吗?

【问题讨论】:

【参考方案1】:

您必须编写自己的 VU 表,但这并不难。

首先,获取最近一组音频样本的当前最大幅度。循环使用 AudioRecord 填充的缓冲区,并记下最大值。这几乎就是 MediaPlayer.getAmplitude 在内部所做的。

现在您已经有了幅度,您只需在自定义视图的 draw() 方法中绘制一根针或一个不断调整大小的矩形(其中高度 = MAX_RECT_HEIGHT * curAmplitude / CONST_MAXIMUM_AMPLITUDE)或其他任何内容。您必须查看峰值和衰减等,但仅此而已。

您可以在此处查看内置 VU 表动态壁纸的来源:VU meter。

【讨论】:

【参考方案2】:

你看过这个问题的答案吗:Accessing the Android media stream for audio visualization?

【讨论】:

啊,很好的文章,非常感谢。我可以再问一个问题吗?在其中一篇文章中,它引用了 MediaRecorder 并使用了 MediaRecorder.getMaxAmplitude 函数。我正在使用 AudioRecord 类,它没有这个功能。关于替换 getMaxAmplitude 的等效计算的任何想法。 @Coffman - 抱歉,我没有过多地处理音频系统。我的建议是查看 Tricoder 应用程序中的源代码,看看它是否能满足您的需求。

以上是关于在 Android 中录制音频时的 VU(音频)计的主要内容,如果未能解决你的问题,请参考以下文章

Android 音频相关

使用 MediaRecorder 录制时的音频质量问题

核心音频回调,录制开始或结束时的 inTimeStamp

在不录制的情况下监控 iPhone 上的音频输入?

在android中录制现有的音频文件

Android 录制音频没有 SDCARD