【问题标题】:How to record audio file in Android如何在 Android 中录制音频文件
【发布时间】:2011-08-07 11:01:05
【问题描述】:

我在安卓系统中工作。如何通过麦克风录制音频文件,如何将录制的文件保存在模拟器中?

【问题讨论】:

    标签: android android-emulator android-widget


    【解决方案1】:

    我曾尝试在 android 中录制 WAV 文件。但不知何故,它只是记录。仅限立体声的 WAV 文件,您应该使用带有以下参数的录音机

    recorder = new AudioRecord(MediaRecorder.AudioSource.MIC,
                            RECORDER_SAMPLERATE, AudioFormat.CHANNEL_IN_MONO,RECORDER_AUDIO_ENCODING, bufferSize);
    
            recorder.startRecording();
    

    从记录器中,您需要将所有数据写入一个文件,还需要提供标题信息

    那就做吧

    recorder.stopRecording();
    

    但我只有一个问题,即使我给 AudioFormat.CHANNEL_IN_MONO..它仍然以立体声格式录制。希望我的回答对你有帮助。

    【讨论】:

      【解决方案2】:

      在 Android 中录制音频很容易。 你需要做的是:

      1) 为媒体记录类创建对象:MediaRecorder recorder = new MediaRecorder();

      2)在模拟器中,您无法将录制的数据存储在内存中,因此您必须将其存储在SD卡上。因此,首先检查 SD 卡的可用性:然后使用以下代码开始录制。

      String status = Environment.getExternalStorageState();
      if(status.equals("mounted")){
         String path = your path;
      }
      
      recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
      recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
      recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
      recorder.setOutputFile(path);
      recorder.prepare();
      recorder.start();
      

      3) 要停止,请覆盖活动的停止方法

       recorder.stop();
       recorder.release();
      

      【讨论】:

      • 我正在通过模拟器测试我的应用程序。那么是否可以从模拟器录制声音?请帮我解决这个问题。
      • 不,不是。你需要一个物理的安卓设备。
      • 谁能分享他对以下 MediaRecorder 问题的看法。会很感激的。 stackoverflow.com/q/32715573/1053097
      【解决方案3】:

      这是一个很好的示例代码教程。

      Audio Capture at Android Developer

      它包括以下步骤:

      • 创建一个新的 android.media.MediaRecorder 实例。
      • 使用 MediaRecorder.setAudioSource() 设置音频源。您可能需要使用 MediaRecorder.AudioSource.MIC。
      • 使用 MediaRecorder.setOutputFormat() 设置输出文件格式。
      • 使用 MediaRecorder.setOutputFile() 设置输出文件名。
      • 使用 MediaRecorder.setAudioEncoder() 设置音频编码器。
      • 在 MediaRecorder 实例上调用 MediaRecorder.prepare()。
      • 要开始音频捕获,请调用 MediaRecorder.start()。
      • 要停止音频捕获,请调用 MediaRecorder.stop()。
      • 完成 MediaRecorder 实例后,请对其调用 MediaRecorder.release()。始终建议调用 MediaRecorder.release() 以立即释放资源。

      【讨论】:

      • 这是非常笼统的答案,没有解决这里提出的问题。
      【解决方案4】:

      基本上,没有简单的方法可以将音频文件编写为简单的 WAV 文件。 AudioRecorder 以原始线性 PCM 格式生成数据。 Android 的 API 只为您提供音频数据缓冲区。

      您需要自己创建 WAV 文件。这对您意味着什么,您需要自己添加所有块:RIFF 标头、FMT 和 DATA 块。

      【讨论】:

        猜你喜欢
        • 2014-02-13
        • 1970-01-01
        • 2011-07-26
        • 1970-01-01
        • 2013-02-05
        • 1970-01-01
        • 2015-04-03
        • 1970-01-01
        • 2013-07-30
        相关资源
        最近更新 更多