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

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日
  • 展开全部

悬赏问题

  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分