Прямая трансляция данных камеры с сервера на клиент
Я работаю над проектом, где я настраиваю сервер и клиент, и сервер отправляет изображение веб-камеры клиенту через 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 в плейлист