Класс QMediaRecorder
Класс QMediaRecorder используется для записи медиаконтента. Подробнее...
| Заголовок: | #include <QMediaRecorder> |
| qmake: | QT += multimedia |
| Наследует: | QObject и QMediaBindableInterface |
| Наследуется от: |
Открытые типы
| перечисление | Ошибка { НетОшибок, ОшибкаРесурса, ОшибкаФормата, ОшибкаНедостаточногоПространства } |
| перечисление | Состояние { Остановлено, Запись, Приостановлено } |
| перечисление | Статус { НеДоступен, НеЗагружено, Загрузка, Загружено, ..., ЗаключительнаяОперация } |
Свойства
|
|
Открытые функции
| QMediaRecorder(QMediaObject *mediaObject, QObject *parent = nullptr) | |
| virtual | ~QMediaRecorder() |
| QUrl | actualLocation() const |
| QString | описаниеКодекаАудио(const QString &codec) const |
| QAudioEncoderSettings | настройкиАудио() const |
| QMultimedia::AvailabilityStatus | доступность() const |
| QStringList | доступныеМетаданные() const |
| QString | описаниеКонтейнера(const QString &format) const |
| QString | форматКонтейнера() const |
| qint64 | продолжительность() const |
| QMediaRecorder::Ошибка | ошибка() const |
| QString | описаниеОшибки() const |
| bool | доступен() const |
| bool | естьМетаданные() const |
| bool | изменяемостьМетаданных() const |
| bool | выключеноЗвук() const |
| QVariant | метаданные(const QString &key) const |
| QUrl | путьВывода() const |
| void | установитьНастройкиАудио(const QAudioEncoderSettings &settings) |
| void | установитьФорматКонтейнера(const QString &container) |
Переопределённые открытые функции
| virtual QMediaObject * | объектМедиа() const override |
Открытые слоты
| void | приостановить() |
| void | записать() |
| void | выключитьЗвук(bool muted) |
| void | установитьГромкость(qreal volume) |
| void | остановить() |
Сигналы
| void | actualLocationChanged(const QUrl &location) |
| void | availabilityChanged(QMultimedia::AvailabilityStatus availability) |
| void | availabilityChanged(bool available) |
| void | durationChanged(qint64 duration) |
| void | error(QMediaRecorder::Error error) |
| void | metaDataAvailableChanged(bool available) |
| void | metaDataChanged(const QString &key, const QVariant &value) |
| void | metaDataChanged() |
| void | metaDataWritableChanged(bool writable) |
| void | mutedChanged(bool muted) |
| void | stateChanged(QMediaRecorder::State state) |
| void | statusChanged(QMediaRecorder::Status status) |
| void | volumeChanged(qreal volume) |
Подробное описание
Класс QMediaRecorder — это класс для записи медиа высокого уровня. Он не предназначен для самостоятельного использования, но для доступа к функциям записи медиа других медиа-объектов, таких как QRadioTuner или QCamera.
recorder = new QMediaRecorder(camera);
QAudioEncoderSettings audioSettings;
audioSettings.setCodec("audio/amr");
audioSettings.setQuality(QMultimedia::HighQuality);
recorder->setAudioSettings(audioSettings);
recorder->setOutputLocation(QUrl::fromLocalFile(fileName));
recorder->record(); См. также QAudioRecorder.
Документация по типам элементов
перечисление QMediaRecorder::Error
| Константа | Значение | Описание |
|---|---|---|
QMediaRecorder::NoError |
0 |
Нет ошибок. |
QMediaRecorder::ResourceError |
1 |
Устройство не готово или недоступно. |
QMediaRecorder::FormatError |
2 |
Текущий формат не поддерживается. |
QMediaRecorder::OutOfSpaceError |
3 |
На устройстве закончилось место. |
перечисление QMediaRecorder::State
| Константа | Значение | Описание |
|---|---|---|
QMediaRecorder::StoppedState |
0 |
Запись не активна. Если это состояние после записи, то фактически созданная запись завершила запись в конечное местоположение и готова на всех платформах, кроме Android. На Android из-за ограничений платформы нет способа быть уверенным, что запись завершила запись в конечное местоположение. |
QMediaRecorder::RecordingState |
1 |
Запись запрошена. |
QMediaRecorder::PausedState |
2 |
Запись приостановлена. |
перечисление QMediaRecorder::Status
| Константа | Значение | Описание |
|---|---|---|
QMediaRecorder::UnavailableStatus |
0 |
Запись недоступна или не поддерживается подключенным медиа-объектом. |
QMediaRecorder::UnloadedStatus |
1 |
Запись доступна, но не загружена. |
QMediaRecorder::LoadingStatus |
2 |
Инициализация записи. |
QMediaRecorder::LoadedStatus |
3 |
Запись инициализирована и готова к записи медиа. |
QMediaRecorder::StartingStatus |
4 |
Запись запрошена, но еще не активна. |
QMediaRecorder::RecordingStatus |
5 |
Запись активна. |
QMediaRecorder::PausedStatus |
6 |
Запись приостановлена. |
QMediaRecorder::FinalizingStatus |
7 |
Запись остановлена с завершением обработки медиа. |
Документация свойств
actualLocation : const QUrl
Это свойство содержит фактическое местоположение последнего медиаконтента.
Фактическое местоположение обычно доступно после начала записи и сбрасывается при установке нового местоположения или начале новой записи.
Функции доступа:
| QUrl | actualLocation() const |
Сигнал уведомления:
| void | actualLocationChanged(const QUrl &location) |
duration : const qint64
Это свойство содержит длительность записанного медиа в миллисекундах.
Функции доступа:
| qint64 | duration() const |
Сигнал уведомления:
| void | durationChanged(qint64 duration) |
metaDataAvailable : const bool
Это свойство содержит информацию о том, доступна ли метаданные медиаобъекта.
Если значение true, то метаданные доступны, иначе они недоступны.
Функции доступа:
| bool | isMetaDataAvailable() const |
Сигнал уведомления:
| void | metaDataAvailableChanged(bool available) |
metaDataWritable : const bool
Это свойство содержит информацию о том, можно ли изменять метаданные медиаобъекта.
Если значение true, то метаданные изменяемы, иначе они только для чтения.
Функции доступа:
| bool | isMetaDataWritable() const |
Сигнал уведомления:
| void | metaDataWritableChanged(bool writable) |
muted : bool
Это свойство содержит информацию о том, заглушен ли аудиопоток записи.
Функции доступа:
| bool | isMuted() const |
| void | setMuted(bool muted) |
Сигнал уведомления:
| void | mutedChanged(bool muted) |
outputLocation : QUrl
Это свойство содержит место назначения медиаконтента.
Установка местоположения может завершиться ошибкой, например, когда служба поддерживает только локальные местоположения файловой системы, но был передан URL сети. Если служба не поддерживает запись медиа, попытка установить местоположение вывода всегда завершится ошибкой.
location может быть относительным или пустым; в этом случае рекордер использует системную схему мест и именования файлов. После начала записи QMediaRecorder::outputLocation() возвращает фактическое местоположение вывода.
Функции доступа:
| QUrl | outputLocation() const |
| bool | setOutputLocation(const QUrl &location) |
state : const QMediaRecorder::State
Это свойство содержит текущее состояние медиарекордера.
Свойство состояния отражает запрос пользователя и изменяется синхронно во время вызовов record(), pause() или stop(). Состояние рекордера также может асинхронно измениться при сбое записи.
Функции доступа:
| QMediaRecorder::State | state() const |
Сигнал уведомления:
| void | stateChanged(QMediaRecorder::State state) |
status : const QMediaRecorder::Status
Это свойство содержит текущий статус медиарекордера.
Статус изменяется асинхронно и представляет фактическое состояние медиарекордера.
Функции доступа:
| QMediaRecorder::Status | status() const |
Сигнал уведомления:
| void | statusChanged(QMediaRecorder::Status status) |
volume : qreal
Это свойство содержит текущий уровень громкости аудиозаписи.
Громкость линейно масштабируется от 0.0 (тишина) до 1.0 (полная громкость). Значения вне этого диапазона будут ограничены.
Значение громкости по умолчанию равно 1.0.
Управление громкостью в пользовательском интерфейсе обычно должно масштабироваться нелинейно. Например, использование логарифмической шкалы обеспечит линейное изменение воспринимаемой громкости, что обычно ожидается от управления громкостью. Подробнее см. QAudio::convertVolume().
Функции доступа:
| qreal | volume() const |
| void | setVolume(qreal volume) |
Сигнал уведомления:
| void | volumeChanged(qreal volume) |
Документация по членам-функциям
QMediaRecorder::QMediaRecorder(QMediaObject *mediaObject, QObject *parent = nullptr)
Создаёт рекордер медиа, который записывает медиа, произведённое объектом mediaObject.
parent передаётся объекту QMediaObject.
[signal] void QMediaRecorder::actualLocationChanged(const QUrl &location)
Сигнализирует, что фактическое местоположение записанного медиа изменилось. Этот сигнал обычно генерируется при запуске записи.
Примечание: Сигнал уведомления для свойства actualLocation.
[signal] void QMediaRecorder::availabilityChanged(QMultimedia::AvailabilityStatus availability)
Сигнализирует, что доступность службы изменилась на availability.
Примечание: Сигнал availabilityChanged перегружен в этом классе. Для подключения к этому сигналу с помощью синтаксиса указателя на функцию Qt предоставляет удобную вспомогательную функцию для получения указателя на функцию, как показано в этом примере:
connect(mediaRecorder, QOverload<QMultimedia::AvailabilityStatus>::of(&QMediaRecorder::availabilityChanged),
[=](QMultimedia::AvailabilityStatus availability){ /* ... */ });
[signal] void QMediaRecorder::availabilityChanged(bool available)
Сигнализирует, что медиарекордер теперь доступен (если available равно true), или нет.
Примечание: Сигнал availabilityChanged перегружен в этом классе. Для подключения к этому сигналу с помощью синтаксиса указателя на функцию Qt предоставляет удобную вспомогательную функцию для получения указателя на функцию, как показано в этом примере:
connect(mediaRecorder, QOverload<bool>::of(&QMediaRecorder::availabilityChanged),
[=](bool available){ /* ... */ });
[signal] void QMediaRecorder::durationChanged(qint64 duration)
Сигнализирует, что длительность записанного медиа изменилась.
Примечание: Сигнал уведомления для свойства duration.
[signal] void QMediaRecorder::error(QMediaRecorder::Error error)
Сигнализирует, что произошла ошибка error.
Примечание: Сигнал error перегружен в этом классе. Для подключения к этому сигналу с помощью синтаксиса указателя на функцию Qt предоставляет удобную вспомогательную функцию для получения указателя на функцию, как показано в этом примере:
connect(mediaRecorder, QOverload<QMediaRecorder::Error>::of(&QMediaRecorder::error),
[=](QMediaRecorder::Error error){ /* ... */ });
[signal] void QMediaRecorder::metaDataAvailableChanged(bool available)
Сигнализирует о том, что состояние доступности метаданных объекта медиа изменилось.
Примечание: Сигнал-уведомление для свойства metaDataAvailable.
[signal] void QMediaRecorder::metaDataChanged(const QString &key, const QVariant &value)
Сигнализирует о изменении элемента метаданных value с заданным key.
Примечание: Сигнал metaDataChanged перегружен в этом классе. Для подключения к этому сигналу с помощью синтаксиса указателя на функцию Qt предоставляет удобную функцию получения указателя на функцию, как показано в этом примере:
connect(mediaRecorder, QOverload<const QString &, const QVariant &>::of(&QMediaRecorder::metaDataChanged),
[=](const QString &key, const QVariant &value){ /* ... */ });
[signal] void QMediaRecorder::metaDataChanged()
Сигнализирует о том, что метаданные объекта медиа изменились.
Если несколько элементов метаданных изменены, сигнал metaDataChanged(const QString &key, const QVariant &value) генерируется для каждого из них, а сигнал metaDataChanged() генерируется один раз.
Примечание: Сигнал metaDataChanged перегружен в этом классе. Для подключения к этому сигналу с помощью синтаксиса указателя на функцию Qt предоставляет удобную функцию получения указателя на функцию, как показано в этом примере:
connect(mediaRecorder, QOverload<>::of(&QMediaRecorder::metaDataChanged),
[=](){ /* ... */ });
[signal] void QMediaRecorder::metaDataWritableChanged(bool writable)
Сигнализирует о том, что состояние записи метаданных объекта медиа изменилось.
Примечание: Сигнал-уведомление для свойства metaDataWritable.
[signal] void QMediaRecorder::mutedChanged(bool muted)
Сигнализирует об изменении состояния muted. Если значение true, запись выключена.
Примечание: Сигнал-уведомление для свойства muted.
[slot] void QMediaRecorder::pause()
Приостановить запись.
Состояние рекордера меняется на QMediaRecorder::PausedState.
В зависимости от платформы, приостановка записи может быть не поддерживается, в этом случае состояние рекордера остаётся неизменным.
[slot] void QMediaRecorder::record()
Начать запись.
Хотя состояние рекордера сразу меняется на QMediaRecorder::RecordingState, запись может начаться асинхронно, с сигналом statusChanged(QMediaRecorder::RecordingStatus), отправленным при запуске записи.
Если запись завершается неудачно, сигнал error() отправляется со сбросом состояния рекордера обратно на QMediaRecorder::StoppedState.
[signal] void QMediaRecorder::stateChanged(QMediaRecorder::State state)
Сигнализирует о том, что состояние рекордера медиа изменилось.
Примечание: Сигнал-уведомление для свойства state.
[slot] void QMediaRecorder::stop()
Остановить запись.
Состояние рекордера изменяется на QMediaRecorder::StoppedState.
[virtual] QMediaRecorder::~QMediaRecorder()
Уничтожает объект рекордера медиа.
QString QMediaRecorder::audioCodecDescription(const QString &codec) const
Возвращает описание аудио кодека.
QAudioEncoderSettings QMediaRecorder::audioSettings() const
Возвращает настройки аудиокодера, используемые в данный момент.
См. также setAudioSettings() и setEncodingSettings().
QMultimedia::AvailabilityStatus QMediaRecorder::availability() const
Возвращает доступность данной функциональности.
См. также availabilityChanged().
QStringList QMediaRecorder::availableMetaData() const
Возвращает список ключей, для которых доступны метаданные.
QString QMediaRecorder::containerDescription(const QString &format) const
Возвращает описание контейнера format.
QString QMediaRecorder::containerFormat() const
Возвращает выбранный формат контейнера.
См. также setContainerFormat().
QMediaRecorder::Error QMediaRecorder::error() const
Возвращает текущее состояние ошибки.
См. также errorString().
QString QMediaRecorder::errorString() const
Возвращает строку, описывающую текущее состояние ошибки.
См. также error().
bool QMediaRecorder::isAvailable() const
Возвращает true, если служба рекордера медиа готова к использованию.
См. также availabilityChanged().
[override virtual] QMediaObject *QMediaRecorder::mediaObject() const
Переопределяет: QMediaBindableInterface::mediaObject() const.
Возвращает экземпляр QMediaObject, к которому привязан данный QMediaRecorder, или 0 в противном случае.
QVariant QMediaRecorder::metaData(const QString &key) const
Возвращает значение, связанное с ключом метаданных key.
См. также setMetaData().
void QMediaRecorder::setAudioSettings(const QAudioEncoderSettings &settings)
Устанавливает настройки аудиокодера settings.
Если некоторые параметры не указаны или передан null, кодер выберет параметры кодирования по умолчанию, в зависимости от свойств источника медиа.
Изменение настроек возможно только когда кодер находится в состоянии QMediaEncoder::StoppedState.
См. также audioSettings(), videoSettings() и containerFormat().
void QMediaRecorder::setContainerFormat(const QString &container)
Устанавливает формат контейнера медиа container.
Если формат контейнера не указан, кодер выберет формат по умолчанию, в зависимости от свойств источника медиа и выбранных настроек кодирования.
Изменение настроек возможно только когда кодер находится в состоянии QMediaEncoder::StoppedState.
См. также audioSettings(), videoSettings() и containerFormat().
void QMediaRecorder::setEncodingSettings(const QAudioEncoderSettings &audio, const QVideoEncoderSettings &video = QVideoEncoderSettings(), const QString &container = QString())
Устанавливает настройки кодировщиков audio и video, а также формат контейнера container.
Если некоторые параметры не указаны или передан null, кодер выберет параметры кодирования по умолчанию, в зависимости от свойств источника медиа.
Изменение настроек возможно только когда кодер находится в состоянии QMediaEncoder::StoppedState.
См. также audioSettings(), videoSettings() и containerFormat().
void QMediaRecorder::setMetaData(const QString &key, const QVariant &value)
Устанавливает значение value для ключа метаданных key.
Примечание: Для правильной установки метаданных, их следует задавать до начала записи. После остановки записи, установленные метаданные будут присоединены к следующей записи.
См. также metaData().
void QMediaRecorder::setVideoSettings(const QVideoEncoderSettings &settings)
Устанавливает настройки видеокодера settings.
Если некоторые параметры не указаны или передан null, кодер выберет параметры кодирования по умолчанию, в зависимости от свойств источника медиа.
Изменение настроек возможно только когда кодер находится в состоянии QMediaEncoder::StoppedState.
См. также audioSettings(), videoSettings() и containerFormat().
QMediaRecorder::State QMediaRecorder::state() const
Возвращает текущее состояние медиа-регистратора.
Примечание: Функция-геттер для свойства state.
См. также QMediaRecorder::State.
QMediaRecorder::Status QMediaRecorder::status() const
Возвращает текущий статус медиа-регистратора.
Примечание: Функция-геттер для свойства status.
См. также QMediaRecorder::Status.
QStringList QMediaRecorder::supportedAudioCodecs() const
Возвращает список поддерживаемых кодеков аудио.
QList<int> QMediaRecorder::supportedAudioSampleRates(const QAudioEncoderSettings &settings = QAudioEncoderSettings(), bool *continuous = nullptr) const
Возвращает список поддерживаемых частот дискретизации аудио.
Если передан ненулевой параметр settings, возвращаемый список сокращается до частот дискретизации, поддерживаемых с примененными частичными настройками.
Это можно использовать для запроса списка частот дискретизации, поддерживаемых конкретным кодеком аудио.
Если кодек поддерживает произвольные частоты дискретизации в диапазоне поддерживаемых частот, *continuous устанавливается в true, иначе в false.
QStringList QMediaRecorder::supportedContainers() const
Возвращает список поддерживаемых форматов контейнеров.
QList<qreal> QMediaRecorder::supportedFrameRates(const QVideoEncoderSettings &settings = QVideoEncoderSettings(), bool *continuous = nullptr) const
Возвращает список частот кадров, на которых может быть закодировано видео.
Если передан ненулевой параметр settings, возвращаемый список сокращается до частот кадров, поддерживаемых с примененными частичными настройками, такими как кодек видео или разрешение.
Если кодек поддерживает произвольные частоты кадров в поддерживаемом диапазоне, *continuous устанавливается в true, иначе в false.
См. также QVideoEncoderSettings::frameRate().
QList<QSize> QMediaRecorder::supportedResolutions(const QVideoEncoderSettings &settings = QVideoEncoderSettings(), bool *continuous = nullptr) const
Возвращает список разрешений, на которых может быть закодировано видео.
Если передан ненулевой параметр settings, возвращаемый список сокращается до разрешений, поддерживаемых с примененными частичными настройками, такими как кодек видео или частота кадров.
Если кодек поддерживает произвольные разрешения в поддерживаемом диапазоне, *continuous устанавливается в true, иначе в false.
См. также QVideoEncoderSettings::resolution().
QStringList QMediaRecorder::supportedVideoCodecs() const
Возвращает список поддерживаемых кодеков видео.
QString QMediaRecorder::videoCodecDescription(const QString &codec) const
Возвращает описание кодека видео codec.
См. также setEncodingSettings().
QVideoEncoderSettings QMediaRecorder::videoSettings() const
Возвращает используемые настройки кодека видео.
См. также setVideoSettings() и setEncodingSettings().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.13/qmediarecorder.html