Spec-Zone.ru › Qt 5.12

Класс 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
  • 31 открытая функция, унаследованная от QObject

Сигналы

void notify()
void stateChanged(QAudio::State state)
  • 2 сигнала, унаследованные от QObject

Статические открытые члены

const QMetaObject staticMetaObject
  • 9 статических открытых членов, унаследованных от QObject

Дополнительные унаследованные члены

  • 1 свойство, унаследованное от QObject
  • 1 открытый слот, унаследованный от 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 = 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)

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

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

Spec-Zone.ru

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