8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

使用 srt 套接字时出现意外错误(

YAS_Bangamuwage 2月前

18 0

我与 srt 套接字建立了服务器和客户端连接(通过 Haivision https://github.com/Haivision/srt)。连接按预期建立,但是,当通信开始时,出现了一个奇怪的错误应用程序……

我有一个带有 srt 套接字的服务器和客户端连接(由 Haivision https://github.com/Haivision/srt 提供)。连接按预期建立,但是,当通信开始时,出现一个奇怪的错误。我的数据包结构是宽度:2 个字节高度:2 个字节图像:宽度 高度 3(3 个字节,rgb,每个像素)

当尝试接收代表宽度的前 2 个字节时,控制台中打印了以下消息:\'LiveCC:缓冲区大小:2 太小,无法达到最大值 1316\'

我无法解决这个问题,在读取其余数据之前读取前 4 个字节对于代码流来说至关重要,但 srt 似乎无法处理小于 1316 字节的数据,我不知道该怎么做。如果有人更了解协议实现并能帮助我解决这个问题,那就太好了。

这是我失败的代码:

// _sock is the srt socket
typedef std::vector<Pixel> Image;

Image Viewer::receiveImage(uint16_t& width, uint16_t& height)
{
    int receivedBytes;
    char buffer[sizeof(uint16_t)];
    
    receivedBytes = srt_recvmsg(_sock, buffer, sizeof(buffer)); // here the error gets printed
    width = static_cast<uint16_t>(*buffer);
    receivedBytes = srt_recvmsg(_sock, buffer, sizeof(buffer)); // here the error gets printed
    height = static_cast<uint16_t>(*buffer);

    Image image(width * height * BITS_IN_BYTE);

    receivedBytes = srt_recvmsg(_sock, (char*)image.data(), image.size());
    if (receivedBytes <= 0)
    {
        throw std::runtime_error("Failed to receive stream from Sharer");
    }

    image.resize(receivedBytes);
    return image;
}
帖子版权声明 1、本帖标题:使用 srt 套接字时出现意外错误(
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由YAS_Bangamuwage在本站《sockets》版块原创发布, 转载请注明出处!
最新回复 (0)
返回
作者最近主题: