Pandakik 2022-06-01 15:54 采纳率: 50%
浏览 266
已结题

Gstreamer用tee的多线程中appsink使管道帧率降低严重怎么办??soos!

Gstreamer-tee-appsink,filesink,rtspsink

我是使用Gstreamer对摄像头的源(30帧)接入三个分支:appsink,filesink,rtspsink,
appsink用于输出每一帧
filesink用于保存视频
rtsp用于推流

这是我的管道拓扑图

img

问题描述

我遇到的问题是加入appsink会导致整个管道的输出帧率降低,没有appsink,仅有推流和保存视频是正常的
并且很奇怪的地方是在上面的图片中显示管道间的帧率正常,到输出到文件和网页上不正常,仅有7帧

希望能帮我看看是什么问题,有没有解决方案,困扰我一个星期了55
  • 写回答

1条回答 默认 最新

  • maskerJT 2022-06-03 12:00
    关注

    你是想用appsink从gstreamer里面取数据用来实时处理吧。我也碰到过这个问题,原因是你用的处理线程和gstreamer管道它们是处于不同的虚拟内存下的,gstreamer默认分配用于推流的memory是没法给你自己的处理线程cache的。网上推荐的做法我貌似只看到有说修改并重新编译gstreamer的源码,开启该memory的cache,否则基本无解(或者你再查查别人有什么解决办法,我之前没找到)。我自己的解决办法是抛弃gstreamer,使用v4l2框架改自己的程序,这是一套成熟的东西,到处都是v4l2采集视频的demo,在demo中使用V4L2_MEMORY_USERPTR(一共有四种方式)即可。
    https://github.com/biotrump/v4l-capture/blob/master/demo.c
    https://community.nxp.com/t5/i-MX-Processors/Why-is-access-to-V4L2-buffers-slower-than-other-memory/m-p/146640

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 6月17日
  • 已采纳回答 6月9日
  • 修改了问题 6月2日
  • 修改了问题 6月1日
  • 展开全部

悬赏问题

  • ¥50 易语言把MYSQL数据库中的数据添加至组合框
  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况