Класс QAudioInput
Класс QAudioInput предоставляет интерфейс для получения аудиоданных с устройства аудиовхода. Подробнее...
| Заголовок: | #include <QAudioInput> |
| qmake: | QT += multimedia |
| Наследует: | QObject |
Открытые функции
| QAudioInput(const QAudioFormat &format = QAudioFormat(), QObject *parent = Q_NULLPTR) | |
| QAudioInput(const QAudioDeviceInfo &audioDevice, const QAudioFormat &format = QAudioFormat(), QObject *parent = Q_NULLPTR) | |
| ~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 |
- 32 открытых функций, унаследованных от QObject
Сигналы
| void | notify() |
| void | stateChanged(QAudio::State state) |
- 2 сигнала, унаследованных от QObject
Дополнительные унаследованные члены
- 1 свойство, унаследованное от QObject
- 1 открытый слот, унаследованный от QObject
- 11 статических открытых членов, унаследованных от QObject
- 9 защищенных функций, унаследованных от 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 = Q_NULLPTR)
Создаёт новый аудиовход и прикрепляет его к parent. Используется стандартное устройство аудиовхода системы с параметрами вывода format.
QAudioInput::QAudioInput(const QAudioDeviceInfo &audioDevice, const QAudioFormat &format = QAudioFormat(), QObject *parent = Q_NULLPTR)
Создаёт новый аудиовход и прикрепляет его к parent. Используется устройство, указанное в audioDevice, с параметрами ввода format.
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. Устройство должно быть открыто в режимах 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/qt-5.9/qaudioinput.html