Воспроизведение с QMediaPlayer каждого кадра из видео

У меня есть вторичный поток, который отправляет видеокадры один за другим в формате QByteArray (каждый кадр - это отдельный QByteArray) с методом сигнального слота в основной поток, где у меня есть интерфейс Qt с QMediaPlayer, показанный с QVideoWidget.

Я хочу показать видео, воспроизводящее его кадры (отправленные из вторичного потока в основной поток как разные QByteArrays) один за другим, используя объект QMediaPlayer из основного потока.

Я много чего пробовал с помощью QBuffer, но не могу ничего играть или даже вылетает программа.

Я предположил, что то, что я пытаюсь сделать, очень деликатно, но я почти уверен, что это возможно, и это может быть реализовано в небольшом количестве строк кода.

Мне нужен четкий пример кода с использованием C++ с Qt для этого, пожалуйста (я много искал, но не могу найти именно то, что мне нужно).

Мой основной код выглядит примерно так:

  • Во вторичном потоке этот метод выполняется для получения кадров видео, которое я хочу воспроизвести (это требование задания):
void classfromsecondarythread::process()
{ //...
  while (videoHasFrames)
 {
  // "qbytearrayFrame" is a video frame, and "frameSize" is its size

  emit(qbytearrayFrame, frameSize);
  //...
 }
}
  • У меня есть класс, в котором я устанавливаю соединение с классом поставщика кадров и сценой, в которой я хочу показать видео:
// ...
connect(video_ctr[i], SIGNAL(frame(QByteArray, int), this->scene, SLOT(frameSlot(QByteArray, int));
// ...
  • Моя сцена (основной поток), где я хочу показать кадры из видео, имеет:
// ...
QMediaPlayer player;
QVideWidget videoWidget;
QBuffer buffer;
// ...
player->setVideoOutput(videoWidget);
//...
  • Слот сцены. Вот где нужно поймать каждый frameArray из видео и воспроизвести его. (Обратите внимание, что слот выполняется правильно, каждый раз, когда "функция обработки" посылает сигнал):
void MainScene::frameSlot(QByteArray frameArray, int frameSize)
{
  // HERE IS WHERE I NEED THE CODE
}

огромное спасибо

0 ответов

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