Класс QAudioInput
Класс QAudioInput предоставляет интерфейс для получения аудиоданных от устройства аудиоввода. Подробнее...
| Заголовок: | #include <QAudioInput> |
| qmake: | QT += multimedia |
| Наследует: | QObject |
Открытые функции
| QAudioInput(const QAudioFormat &format = QAudioFormat(), QObject *parent = nullptr) | |
| QAudioInput(const QAudioDeviceInfo &audioDevice, const QAudioFormat &format = QAudioFormat(), QObject *parent = nullptr) | |
| virtual | ~QAudioInput() |
| int | bufferSize() const |
| int | bytesReady() const |
| qint64 | elapsedUSecs() const |
| QAudio::Error | error() const |
| QAudioFormat | format() const |
| int | notifyInterval() const |
| int | periodSize() const |
| qint64 | processedUSecs() const |
| void | reset() |
| void | resume() |
| void | setBufferSize(int value) |
| void | setNotifyInterval(int ms) |
| void | setVolume(qreal volume) |
| void | start(QIODevice *device) |
| QIODevice * | start() |
| QAudio::State | state() const |
| void | stop() |
| void | suspend() |
| qreal | volume() const |
- 34 открытые функции унаследованные от QObject
Сигналы
| void | notify() |
| void | stateChanged(QAudio::State state) |
- 2 сигнала, унаследованные от QObject
Дополнительные унаследованные члены
- 1 свойство, унаследованное от QObject
- 1 открытый слот, унаследованный от QObject
- 1 открытая переменная, унаследованная от QObject
- 10 статических открытых членов, унаследованных от QObject
- 9 защищённых функций, унаследованных от QObject
- 2 защищённых переменных, унаследованных от QObject
Подробное описание
Класс QAudioInput предоставляет интерфейс для получения аудиоданных от устройства аудиоввода.
Вы можете создать аудиовход с помощью стандартного устройства аудиоввода системы. Также можно создать QAudioInput с определённым QAudioDeviceInfo. При создании аудиовхода вы также должны указать QAudioFormat, который будет использоваться для записи (см. описание класса QAudioFormat для получения подробностей).
Для записи в файл:
QAudioInput позволяет записывать аудио с помощью устройства аудиоввода. Конструктор по умолчанию этого класса будет использовать системное стандартное устройство аудиоввода, но вы также можете указать QAudioDeviceInfo для конкретного устройства. Вам также необходимо передать QAudioFormat в том формате, в котором вы хотите записывать.
Запуск QAudioInput сводится к вызову start() с QIODevice, открытым для записи. Например, для записи в файл, вы можете:
QFile destinationFile; // Class member
QAudioInput* audio; // Class member
{
destinationFile.setFileName("/tmp/test.raw");
destinationFile.open( QIODevice::WriteOnly | QIODevice::Truncate );
QAudioFormat format;
// Set up the desired format, for example:
format.setSampleRate(8000);
format.setChannelCount(1);
format.setSampleSize(8);
format.setCodec("audio/pcm");
format.setByteOrder(QAudioFormat::LittleEndian);
format.setSampleType(QAudioFormat::UnSignedInt);
QAudioDeviceInfo info = QAudioDeviceInfo::defaultInputDevice();
if (!info.isFormatSupported(format)) {
qWarning() << "Default format not supported, trying to use the nearest.";
format = info.nearestFormat(format);
}
audio = new QAudioInput(format, this);
connect(audio, SIGNAL(stateChanged(QAudio::State)), this, SLOT(handleStateChanged(QAudio::State)));
QTimer::singleShot(3000, this, SLOT(stopRecording()));
audio->start(&destinationFile);
// Records audio for 3000ms
} Это начнёт запись, если указанный формат поддерживается устройством ввода (вы можете проверить это с помощью QAudioDeviceInfo::isFormatSupported(). В случае возникновения проблем, используйте функцию error(), чтобы проверить, что пошло не так. Мы останавливаем запись в stopRecording() слоте.
void AudioInputExample::stopRecording()
{
audio->stop();
destinationFile.close();
delete audio;
} В любой момент QAudioInput будет находиться в одном из четырёх состояний: активном, приостановленном, остановленном или неактивном. Эти состояния задаются перечислением QAudio::State. Вы можете напрямую запросить изменение состояния с помощью suspend(), resume(), stop(), reset() и start(). Текущее состояние сообщается функцией state(). QAudioOutput также будет сигнализировать вам при изменении состояния (stateChanged()).
QAudioInput предоставляет несколько способов измерения времени, прошедшего с момента вызова start() записи. Функция processedUSecs() возвращает длину записанного потока в микросекундах, то есть не учитывает время, когда аудиовход был приостановлен или неактивен. Функция elapsedUSecs() возвращает время, прошедшее с момента вызова start(), независимо от состояний, в которых находился QAudioInput.
Если произойдёт ошибка, вы можете получить её причину с помощью error(). Возможные причины ошибок описаны в перечислении QAudio::Error. QAudioInput перейдёт в состояние StoppedState, когда произойдёт ошибка. Подключитесь к сигналу stateChanged() для обработки ошибки:
void AudioInputExample::handleStateChanged(QAudio::State newState)
{
switch (newState) {
case QAudio::StoppedState:
if (audio->error() != QAudio::NoError) {
// Error handling
} else {
// Finished recording
}
break;
case QAudio::ActiveState:
// Started recording - read from IO device
break;
default:
// ... other cases as appropriate
break;
}
} См. также QAudioOutput и QAudioDeviceInfo.
Документация по функциям-членам
QAudioInput::QAudioInput(const QAudioFormat &format = QAudioFormat(), QObject *parent = nullptr)
Создаёт новый аудиовход и присоединяет его к parent. Стандартное устройство аудиоввода используется с параметрами вывода format.
QAudioInput::QAudioInput(const QAudioDeviceInfo &audioDevice, const QAudioFormat &format = QAudioFormat(), QObject *parent = nullptr)
Создаёт новый аудиовход и присоединяет его к parent. Устройство, на которое ссылается audioDevice, используется с параметрами ввода format.
[virtual] QAudioInput::~QAudioInput()
Уничтожает этот аудиовход.
int QAudioInput::bufferSize() const
Возвращает размер буфера аудио в байтах.
Если вызывается до start(), возвращает значение по умолчанию платформы. Если вызывается до start(), но до этого был вызван setBufferSize(), возвращает значение, установленное setBufferSize(). Если вызывается после start(), возвращает фактический используемый размер буфера. Это может отличаться от того, что было установлено ранее с помощью setBufferSize().
См. также setBufferSize().
int QAudioInput::bytesReady() const
Возвращает количество доступных для чтения аудиоданных в байтах.
Примечание: возвращаемое значение имеет смысл только в состоянии QAudio::ActiveState или QAudio::IdleState, в противном случае возвращается ноль.
qint64 QAudioInput::elapsedUSecs() const
Возвращает количество микросекунд, прошедших с момента вызова start(), включая время в состояниях Idle и Suspend.
QAudio::Error QAudioInput::error() const
Возвращает состояние ошибки.
QAudioFormat QAudioInput::format() const
Возвращает используемый QAudioFormat.
[signal] void QAudioInput::notify()
Этот сигнал испускается, когда x мс аудиоданных были обработаны в интервале, заданном setNotifyInterval(x).
int QAudioInput::notifyInterval() const
Возвращает интервал уведомления в миллисекундах.
См. также setNotifyInterval().
int QAudioInput::periodSize() const
Возвращает размер периода в байтах.
Примечание: Это рекомендуемый размер чтения в байтах.
qint64 QAudioInput::processedUSecs() const
Возвращает количество обработанных аудиоданных с момента вызова start() в микросекундах.
void QAudioInput::reset()
Удаляет все аудиоданные в буферах, сбрасывая буферы в ноль.
void QAudioInput::resume()
Возобновляет обработку аудиоданных после suspend().
Устанавливает error() в QAudio::NoError. Устанавливает state() в QAudio::ActiveState, если вы ранее вызвали start(QIODevice*). Устанавливает state() в QAudio::IdleState, если вы ранее вызвали start(). И испускает сигнал stateChanged().
void QAudioInput::setBufferSize(int value)
Устанавливает размер буфера аудиоданных в value байт.
Примечание: Этот метод можно вызывать в любое время до start(), вызовы после start() игнорируются. Не следует предполагать, что установленный размер буфера — это фактический размер, используемый буфером. Вызов bufferSize() в любой момент после start() вернёт фактический используемый размер буфера.
См. также bufferSize().
void QAudioInput::setNotifyInterval(int ms)
Устанавливает интервал для испускания сигнала notify(). Это основано на обработанных ms аудиоданных, а не на реальном времени. Минимальное разрешение таймера зависит от платформы, и значения следует проверять с помощью notifyInterval(), чтобы подтвердить фактическое используемое значение.
См. также notifyInterval().
void QAudioInput::setVolume(qreal volume)
Устанавливает громкость ввода в volume.
Громкость масштабируется линейно от 0.0 (тишина) до 1.0 (полная громкость). Значения вне этого диапазона будут ограничены.
Если устройство не поддерживает регулировку громкости ввода, то volume будет проигнорировано, и громкость ввода останется на уровне 1.0.
Значение по умолчанию — 1.0.
Примечание: корректировки громкости изменят громкость этого аудиопотока, а не глобальную громкость.
См. также volume().
void QAudioInput::start(QIODevice *device)
Начинает передачу аудиоданных с аудиовхода системы в устройство device. Устройство device должно быть открыто в режимах WriteOnly, Append или ReadWrite.
Если QAudioInput успешно получает аудиоданные, state() возвращает QAudio::ActiveState или QAudio::IdleState, error() возвращает QAudio::NoError, и испускается сигнал stateChanged().
Если при этом возникнет проблема, error() вернёт QAudio::OpenError, state() вернёт QAudio::StoppedState и испускается сигнал stateChanged().
См. также QIODevice.
QIODevice *QAudioInput::start()
Возвращает указатель на внутреннее устройство QIODevice, используемое для передачи данных с аудиовхода системы. Устройство уже будет открыто, и read() может читать данные непосредственно из него.
Примечание: Указатель станет недействительным после остановки потока или при запуске другого потока.
Если QAudioInput может получить доступ к устройству аудиовхода, state() возвращает QAudio::IdleState, error() возвращает QAudio::NoError и испускается сигнал stateChanged().
Если при этом возникнет проблема, error() вернёт QAudio::OpenError, state() вернёт QAudio::StoppedState и испускается сигнал stateChanged().
См. также QIODevice.
QAudio::State QAudioInput::state() const
Возвращает состояние обработки аудио.
[signal] void QAudioInput::stateChanged(QAudio::State state)
Этот сигнал испускается, когда состояние устройства state изменилось.
void QAudioInput::stop()
Останавливает аудиовход, отсоединяясь от системного ресурса.
Устанавливает error() в QAudio::NoError, state() в QAudio::StoppedState и испускает сигнал stateChanged().
void QAudioInput::suspend()
Останавливает обработку аудиоданных, сохраняя данные в буферах.
Устанавливает error() в QAudio::NoError, state() в QAudio::SuspendedState и испускает сигнал stateChanged().
qreal QAudioInput::volume() const
Возвращает громкость ввода.
Если устройство не поддерживает регулировку громкости ввода, возвращаемое значение будет 1.0.
См. также setVolume().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.11/qaudioinput.html