/**************************************************************************** ** ** Copyright (C) 2015 The Qt Company Ltd. ** Contact: http://www.qt.io/licensing/ ** ** This file is part of the documentation of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:FDL$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and The Qt Company. For licensing terms ** and conditions see http://www.qt.io/terms-conditions. For further ** information use the contact form at http://www.qt.io/contact-us. ** ** GNU Free Documentation License Usage ** Alternatively, this file may be used under the terms of the GNU Free ** Documentation License version 1.3 as published by the Free Software ** Foundation and appearing in the file included in the packaging of ** this file. Please review the following information to ensure ** the GNU Free Documentation License version 1.3 requirements ** will be met: http://www.gnu.org/copyleft/fdl.html. ** $QT_END_LICENSE$ ** ****************************************************************************/ /*! \example multimedia/audiorecorder \title Audio Recorder Example \ingroup multimedia_examples \brief Discovering the available devices and supported codecs. \e{Audio Recorder} demonstrates how to identify the available devices and supported codecs, and the use of QAudioRecorder class. \image audiorecorder.png \include examples-run.qdocinc \section1 Displaying the Window and Audio Settings 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. 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{QMultimedia::VeryHighQuality} with a default value of \l{QMultimedia::NormalQuality}, while the bitrates are hardcoded into the list. \section1 Recording Audio To record audio we simply create a QAudioRecorder object. \code audioRecorder = new QAudioRecorder(this); \endcode 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". 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. \code QAudioEncoderSettings settings; settings.setCodec(boxValue(ui->audioCodecBox).toString()); settings.setSampleRate(boxValue(ui->sampleRateBox).toInt()); settings.setBitRate(boxValue(ui->bitrateBox).toInt()); settings.setQuality(QMultimedia::EncodingQuality(ui->qualitySlider->value())); settings.setEncodingMode(ui->constantQualityRadioButton->isChecked() ? QMultimedia::ConstantQualityEncoding : QMultimedia::ConstantBitRateEncoding); 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 */