首页 > 解决方案 > 从服务器到客户端的实时流式传输相机数据

问题描述

我正在做一个项目,我在其中设置了服务器和客户端,服务器通过 TCPIP 将网络摄像头图像发送到客户端(用于客户端上的实时流)。

出于测试目的,我在同一台 PC 上同时运行客户端和服务器。

在服务器端,使用 qcamera,我获取网络摄像头图像,将其转换为 QByteArray,然后将其发送给客户端。

但是,我注意到在发送图像数据时,客户端无法一次接收到数据。例如,如果服务器发送长度为15000的QByteArray,客户端收到长度为10000、3000和2000的数据,加起来是15000。(我使用的是readyRead()信号和socket->readAll()函数)

因此,要在客户端实时流式传输网络摄像头图像,我需要一种方法来解析一个摄像头图像和另一个摄像头图像。我试图在 QByteArray 的末尾添加一个终止符,例如';',但我的网络摄像头图像数组似乎包含';'、'?'、'*'等,所以我不能使用他们作为终结者。

在这个问题上有什么解决方法吗?

标签: c++qttcp

解决方案


您所需要的只是 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();

您也可以将 rtsp 架构 url 传递给播放列表


推荐阅读