video-streaming-poc/client.cpp

46 lines
1.2 KiB
C++

#include <opencv2/videoio.hpp>
#include <cstring>
#include <iostream>
#include <netinet/in.h>
#include <sys/socket.h>
#include <unistd.h>
#include <packets/ImagePacket.h>
using namespace std;
int main() {
cv::VideoCapture cap = cv::VideoCapture(0);
int clientSocket = socket(AF_INET, SOCK_STREAM, 0);
// specifying address
sockaddr_in serverAddress;
serverAddress.sin_family = AF_INET;
serverAddress.sin_port = htons(8080);
serverAddress.sin_addr.s_addr = INADDR_ANY;
cv::Mat image = cv::Mat::zeros(cv::Size(640, 480), CV_8UC3);
ImagePacket packet = ImagePacket(&image, 0);
// sending connection request
connect(clientSocket, (struct sockaddr*)&serverAddress,
sizeof(serverAddress));
unsigned long pos = 0;
unsigned long len = image.total() * image.elemSize();
char buffer[IMAGEPACKET_SIZE];
cout << "Image length " << len << endl;
while (true) {
cap.read(image);
packet = ImagePacket(&image, pos);
packet.serialize(buffer);
send(clientSocket, buffer, sizeof(buffer), 0);
cout << "Sent packet with index " << pos << endl;
pos = (pos + SLICE_SIZE) % len;
}
close(clientSocket);
return 0;
}