Потоковое аудио в QtMediaPlayer по сети

У меня есть источник звука в реальном времени, который я хочу воспроизвести напрямую через QMediaPlayer. Я уже могу получать пакеты от QNetworkReply как объект QByteArray, который я добавляю к другому QByteArray, который затем передаю в QBuffer. QBuffer теперь действует как источник мультимедиа. Проблема возникает, когда я устанавливаю источник мультимедиа в этот буфер содержимое буфера не загружается автоматически проигрывателем.

QByteArray *bytes = new QByteArray();
QBuffer *buffer = new QBuffer(bytes);
buffer->open(QIODevice::ReadOnly);
QMediaPlayer *player = new QMediaPlayer(0, QMediaPlayer::StreamPlayback);
player->setMedia(QMediaContent(), buffer); //set buffer as source of media

Слот для обновления кадров.

void updateFrame(int frameId, QByteArray frame){
    if(frameId == 1){
        bytes->clear(); //clear current buffer on new feed
        bytes->append(frame, frame.length());
        player->play(); //start playing the stream on first frame
    }else{
        bytes->append(frame, frame.length()); //add all other frames to the bytes array
    }
}

Мой вопрос в том, как содержимое буфера обновляется при каждом обновлении кадра, но он воспроизводит только первый кадр и излучает остановленный сигнал. Я также пытался открыть QBuffer без QByteArray и писать прямо в него, но все равно он ведет себя так же.

0 ответов

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