一种视频流分流实现方法(Linux)

2023年 9月 22日 48.9k 0

本实验结合信号量实现有界环形FIFO缓冲,利用二级指针创建分流矩阵,每个支流均包含一个fifo,各支流fifo之间互不影响。

  • 进行图像采集前,先根据分流路数创建对应数量的fifo环形缓冲区;
  • 每个环形缓冲区直接分配n帧图像的内存空间;
  • 支流进行图像采集时,先判断fifo空间大小,当fifo未满时,先分配一帧图像大小的内存,并拷贝原始数据,直接将新建帧写入fifo缓冲区尾部;当fifo空间大小已达到n帧时,忽略原始帧,不进行拷贝;当从fifo中读取一帧即出队,开始处理帧数据,结束后释放该帧内存。
  • 通过对原始流复制进行分流,各支流能根据不同业务进行相应的处理,如录制、推流、预览。该分流方法可以应用于其他字节流分流场景。

    在Linux环境中,利用QT验证了以上思路。验证过程中,各路支流几乎能保持与原始流一致的帧率。无论支流出队多么耗时,都不影响原始流、其他支流的渲染过程。实验结果如下:

    6路支流

    image.png

    5路支流

    image.png

    4路支流

    image.png

    3路支流

    image.png

    2路支流

    image.png

    1路支流

    image.png

    相关文章

    服务器端口转发,带你了解服务器端口转发
    服务器开放端口,服务器开放端口的步骤
    产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
    如何使用 WinGet 下载 Microsoft Store 应用
    百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
    百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

    发布评论