QAudioDecoder не возвращает никаких данных по ubutu 20.10

Я пытаюсь получить аудиоданные с помощью QT 5.12 QAudioDecoder класс, но после звонка start() декодер метода изменяет состояние на декодирование, но никогда не возвращает ни буфер, ни ошибку.

Думаю, я установил все необходимые библиотеки:

  • libgstreamer1.0-0 / focal, теперь 1.16.2-2 amd64 [установлен, автоматически]
  • libqt5gstreamer-dev / focal, теперь 1.2.0-5 amd64 [установлен]
  • libqt5multimedia5 / focal, теперь 5.12.8-0ubuntu1 amd64 [установлен, автоматически]

Мое тестовое приложение тривиально:

test.hpp

#include <QObject>
#include <QAudioDecoder>
#include <QtDebug>

class Test : public QObject
{
    Q_OBJECT

    QAudioDecoder decoder;
    QAudioFormat format;

public:
    Test();
    virtual ~Test();

private slots:
    void decoder_finished();
    void decoder_error();
    void read_buf();
    void timerEvent(QTimerEvent *event);
};

test.cpp

#include "test.hpp"
#include <QAudioDecoder>
#include <QtDebug>

Test::Test()
{
    connect(&decoder, SIGNAL(finished()), this, SLOT(decoder_finished()));
    connect(&decoder, SIGNAL(error(QAudioDecoder::Error)), this, SLOT(decoder_error()));

    format.setSampleRate(44000);
    format.setSampleType(QAudioFormat::SignedInt);
    format.setChannelCount(2);
    format.setSampleSize(16);
    format.setCodec("audio/pcm");

    decoder.setAudioFormat(format);
    decoder.setSourceFilename("/home/fox/Documents/test.wav");
    decoder.start();

    this->startTimer(1000);
}

Test::~Test(){};

void Test::decoder_finished()
{
    qDebug() << "Finished";
}
void Test::decoder_error()
{
    qDebug() << "Error";
}
void Test::read_buf()
{
    int cnt = 0;
    for(; decoder.bufferAvailable(); cnt++)
        decoder.read();
    qDebug() << cnt << " bufs read";
}

void Test::timerEvent(QTimerEvent *event)
{
    (void)event;
    qDebug() << decoder.state() << "\t" << decoder.errorString();
}

Выход просто

QAudioDecoder::DecodingState     ""
QAudioDecoder::DecodingState     ""
QAudioDecoder::DecodingState     ""
...

Спасибо за любую подсказку.

ИЗМЕНИТЬ:

С QT5.15 то же самое. Покрутил под strace, но ничего подозрительного не вижу. Журнал здесь

Есть идеи, как его отлаживать?

1 ответ

Как бы то ни было, у меня есть приложение, которое я разработал в прошлом году для воспроизведения звука через Qt multimedia, работающее как с Ubuntu 18.04, так и с Raspbian ... но почему-то оно не работает с Ubuntu 20.04, QAudioDecoder отправляет мне сигналы об ошибке (1). Просто начинаю копаться, установка различных предлагаемых пакетов поддержки -dev не помогает. В 18.04 он «просто работал», и Raspbian не требовал многого, чтобы он заработал.

Другие вопросы по тегам