我正在一个项目中,我在其中设置了服务器和客户端,然后服务器通过TCPIP(用于客户端上的实时流)将网络摄像头图像发送到客户端。
出于测试目的,我在同一台PC上同时运行客户端和服务器。
在服务器端,使用qcamera,我获得了网络摄像头图像,将其转换为QByteArray,然后将其发送给客户端。
但是,我注意到在发送图像数据后,客户端无法一次尝试接收数据。例如,如果服务器发送长度为15000的QByteArray,则客户端将接收长度为10000、3000和2000的数据,这些数据加起来为15000。(我正在使用readyRead()信号和socket-> readAll()函数) )
因此,要在客户端上实时流播网络摄像头图像,我需要一种从另一个解析一个摄像头图像的方法。我试图在QByteArray的末尾添加一个终止符,例如“;”,但是看来我的网络摄像头图像数组包含“;”,“?”,“ *”等,因此我无法使用他们作为终结者。
在这个问题上有什么解决方法吗?
答案 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模式网址传递给播放列表