如何解码客户端

时间:2015-11-12 07:47:26

标签: c++ opencv streaming video-streaming client-server

我尝试使用OpenCV C ++流式传输实时视频。在Serverside中捕获网络摄像头视频,然后对其进行编码并发送给客户端。当我尝试在客户端进行解码时,它无法做到。

std::vector<char> buf(recvbuf, recvbuf + recvbuflen); // error here cv::Mat matrixJprg = cv::imdecode(cv::Mat(buf), CV_LOAD_IMAGE_COLOR); pYuvImage = cvCloneImage(&(IplImage)matrixJprg);

Picture can see some data are lost

服务器代码编码部分。

    std::vector<int> p;
    p.push_back(CV_IMWRITE_PNG_COMPRESSION);
    p.push_back(10);
    std::vector<unsigned char> buf;
    cv::imencode(".png", cv::cvarrToMat(image), buf, p);

    imageSize = buf.size();

    char* encodedBuffer = (char*)buf.data();

    char* sendBuffer = new char[buf.size()];

    memcpy(sendBuffer, encodedBuffer, buf.size());

    sendData = (char*)buf.data();

    hdr.dataLength = htonl(imageSize);
    hdr.encoded = htons(1);

    mSocket->writeData((char*)(&hdr), sizeof(hdr));
    mSocket->writeData(sendBuffer, imageSize);

我尝试仅在服务器端流式传输视频而不是将其发送到客户端,在服务器端对视频进行编码和解码,它的工作正常。 有人帮我解决这个问题。

0 个答案:

没有答案