android录音音量变化

Posted

技术标签:

【中文标题】android录音音量变化【英文标题】:android recording volume change 【发布时间】:2012-03-30 11:45:52 【问题描述】:

现在我正在开发一个用于录制语音的 android 应用程序。我使用以下代码做到了这一点。

m_recorder.setAudiosource(MediaRecorder.AudioSource.MIC);
    m_recorder.setOutputFormat(OutputFormat.THREE_GPP);

    m_recorder.setAudioEncoder(AudioEncoder.AMR_NB);
 // m_recorder.setAudioEncoder(MediaRecorder.getAudioSourceMax());
    m_recorder.setAudioEncodingBitRate(128);
    m_recorder.setAudioSamplingRate(44100);

    m_recorder.setOutputFile(Environment.getExternalStorageDirectory() + "/audio.3gp");
        try 
            m_recorder.prepare();
            m_recorder.start();
         

但问题是我的声音很小。我在网上搜索了解决方案。我得到的只是

“录制时无法做到这一点 - 但在播放时,您 可以在 MediaPlayer 上使用 setVolume(float, float) 方法。"

但是我必须将录制的剪辑上传到服务器上。那么有什么方法可以将低音量的声音剪辑转换为高音量的剪辑?

【问题讨论】:

【参考方案1】:

我使用此代码记录和保存文件,它对我有用:

                    recorder = new MediaRecorder();
                    FileOutputStream fos = openFileOutput(fileNameStr,
                            MODE_PRIVATE);

                    recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
                    recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
                    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
                    recorder.setOutputFile(fos.getFD());
                    recorder.prepare();
                    recorder.start();

【讨论】:

这些行有什么作用 m_recorder.setAudioEncodingBitRate(128); m_recorder.setAudioSamplingRate(44100); 我用那条线来提高音质......我试过你的代码......那个filenamestr变量是什么?...... 我的代码对你有用吗... Filenamestr 是一个包含文件名的字符串变量 我猜它存储在手机内存中......你可以使用 fileNameStr = Environment.getExternalStorageDirectory() + "/audio.3gp";

以上是关于android录音音量变化的主要内容,如果未能解决你的问题,请参考以下文章

Android 音视频技术之录音获取实时音量

[RK3288][Android6.0] 调试笔记 --- 录音音量从HAL到APP层会变小问题

增加录制 Android AudioRecord 的音量

安卓。如何进行高音量录音?

当系统音量发生变化时,Android MediaPlayer 会忽略它的内部音量

Android 开发 如何实现高质量的录音