オーディオレコーダーの例

使用可能なデバイスとサポートされているコーデックの検出

Audio Recorderは、利用可能なデバイスとサポートされているコーデックを識別する方法と、QAudioRecorder クラスの使用方法を示します。

サンプルを実行する

Qt Creator からサンプルを実行するには、Welcome モードを開き、Examples からサンプルを選択します。詳細については、Building and Running an Exampleを参照してください。

ウィンドウとオーディオ設定の表示

適切なオーディオ入力、コーデック、コンテナ、サンプルレート、チャンネルを選択するためのウィンドウを表示します。品質やビットレートも設定できます。最後に、出力ファイルを選択し、録音を開始することができます。

リストは以下の方法で入力されます:

品質スライダーは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));

プロジェクト例 @ code.qt.io

©2024 The Qt Company Ltd. 本書に含まれるドキュメントの著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。