Spec-Zone.ru › Qt 5.15

Класс QAudioInput

Класс QAudioInput предоставляет интерфейс для получения аудиоданных с устройства ввода звука. Подробнее...

Заголовок: #include <QAudioInput>
qmake: QT += multimedia
Наследует: QObject
  • Список всех членов, включая унаследованные

Открытые функции

QAudioInput(const QAudioDeviceInfo &audioDevice, const QAudioFormat &format = QAudioFormat(), QObject *parent = nullptr)
QAudioInput(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

Сигналы

void notify()
void stateChanged(QAudio::State state)

Подробное описание

Вы можете создать аудиовход с помощью системного стандартного устройства аудиоввода. Также возможно создать 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 QAudioDeviceInfo &audioDevice, const QAudioFormat &format = QAudioFormat(), QObject *parent = nullptr)

Создаёт новый аудиовход и прикрепляет его к parent. Устройство, на которое ссылается audioDevice, используется с параметрами ввода format.

QAudioInput::QAudioInput(const QAudioFormat &format = QAudioFormat(), QObject *parent = nullptr)

Создаёт новый аудиовход и прикрепляет его к parent. Используется стандартное устройство аудиоввода системы с параметрами вывода format.

[signal] void QAudioInput::notify()

Этот сигнал генерируется, когда x мс аудиоданных были обработаны в интервале, установленный функцией setNotifyInterval(x).

[signal] void QAudioInput::stateChanged(QAudio::State state)

Этот сигнал генерируется, когда состояние устройства state изменилось.

[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.

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

Возвращает состояние обработки аудио.

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.15/qaudioinput.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API