将摄像机数据从服务器实时流传输到客户端

时间:2018-10-19 01:00:10

标签: c++ qt tcp

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

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

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

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

因此,要在客户端上实时流播网络摄像头图像,我需要一种从另一个解析一个摄像头图像的方法。我试图在QByteArray的末尾添加一个终止符,例如“;”,但是看来我的网络摄像头图像数组包含“;”,“?”,“ *”等,因此我无法使用他们作为终结者。

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

1 个答案:

答案 0 :(得分: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();

您还可以将rtsp模式网址传递给播放列表