Прямая трансляция данных камеры с сервера на клиент

Я работаю над проектом, где я настраиваю сервер и клиент, и сервер отправляет изображение веб-камеры клиенту через TCPIP (для прямой трансляции на клиенте).

В целях тестирования я использую клиент и сервер на одном компьютере.

На стороне сервера, используя qcamera, я получаю изображение с веб-камеры, преобразовываю его в QByteArray и отправляю его клиенту.

Однако я заметил, что при отправке данных изображения клиент не может получить данные с одной попытки. Например, если сервер отправляет QByteArray длиной 15000, клиент получает данные длиной 10000, 3000 и 2000, что в сумме составляет 15000. (Я использую сигнал readyRead() и функцию socket->readAll())

Таким образом, чтобы транслировать изображение с веб-камеры на клиент, мне нужен способ, чтобы отделить изображение с одной камеры от другой. Я пытался добавить терминатор, такой как ';', в конце QByteArray, но кажется, что массив изображений моей веб-камеры содержит ';', '?', '*' И т. Д., Поэтому я не могу использовать их как терминатор.

Есть ли какое-то решение этой проблемы?

1 ответ

Все, что вам нужно, это сам Qt!

Из qdoc:

  playlist = new QMediaPlaylist;
  playlist->addMedia(QUrl("http://example.com/movie1.mp4"));
  playlist->addMedia(QUrl("http://example.com/movie2.mp4"));
  playlist->addMedia(QUrl("http://example.com/movie3.mp4"));
  playlist->setCurrentIndex(1);

  player = new QMediaPlayer;
  player->setPlaylist(playlist);

  videoWidget = new QVideoWidget;
  player->setVideoOutput(videoWidget);
  videoWidget->show();

  player->play();

Также вы можете передать URL схемы rtsp в плейлист

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