问题标签 [audiorecord]

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 投票
4 回答
60354 浏览

java - Android AudioRecord 类 - 快速处理现场麦克风音频,设置回调函数

我想从麦克风录制音频并访问它以进行近乎实时的播放。我不确定如何使用 Android AudioRecord 类来录制一些麦克风音频并快速访问它。

对于 AudioRecord 类,官方网站说“应用程序及时轮询 AudioRecord 对象”,“正在填充的缓冲区大小决定了在溢出未读数据之前录制的时间长度”。后来建议轮询频率较低时应使用更大的缓冲区。他们实际上从未在代码中显示示例。

我在一本书中看到的一个示例使用 AudioRecord 类来连续读取一个新填充有实时麦克风音频的缓冲区,然后应用程序将此数据写入 SD 文件。伪代码看起来像 -

该代码如何将其读取与记录速率同步尚不清楚 - 布尔“isRecording”是否在其他地方正确排序打开和关闭?看起来这段代码要么读得太频繁,要么读得太少,这取决于读写需要多长时间。

该站点文档还说 AudioRecord 类有一个名为 OnRecordPositionUpdateListener 的嵌套类,它被定义为一个接口。该信息表明,您可以通过某种方式指定您希望收到录制进度通知的时间段以及事件处理程序的名称,并以指定的频率自动调用您的事件处理程序。我认为伪代码中的结构类似于 -

我需要找到一些特定的代码,让我能够以小于约 500 毫秒的延迟捕获和处理麦克风音频。Android 提供了另一个名为 MediaRecorder 的类,但它不支持流式传输,我可能希望通过 Wi-Fi 网络近乎实时地流式传输实时麦克风音频。我在哪里可以找到一些具体的例子?

0 投票
1 回答
453 浏览

java - 使用 AudioRecord 录制音频时的停止按钮

目前我有这个网站的代码(链接文本)工作得很好。在网站上的示例中,它开始录制 10 秒,然后立即反向播放音频。我已修改代码以在按下按钮时开始录制,但只能让它录制 10 秒,然后保存该文件。我希望能够通过按下按钮开始录制,然后在按下不同的按钮时停止录制。我有一个想法,它可能是线程对象的 wait() 方法的中断,但不知道如何实现它。我的代码如下:

有相当多的代码,所以我只发布了我认为相关的部分。如果需要更多,请询问。

谢谢。

0 投票
4 回答
17189 浏览

android - Android AudioRecord 问题?

我一直在搞乱 Android API 的 AudioRecord 功能,并发现了一些奇怪的行为。

背景信息:我的手机是 HTC Incredible 我正在使用 Eclipse 插件与模拟器一起进行 Android 开发。目标平台或操作系统是 2.2... 因为这是我的手机使用的。

一些代码:

这是我用来设置 AudioRecord API 的代码。现在,对于模拟器来说,它喜欢将 FREQUENCY 设置为 8000 以使其工作。返回缓冲区大小 640。对于手机,我使用 44100。这里的一个问题是,波形的结果 PCM 数据似乎是八位有符号波形。我得到从 -127 到 128 的值。我认为该值AudioFormat.ENCODING_PCM_16BIT会产生不同的结果。

我用线程处理音频,

我有一种方法可以使用SurfaceView. MIC 似乎有很多噪音。我也从模拟器和手机中得到这种噪音。我是否需要通过某种过滤器运行数据?我想用这些数据来计算一些有趣的 FFT 和一些东西,只是为了玩波。但我需要以某种方式减少噪音。

有没有其他人也经历过这种情况。有没有人有办法解决吗?

感谢您的时间和回复,谢谢,dk

0 投票
3 回答
29873 浏览

android - 使用 Android SDK 从原始 PCM 数据创建 WAV 文件

我正在尝试使用 AudioRecord 类来录制 WAV 文件。问题是它只提供原始 PCM 数据,如果我将它写入文件,没有标题信息,所以它不会在任何媒体播放器中播放。如何从这些原始数据创建 WAV 文件?

或者,有没有其他方法可以将 Android 中的声音录制到 WAV 文件(或 MP3)?

哦,我知道 MediaRecorder 不能使用,因为它不支持 WAV 或 MP3 格式。

0 投票
2 回答
6747 浏览

android - android, AudioRecord.read() --> bufferoverflow,如何处理缓冲区?

对于我的教授的大学项目。想让我写一个 android 应用程序,这将是我的第一个。我有一些 Java 经验,但我是 Android 编程新手,所以请对我温柔一点。

