【问题标题】:AudioRecord and MediaRecorder Android paralleleAudioRecord 和 MediaRecorder Android 并行
【发布时间】:2012-10-07 16:50:09
【问题描述】:

我必须同时在我的应用程序和音频记录 MediaRecorder 中使用。一个注册我的脚本,另一个用于显示带有输入信号幅度的声音输入。当我同时使用但独立使用时,我的应用程序崩溃了,它工作正常。那你有我可以同时使用的解决方案吗???

Trace logCat :
10-16 22:02:08.675: E/MediaRecorder(9007): start failed: -1
10-16 22:02:08.675: W/System.err(9007): java.lang.RuntimeException: start failed.
10-16 22:02:08.675: W/System.err(9007):     at android.media.MediaRecorder.start(Native Method)
10-16 22:02:08.675: W/System.err(9007):     at com.ax.audio_recorder.viewlvlmicro.SoundMeter.start(SoundMeter.java:40)
10-16 22:02:08.675: W/System.err(9007):     at com.ax.audio_record.MainActivity.start(MainActivity.java:177)
10-16 22:02:08.675: W/System.err(9007):     at com.ax.audio_record.MainActivity.access$0(MainActivity.java:173)
10-16 22:02:08.680: W/System.err(9007):     at com.ax.audio_record.MainActivity$3.onClick(MainActivity.java:154)
10-16 22:02:08.680: W/System.err(9007):     at android.view.View.performClick(View.java:2538)
10-16 22:02:08.680: W/System.err(9007):     at android.view.View$PerformClick.run(View.java:9152)
10-16 22:02:08.680: W/System.err(9007):     at android.os.Handler.handleCallback(Handler.java:587)
10-16 22:02:08.680: W/System.err(9007):     at android.os.Handler.dispatchMessage(Handler.java:92)
10-16 22:02:08.680: W/System.err(9007):     at android.os.Looper.loop(Looper.java:130)
10-16 22:02:08.680: W/System.err(9007):     at android.app.ActivityThread.main(ActivityThread.java:3691)
10-16 22:02:08.680: W/System.err(9007):     at java.lang.reflect.Method.invokeNative(Native Method)
10-16 22:02:08.680: W/System.err(9007):     at java.lang.reflect.Method.invoke(Method.java:507)
10-16 22:02:08.680: W/System.err(9007):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:907)
10-16 22:02:08.680: W/System.err(9007):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665)
10-16 22:02:08.680: W/System.err(9007):     at dalvik.system.NativeStart.main(Native Method)

【问题讨论】:

    标签: android time mediarecorder audiorecord android-audiorecord


    【解决方案1】:

    Android 设备所基于的许多平台将打开的音频输入流的数量限制为 1,当您在关闭第一个之前尝试创建另一个时,这会导致异常。

    您可以使用 AudioRecord 录制原始 PCM,并将该数据用于将其写入文件(如果这就是您所说的“注册我的脚本”的意思)以及作为可视化工具的输入。不利的一面是,如果您想保存压缩的音频(例如 mp3),您需要自己在应用中处理编码。

    【讨论】:

    • 我在录制我的音频 mp3 源时无法同时使用 MediaRecorder audiorecord 吗?这里我使用麦克风作为音频源
    • 在某些手机上可能是可能的(我不能肯定地说,因为我不熟悉每个供应商在音频 HAL 中所做的修改)。我能说的是,有些手机无法使用,所以如果您使用当前的解决方案,您的应用在某些手机上会失败。
    • 好的,谢谢您的回复,我更清楚地看到了这些问题。使用音频记录我如何检索信号幅度。因为实际上这是我现在遇到的问题。
    • 如果您录制 16 位 PCM,您将获得签名短裤的样本,因此范围是 -32768..+32767。
    • 每个样本代表该时间点的波形幅度,值介于 -32768 和 +32767 之间。
    猜你喜欢
    • 2012-09-28
    • 2011-08-18
    • 2012-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-23
    • 2011-06-10
    相关资源
    最近更新 更多