У меня есть источник звука в прямом эфире, который я хочу воспроизвести напрямую через 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 и записать напрямую в него, но все равно он ведет себя так же.