c++ - 从服务器到客户端的实时流式传输相机数据
问题描述
我正在做一个项目,我在其中设置了服务器和客户端,服务器通过 TCPIP 将网络摄像头图像发送到客户端(用于客户端上的实时流)。
出于测试目的,我在同一台 PC 上同时运行客户端和服务器。
在服务器端,使用 qcamera,我获取网络摄像头图像,将其转换为 QByteArray,然后将其发送给客户端。
但是,我注意到在发送图像数据时,客户端无法一次接收到数据。例如,如果服务器发送长度为15000的QByteArray,客户端收到长度为10000、3000和2000的数据,加起来是15000。(我使用的是readyRead()信号和socket->readAll()函数)
因此,要在客户端实时流式传输网络摄像头图像,我需要一种方法来解析一个摄像头图像和另一个摄像头图像。我试图在 QByteArray 的末尾添加一个终止符,例如';',但我的网络摄像头图像数组似乎包含';'、'?'、'*'等,所以我不能使用他们作为终结者。
在这个问题上有什么解决方法吗?
解决方案
您所需要的只是 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 传递给播放列表
推荐阅读
- flutter - 如何扩展 Dart 类以使动态属性获得正确的类型
- android - build.gradle 和 AndroidManifest.xml 在哪里
- kubernetes - 如何在 Keycloak Operator (v13.0.0) 上使用自定义主题?
- android - 使用 android gradle 插件版本 7.0.0-alpha15 时无法使用 kotlin-gradle-dsl 脚本
- lightningchart - 在 LightningChart-JS 中,如何将 x 轴数字从升序反转为降序
- flutter - video_player 切换视频后显示空白缩略图
- python - 尝试调用函数时 Pyrogram 处理程序不起作用
- python - 包含 pandas 中所有先前值的滚动相关性
- reactjs - 在 React 的功能组件中使用状态
- html - 如何从服务器强制刷新 HTML 页面