From d8f4ab8615c94c0c767aa7701bdf7bb3f0b78458 Mon Sep 17 00:00:00 2001 From: Jonas Rabbe Date: Tue, 14 Feb 2012 08:41:51 +1000 Subject: [PATCH] Updated audio recorder example with screenshot and correct information. Change-Id: Ibf0dc8df55f20988a949e49b1b434710373f0095 Reviewed-by: Ling Hu Reviewed-by: Mithra Pattison Reviewed-by: Michael Goddard --- doc/src/examples/audiorecorder.qdoc | 72 +++++++++++++++++++++------- doc/src/images/audiorecorder.png | Bin 0 -> 28212 bytes 2 files changed, 54 insertions(+), 18 deletions(-) create mode 100644 doc/src/images/audiorecorder.png diff --git a/doc/src/examples/audiorecorder.qdoc b/doc/src/examples/audiorecorder.qdoc index 4145f9a0..6565daa8 100644 --- a/doc/src/examples/audiorecorder.qdoc +++ b/doc/src/examples/audiorecorder.qdoc @@ -31,36 +31,72 @@ - This example shows how to create a simple audio recorder using the QtMobility + This example shows how to create a simple audio recorder using the Qt Multimedia API. - We can easily setup the capture when we create the objects using a - QMediaRecorder initialized with a QAudioCaptureSource object. + We display a window for the user to select the appropriate audio input, + codec, container, and sample rate. Allow a setting of either quality or + bitrate. Finally, the output file can be selected and recording can be + started. - \snippet snippets/multimedia-snippets/audiorecorder.cpp create-objs-1 + The lists are setup using the \l{QAudioRecorder::audioInputs()}{audioInputs()}, + \l{QAudioRecorder::supportedAudioCodecs()}{supportedAudioCodecs()}, + \l{QAudioRecorder::supportedContainers()}{supportedContainers()}, + \l{QAudioRecorder::supportedContainers()}{supportedContainers()}, and + \l{QAudioRecorder::supportedAudioSampleRates()}{supportedAudioSampleRates()} + methods. The quality slider is setup from 0 (zero) to + \l{QtMultimedia::VeryHighQuality} with a default value of + \l{QtMultimedia::NormalQuality}, while the bitrates are hardcoded + into the list. - Then we set up the display of a list of available sources to use + \image audiorecorder.png - \snippet snippets/multimedia-snippets/audiorecorder.cpp device-list + To record audio we simply create a QAudioRecorder object. - And available codecs + \code + audioRecorder = new QAudioRecorder(this); + \endcode - \snippet snippets/multimedia-snippets/audiorecorder.cpp codec-list + And setup the lists as described above. The text on the record and pause + buttons are toggled depending on the \l{QMediaRecorder::State}{state} of + the \c audioRecorder object. This means that if the state is + \l{QMediaRecorder::StoppedState} then the button text will be "Record" and + "Pause". In \l{QMediaRecorder::RecordingState} the record button will have + the text "Stop", and in \l{QMediaRecorder::PausedState} the pause button + will have the text "Resume". - We display a dialog for the user to select the appropriate codec and the - input device to capture. Once selected we can use user interface objects - like buttons to start and stop the recording and display elapsed time. + Pressing the buttons will also result in a toggle based on the state. If + recording is stopped, then pressing the record button will setup the + \l{QAudioEncoderSettings} based on the values of the selection lists, + will set the encoding settings and container on the \c audioRecorder + object, and start recording using the + \l{QMediaRecorder::record()}{record()} method. - \snippet snippets/multimedia-snippets/audiorecorder.cpp get-device + \code + QAudioEncoderSettings settings; + settings.setCodec(boxValue(ui->audioCodecBox).toString()); + settings.setSampleRate(boxValue(ui->sampleRateBox).toInt()); + settings.setBitRate(boxValue(ui->bitrateBox).toInt()); + settings.setQuality(QtMultimedia::EncodingQuality(ui->qualitySlider->value())); + settings.setEncodingMode(ui->constantQualityRadioButton->isChecked() ? + QtMultimedia::ConstantQualityEncoding : + QtMultimedia::ConstantBitRateEncoding); - Then use signals to indicate a change to the output filename, the codec - and the audio source. + QString container = boxValue(ui->containerBox).toString(); + + audioRecorder->setEncodingSettings(settings, QVideoEncoderSettings(), container); + audioRecorder->record(); + \endcode + + While recording, the status bar of the application is updated with duration information + from the \l{QMediaRecorder::durationChanged()}{durationChanged} signal from the + \c audioRecorder object. + + \code + ui->statusbar->showMessage(tr("Recorded %1 sec").arg(duration / 1000)); + \endcode - When the button to record is pushed the toggleRecord() slot will start - or stop the recording process using the \l{QMediaRecorder::record()} - and \l{QMediaRecorder::stop()} functions of the QMediaRecorder object. - \snippet snippets/multimedia-snippets/audiorecorder.cpp toggle-record */ diff --git a/doc/src/images/audiorecorder.png b/doc/src/images/audiorecorder.png new file mode 100644 index 0000000000000000000000000000000000000000..6643bf32057eb9b69a7d28403aaf612cb612368b GIT binary patch literal 28212 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