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 не требовал многого, чтобы он заработал.