音声レコーダーの例
利用可能なデバイスとサポートされているコーデックの検出。
Audio Recorder は、利用可能なデバイスとサポートされているコーデックの特定方法、および QAudioRecorder クラスの使用方法を示しています。

サンプルを実行する
このサンプルは、以下の手順で実行できます。
- Qt Creator
Welcome モードを開き、Examples からこのサンプルを選択します。詳細については、Qt Creator の「チュートリアル:ビルドと実行」を参照してください。
- Qt Extension for Visual Studio Code
Command Palette から `Qt: Open Qt examples ` コマンドを実行し、リストからこの例を選択します。詳細については、Qt Extension for Visual Studio Code: チュートリアル「ビルドと実行」を参照してください。
ウィンドウとオーディオ設定の表示
ユーザーが適切なオーディオ入力、コーデック、コンテナ、サンプリングレート、およびチャンネルを選択できるウィンドウを表示します。このウィンドウでは、音質またはビットレートのいずれかを設定できます。最後に、出力ファイルを選択して録音を開始できます。
リストは、以下のメソッドを使用して生成されます:
- QMediaDevices::audioInputs()
- QMediaFormat::supportedAudioCodecs
- QMediaFormat::supportedFileFormats
- QAudioDevice::maximumSampleRate()
- QAudioDevice::minimumSampleRate()
画質スライダーは0(ゼロ)からQMediaRecorder::VeryHighQuality までの範囲で設定可能で、デフォルト値はQMediaRecorder::NormalQuality です。一方、ビットレートボックスはリスト内にハードコーディングされています。
音声の録音
オーディオを録音するには、単に QAudioRecorder オブジェクトを作成し、
audioRecorder = new QAudioRecorder(this);上記で説明したとおりにリストを設定します。 録音ボタンと一時停止ボタンのテキストは、audioRecorder オブジェクトのstate に応じて切り替わります。つまり、状態がQMediaRecorder::StoppedState の場合、ボタンのテキストは「Record」と「Pause」になります。QMediaRecorder::RecordingState では録音ボタンのテキストは「Stop」となり、QMediaRecorder::PausedState では一時停止ボタンのテキストは「Resume」となります。
ボタンを押すと、状態に応じてトグル動作が行われます。録画が停止している状態で録画ボタンを押すと、audioRecorder オブジェクトにエンコード設定とコンテナが設定され、record()メソッドを使用して録画が開始されます。
QMediaFormat format;
format.setCodec(boxValue(ui->audioCodecBox).toString());
audioRecorder->setMediaFormat(format);
audioRecorder->setSampleRate(boxValue(ui->sampleRateBox).toInt());
audioRecorder->setBitRate(boxValue(ui->bitrateBox).toInt());
audioRecorder->setQuality(QMediaRecorder::EncodingQuality(ui->qualitySlider->value()));
audioRecorder->setEncodingMode(ui->constantQualityRadioButton->isChecked() ?
QMediaRecorder::ConstantQualityEncoding :
QMediaRecorder::ConstantBitRateEncoding);
QString container = boxValue(ui->containerBox).toString();
audioRecorder->record();録画中は、audioRecorder オブジェクトからのdurationChanged シグナルによる再生時間情報が、アプリケーションのステータスバーに反映されます。
ui->statusbar->showMessage(tr("Recorded %1 sec").arg(duration / 1000));© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.