Updated audio recorder example with screenshot and correct information.
Change-Id: Ibf0dc8df55f20988a949e49b1b434710373f0095 Reviewed-by: Ling Hu <ling.hu@nokia.com> Reviewed-by: Mithra Pattison <mithra.pattison@nokia.com> Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
This commit is contained in:
@@ -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.
|
Multimedia API.
|
||||||
|
|
||||||
We can easily setup the capture when we create the objects using a
|
We display a window for the user to select the appropriate audio input,
|
||||||
QMediaRecorder initialized with a QAudioCaptureSource object.
|
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
|
Pressing the buttons will also result in a toggle based on the state. If
|
||||||
input device to capture. Once selected we can use user interface objects
|
recording is stopped, then pressing the record button will setup the
|
||||||
like buttons to start and stop the recording and display elapsed time.
|
\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
|
QString container = boxValue(ui->containerBox).toString();
|
||||||
and the audio source.
|
|
||||||
|
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
|
|
||||||
|
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|||||||
BIN
doc/src/images/audiorecorder.png
Normal file
BIN
doc/src/images/audiorecorder.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 28 KiB |
Reference in New Issue
Block a user