首先,我创建一个只有两个按钮的 Activity,一个用于启动 AsyncTask,一个用于停止它,我的意思是我只是将布尔值“isRecording”设置为 false,其他一切都在 AsyncTask 中处理,它作为源代码附加.

事情运行得很好,但过了一会儿,我可以在 LogCat 中找到一些缓冲区溢出消息,然后它会因未捕获的异常而崩溃。我弄清楚它为什么会崩溃,而未捕获的异常不应该是该问题的目的。

  1. 如您所见,我写出了缓冲区,但不知何故,我认为我在正确配置 AudioRecord 时犯了一个错误,谁能告诉我为什么会出现缓冲区溢出?

  2. 下一个问题是,我该如何处理缓冲区?我的意思是,我有里面的值,并希望它们在屏幕上的图形频谱图中显示。有没有人有这方面的经验,我可以给个提示吗?我要如何继续 ...

在此先感谢您的帮助。

AsyncTask 的源代码:

}

0 投票
3 回答
3349 浏览

android - 在Android中将语音缓冲区从麦克风路由到扬声器

我需要在 Android 设备上通过麦克风增加语音、录音机。我尝试从中读取缓冲区AudioRecord,然后将其写入AudioTrack......它可以工作,但有延迟,因为最小缓冲区大小,返回的 bu 方法AudioRecord.getMinBufferSize,频率如 44100 是 4480 字节。

有任何想法吗?
谢谢。

0 投票
4 回答
9958 浏览

android - AudioRecord 和 AudioTrack 延迟

我正在尝试为 android 开发像 iRig 这样的应用程序,所以第一步是捕获麦克风输入并同时播放它。

我有它,但问题是我得到了一些延迟,这使得它无法使用,如果我开始处理缓冲区,我担心它会完全无法使用。

我像这样使用录音和音轨:

并以这种方式进行初始化:

你知道如何获得更快的响应吗?谢谢!

0 投票
1 回答
933 浏览

java - 在android中录制声音


我想知道如何录制一段特定时间的声音,而不是将其保存到文件中——例如保存在字节流中。另外,如果可能的话,让它看起来像一个 AMR 文件。我试图搜索谷歌,也自己写了一些代码,但没有成功。如果您可以将我链接到解释如何执行此操作的页面,或者举个例子,那您会非常好:)

谢谢。

0 投票
1 回答
1401 浏览

android - Android 检测 AudioRecord/在不阻塞其他应用程序的情况下录制音频的方式

现在,我的应用程序允许用户开始录制音频并使用 android.media.AudioRecord 放置一个可以暂停/重新开始录制的持续通知。一切都很好,直到我意识到这会阻止任何其他应用程序使用 AudioRecorder(即谷歌语音搜索)。

有没有办法可以设置广播接收器来检测来自另一个应用程序的 AudioRecorder 呼叫并暂停我的录音。或者,是否有另一种录制音频的方法不会干扰其他使用音频的应用程序?

干杯!

0 投票
0 回答
1149 浏览

android - 音频播放头痛

我希望有人能指出我正确的方向。我已经能够让录音和电平表正常工作。我已经开始播放音频,这让我有些头疼。我已经阅读了有关 MediaPlayer 和 AudioTrack 的各种文章以及这两个类之间的一些差异。我读到的一件事是这两个类都支持 PCM,这是我录制的音频的格式。

在录制音频时,我使用 AudioRecord 类来捕获 16 位 PCM 单声道数据。我正在捕获数据,然后将数据写入保存到 SD 卡的文件。这是写入文件的核心代码:

这是编写 WAVE 标头的代码:

问题在于音频文件的播放。MediaPlayer 在播放方面非常快,但结果是响亮的静电。我正在获取使用上述代码创建的文件,并尝试将其推送到 MediaPlayer 进行播放。根据我的阅读,MediaPlayer 支持 16 位 PCM 音频,我相信这是我在上面创建的。

当我使用 AudioTrack 时,音频播放是正常的,这意味着音频与录制时一样。使用此类的最大问题是我在尝试开始播放时遇到的延迟。我使用的是 Stream 模式,音频开始播放需要 5-15 秒,这是完全不可接受的。

这是我调用 AudioTrack 类的代码:

关于使用 MediaPlayer 时可能导致静态的任何想法?或者关于如何在使用 AudioTrack 时提高性能的任何想法?