是否有用于同步的缓冲方法?

时间:2019-07-04 08:53:35

标签: c++ gstreamer

我正在尝试将一个视频流传输到多个客户端,我需要一个缓冲区来保持帧,如何写此缓冲区? 我正在Visual Studio上学习。我需要帮助

1 个答案:

答案 0 :(得分:0)

任何图像(例如帧)仅是多个字节(在大多数格式中,无论如何现在都是以其结构形式显示)。基本上,您所需要做的就是找到如何从框架对象中获取该表示形式。

std::vector<std::vector<unsigned char>>是您的朋友,如果您将图像保留为压缩格式(例如JPEG)。

std::vector<std::vector<vec3b>>是您的朋友,如果您将图像保留为未压缩格式(RGB,YUV,HSV,HSL等)。

在这里,我建议您将单个图像保留在较高级向量的单个元素中。在您进行图像/视频处理时,我想您已经知道如何使用vectors = 3

请注意,由于将完整的解码图像保留在内存中,因此该方法会占用大量内存。如果要限制所用内存的最大数量,请使用循环缓冲区模式(在速度和内存方面是免费的,可以在15分钟左右的时间内将std :: vector之上的有效抽象编写出来)。

P.S。另外,当您提出有关SO的问题时,请尝试提供尽可能多的信息-代码段,使用的框架,尝试的(以及失败的)方法来解决问题。这样可以更轻松地正确响应。