问题标签 [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 投票
3 回答
2590 浏览

android - 在 Android 2.2 中从麦克风录制时出现奇怪的失真

我有一个应用程序可以记录麦克风的音频,然后实时对音频进行一些后处理,所以我必须使用AudioRecord类而不是标准的MediaRecorder. 我的录制代码是这样的:

上面的代码工作正常,我实际上可以从设备录制音频,我听到我的声音等等。问题是,几秒钟后,一种非常奇怪的失真模式开始出现,直到整个信号被淹没。这是我通过将一些磁带放在麦克风上并让应用程序录制一分钟左右来制作的静音录音的屏幕截图:

波形文件失真截图

原始波形文件可以在这里下载

问题绝对不是由于我的效果处理代码,因为我尝试将其注释掉并在两种情况下得到相同的结果。我在网上搜索了其他代码或可能遇到类似问题的人,但没有找到任何东西。

0 投票
4 回答
5805 浏览

android - 录制/播放声音时音质不佳 - Android SDK

当我尝试录制然后播放刚刚录制的文件时,我遇到了问题。我可以录制和播放声音,但质量很差。它不仅不好听,而且听起来有点像计算机生成的声音。我使用安卓 SDK 模拟器。设置录音的代码如下所示;

稍后播放文件的代码如下所示;

我不知道是什么部分让音频文件听起来真的很糟糕,或者它是否只是模拟器让它变得糟糕并且它可以在真正的手机上运行。

0 投票
2 回答
5009 浏览

android - Android AudioRecord 无法初始化

我在使用适用于 Android 的 AudioRecord 时遇到问题。我已经阅读了尽可能多的在线信息,但我似乎无法获得良好的初始化。我试过 Android 2.2 模拟器、1.5 模拟器和我的手机,一个运行 Froyo 的 HTC Incredible。模拟器和我的手机初始化失败。

我尝试了 8000、11025 和 44100 的采样率,CHANNEL_IN_MONO/STEREO 和 CHANNEL_CONFIGURATION_MONO/STEREO 的格式,8 位和 16 位编码(8 位使 getMinBufferSize 失败),以及 MIC 和 DEFAULT 的 AudioSource。运行获取状态(初始化失败)后,所有结果都会导致变量 test 变为 0。

从我读过的所有内容看来,这应该正确初始化对象。我玩过 buflen 上的乘数,使其范围从 512(函数的结果)到 102400,因为我听说 HTC 设备需要高于 8192 的值。

为了测试我的问题,我创建了一个新的小项目,尽可能简单地重现我的问题。我将所需的常量提取到本地整数中,然后运行构造函数并访问 getState 方法以检查它是否有效。

0 投票
1 回答
2627 浏览

android - Android录音和播放+免提作为选项

我正在为 Android 编写一个 sip 应用程序。在通话期间,我必须记录麦克风输入并播放传入的音频。必须可以选择使用免提电话。它必须与 Android 1.5+(1.5、1.6、2.0、2.1、2.2、未来版本)兼容且设备便携。

好的。所以我使用 AudioTrack 播放传入的音频,使用 AudioRecord 记录来自麦克风的数据,使用 AudioManager.setSpeakerphoneOn() 来启用或禁用扬声器。

听起来很简单,但它并不像它应该的那么简单。除非调用 AudioManager.setMode(AudioManager.MODE_IN_CALL),否则 AudioManager.setSpeakerphoneOn(false) 不起作用。所以我必须在 MODE_IN_CALL 中。

仍然可以且简单,它适用于我的 G1 与 Android 1.6、旧三星手机、模拟器、我们的许多客户设备等。但它并不适用于任何地方:(

在三星平板电脑 GT-P1000 上,我得到 0,0,0,0,... 作为麦克风输入的流。我认为摩托罗拉手机也存在同样的问题(客户抱怨)。经过一番测试,我意识到这是由 AudioManager.setMode(AudioManager.MODE_IN_CALL) 引起的。这会导致麦克风在某些设备上不起作用。但我必须打电话给它,否则我无法禁用免提电话。

有没有一种简单的方法可以让它变得简单、正确和有效?如果可能的话,没有地狱之类的 Sipdroid 高度危险的源代码:

或者

非常感谢简

0 投票
1 回答
9974 浏览

android - 无法访问录音机

我正在尝试录制小型录音以从服务中查找声压级,但 Android 不会让我访问硬件。我在 Logcat 中收到以下错误:

替代文字

错误来自以下代码:

发生的情况是 recordInstance 从未正确创建,因此当它到达最后并调用 recordInstance.startRecording() 时,recordInstance 仍然为空。Android 在定义处拒绝了我的程序请求。有谁知道那些errno的指示?我在网上找不到清单。

录音文件

谢谢

0 投票
2 回答
5982 浏览

android - Android 模拟器可以拾取音频吗?

我在 OS X 上运行 Android Emulator 并尝试使用 AudioRecord 采集音频样本并使用 FFT jar 确定频率(用于调谐应用程序)。

我无法使用手机进行调试(http://stackoverflow.com/questions/4425127/android-galaxy-s-phone-adb-debug-bridge-trouble-on-mac-osx)所以我想使用模拟器。

当我从模拟器中获取音频样本时,它似乎包含随机值。我会假设它正在录制一些东西,但我不确定它是否来自我电脑的麦克风。任何人都可以确认这些值可能来自什么以及是否可以使用模拟器进行记录。

我正在初始化 AudioRecord 对象,如下所示:

0 投票
7 回答
8503 浏览

android - 在 Android 中录制给出异常

当我尝试使用以下代码通过模拟器录制音频时

然后我在 logcat 中得到以下异常:

你能弄清楚这段代码有什么问题吗?

0 投票
4 回答
22911 浏览

android - Android AudioRecord 初始化每次都失败

我的问题很容易解释——我试图创建一个 AudioRecord 对象,但它无法初始化(即在构造函数之后,getState 返回 0,表示失败)。我在运行 OS 2.2.1 的 MotoDroid 1 上从 Eclipse 运行它。我的 AndroidManifest.xml 是,AFAIK,使用正确的权限,RECORD_AUDIO(我不知道如何确认):

我执行以下操作来创建 AudioRecord:

audioRecorder.getState() 返回 0(即 STATE_UNINITIALIZED)

我还没有找到任何使用此 API 的完整示例,而且我是一名 Android 初学者,所以解决方案可能很简单。我该怎么做才能找出失败的原因?

一些人提出了类似的问题,但他们肯定遇到了与我不同的问题,因为他们批准的修复对我没有帮助。最值得注意的是这个。但是批准的解决方案令人困惑,无论如何都对我不起作用。我还尝试了各种比特率(8000、16000、11025、44100),包括单声道和立体声以及 8 位和 16 位。没有组合返回成功初始化。

0 投票
1 回答
2291 浏览

android - Android AudioRecord 的 AudioHardwareALSA 错误

我正在开始一个我正在编写的简单 AudioRecord 应用程序,它从一堆这些开始:

然后这个:

这可能意味着什么?如有必要,我可以发布源代码,但我正在寻找这些错误可能指的是什么以及为什么在这种情况下可能会发生缓冲区溢出的基本答案。谢谢。

0 投票
1 回答
709 浏览

android - 应用崩溃时如何释放Android资源

我正在使用 Android AudioRecord 应用程序。如果我没有release()在脚本末尾调用 AudioRecord 对象上的方法,它将无法正确运行,直到我重新启动手机。

在处理这个项目时,这成为一个主要的麻烦,因为如果应用程序崩溃(有时在测试时发生并且存在意外的缓冲区溢出等),那么我每次都必须重新启动手机。

我有在finalize()我的 AudioListener 类的方法中释放缓冲区的方法,我也将它们onStop()称为主 Activity。

当应用程序冻结或崩溃时,这些似乎都不起作用。有没有办法将释放操作附加到错误处理程序或确保应用程序即使在崩溃后也能执行某些代码以正确释放资源的一般方法。

谢谢你的帮助。