Aufnahme mit dem Android MediaRecorder

1. Einleitung

Es gibt zwei Möglichkeiten, Audio in Android aufzunehmen: MediaRecorderund AudioRecord. Der Unterschied zwischen den beiden ist wie folgt:

  • MediaRecorder
    Es ist einfach und bequem. Sie müssen sich nicht um den Zwischenaufnahmevorgang kümmern. Nachdem die Aufnahme abgeschlossen ist, können Sie die Audiodatei direkt zur Wiedergabe abrufen. Die aufgenommene Audiodatei ist komprimiert und muss mit einem eingerichtet werden Encoder. Die aufgenommene Audiodatei kann mit dem integrierten Player des Systems abgespielt werden.
  • AudioRecord
    Während des Tonaufnahmeprozesses können die gesammelten Tondaten weiterverarbeitet werden, beispielsweise durch Rauschunterdrückung, Synthese usw. Der Prozess besteht darin, jeweils ein Segment aufzuzeichnen und die Daten dann separat zur Verarbeitung abzurufen. Aufgenommen wird eine Audiodatei im PCM-Format, AudioTrackdie AudioTracknäher an der untersten Ebene abgespielt werden muss.

Aufnahmeberechtigung hinzufügen

<uses-permission android:name="android.permission.RECORD_AUDIO" />

2. Nutzung von MediaRecorder

MediaRecorderBenutzung von

// 开始录音
fun startRecord(filePath: String) {
    
    
    mMediaRecorder = MediaRecorder()
    try {
    
    
        // 音频来源,麦克风
        mMediaRecorder?.setAudioSource(MediaRecorder.AudioSource.MIC)
        // 采样率
        mMediaRecorder?.setAudioSamplingRate(44100)
        // 输出格式
        mMediaRecorder?.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4)
        // 音频编码
        mMediaRecorder?.setAudioEncoder(MediaRecorder.AudioEncoder.AAC)
        // 音质频率
        mMediaRecorder?.setAudioEncodingBitRate(96000)
        // 输出文件
        mMediaRecorder?.setOutputFile(filePath)
        mMediaRecorder?.prepare()
        mMediaRecorder?.start()
    } catch (e: Exception) {
    
    
    }
}

// 结束录音
fun stopRecord() {
    
    
    mMediaRecorder?.stop()
    mMediaRecorder?.reset()
    mMediaRecorder?.release()
    mMediaRecorder = null
}

3. MediaRecorder-Lautstärke

Wird verwendet MediaRecorder.getMaxAmplitude, um die maximale Amplitude in den Audioquellendaten innerhalb eines kurzen Zeitraums zu erhalten. Der zurückgegebene Wert ist eine 16-Bit-Ganzzahl im Bereich von 0 bis 32767.

//计算分贝
var amplitude = mMediaRecorder?.maxAmplitude ?: 0
var db = 0.0
if (amplitude > 1) {
    
    
	db = 20 * log10(ratio)
}

Supongo que te gusta

Origin blog.csdn.net/chennai1101/article/details/132711700
Recomendado
Clasificación