Android MediaRecorderでオーディオを録画する方法
5562 ワード
最近のプロジェクトでは録音アップロードのニーズがあるので、AudioRecordとMediaRecorderの2つの実装案を検討してみましたが、AudioRecorderよりもMediaRecorderの方が簡単で便利なので、最後にMediaRecorderをベースに録音ツール類を作成することにしました.まずMediaRecorder をインスタンス化するオーディオソース を設定する.
このメソッドを呼び出さないと、出力ファイルにはトラックが含まれず、録画パラメータまたはエンコーダを設定する前に呼び出され、出力フォーマット を設定する.
はい、見間違いはありませんでしたが、iOSの録音も再生できるように仕方なくMP 4形式を選びました.オーディオ符号化フォーマット を設定する.
録画に使用するオーディオエンコーダを設定します.このメソッドが呼び出されていない場合、出力ファイルにはトラックが含まれません.このメソッドは、サンプリングレート を設定する.
録音したオーディオサンプリングレートを設定します.このメソッドは、出力の経路 を設定する.
この方法はには他にもいくつかのパラメータがありますが、私は使用していません.詳細は公式のドキュメント を参照してください.
https://developer.android.google.cn/reference/android/media/MediaRecorderは最後に を開始する.録音停止 注目すべき点 いくつかの非正常な操作、開始と終了、異常が発生する場合がありますので、
, MediaRecorder
if (isRecording) {
mRecorder.release();
mRecorder = null;
}
mRecorder = MediaRecorder();
このメソッドを呼び出さないと、出力ファイルにはトラックが含まれず、録画パラメータまたはエンコーダを設定する前に呼び出され、
setOutputFormat()
までに呼び出されます.mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
setAudioSource()
以降、prepare()
より前に呼び出す録画出力ファイルフォーマットを設定します.mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
はい、見間違いはありませんでしたが、iOSの録音も再生できるように仕方なくMP 4形式を選びました.
録画に使用するオーディオエンコーダを設定します.このメソッドが呼び出されていない場合、出力ファイルにはトラックが含まれません.このメソッドは、
setOutputFormat()
の後に呼び出されるが、prepare()
の前に呼び出される.mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
録音したオーディオサンプリングレートを設定します.このメソッドは、
prepare()
の前に呼び出される.Prepare()
は、指定されたオーディオサンプリングレートが適用されるかどうかを決定するために、パラメータについて追加のチェックを実行することができる.サンプリングレートは、実際には、録音のフォーマットやプラットフォームの機能に依存します.例えば、AACオーディオ符号化規格でサポートされているサンプリングレートは8〜96 kHz、AMRNBでサポートされているサンプリングレートは8 kHz、AMRWBでサポートされているサンプリングレートは16 kHzである.サポートされるオーディオサンプリングレートについては、関連するオーディオ符号化規格を参照してください.mRecorder.setAudioSamplingRate(8000);
この方法は
setOutputFormat()
の後prepare()
の前に書きますfilePath = getCacheFilePath(context, fileName + ".mp3");
mRecorder.setOutputFile(filePath);
https://developer.android.google.cn/reference/android/media/MediaRecorder
prepare()
start()
の2つの方法を呼び出し、録音mRecorder.prepare();
mRecorder.start();
isRecording = true;
mRecorder.stop();
mRecorder.reset();
mRecorder.release();
try
catch
で異常をキャプチャして特殊な処理を行います.