Класс 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 |
- 31 открытых функций, унаследованных от 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.
Если устройство не поддерживает регулировку громкости входа, то volume будет проигнорировано, а громкость входа останется равной 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.6/qaudioinput.html