如何防止QT绘制到屏幕上?(使用gstreamer播放视频时防止闪烁)

如何防止QT绘制到屏幕上?(使用gstreamer播放视频时防止闪烁),qt,qt5,gstreamer,gstreamer-1.0,qtgstreamer,Qt,Qt5,Gstreamer,Gstreamer 1.0,Qtgstreamer,这是QT5。它在嵌入式Yocto系统上,QT绘图到帧缓冲区,没有X11。问题是这个。我想用gstreamer播放一段视频。因此,我尝试启动gstreamer,并将gst-launch-1.0链接到QT中的触摸事件。问题是,当QT也尝试渲染帧时,它会闪烁 接下来,我们尝试了Q媒体播放器。但是,这个专有的gstreamer不支持playbin,因此,我进入了QGstreamerPlayerSession并修改了构造函数以使用gst_parse_launch来设置管道,而不是playbin 这是有效的

这是QT5。它在嵌入式Yocto系统上,QT绘图到帧缓冲区,没有X11。问题是这个。我想用gstreamer播放一段视频。因此,我尝试启动gstreamer,并将gst-launch-1.0链接到QT中的触摸事件。问题是,当QT也尝试渲染帧时,它会闪烁

接下来,我们尝试了Q媒体播放器。但是,这个专有的gstreamer不支持playbin,因此,我进入了QGstreamerPlayerSession并修改了构造函数以使用gst_parse_launch来设置管道,而不是playbin

这是有效的,因为我的视频播放。然而,仍然有同样的闪烁!在启动视频之前,我试图抛出一个白色矩形,但它仍然闪烁

如何防止QT重新绘制?在播放视频之前我需要一个空的场景吗?或者是否有暂停重画的函数调用


当然,我可以向QT发送一个SIGSTOP,在外部应用程序中播放视频,然后使用SIGCONT继续。这是可行的,但显然是一个非常不雅观和限制性的解决方案(我需要应用程序仍在后台处理,因为它还控制着其他东西)。

如果没有您的环境,这是一个猜测游戏。但是我假设屏幕输出实际上是负责的。如果处理不当和/或背景绘图表面失效,则可能会由于帧速率和显示速率之间不同步而发生闪烁。如果将视频渲染到OpenGL表面,通常不会出现闪烁,但不清楚程序渲染到的是哪种表面,而是直接渲染到帧缓冲区。因此QT与视频同时绘制到/dev/fb0。“闪烁”是指我在视频帧之间周期性地看到QT输出。所以我的问题是如何让QT停止渲染/防止QT认为屏幕需要刷新?@AlexanderVX不确定这与我的问题有什么关系。同样,我的问题是,我需要能够在帧缓冲区中播放视频,而不需要通过绘制帧进行Qt干扰。如果无法手动暂停Qt的渲染循环,我想知道是否有另一种方法或场景架构会导致Qt不重新绘制任何内容。我通过帧缓冲区和普通图像绘制进行QML视频输出。考虑并回答这个问题,但是设置<代码> ReRealDestabor <代码> >代码>图像< /代码>,而不是<代码> FrimBuffServices < /代码>。这符合答案吗?没有你的环境,这是一个猜测游戏。但是我假设屏幕输出实际上是负责的。如果处理不当和/或背景绘图表面失效,则可能会由于帧速率和显示速率之间不同步而发生闪烁。如果将视频渲染到OpenGL表面,通常不会出现闪烁,但不清楚程序渲染到的是哪种表面,而是直接渲染到帧缓冲区。因此QT与视频同时绘制到/dev/fb0。“闪烁”是指我在视频帧之间周期性地看到QT输出。所以我的问题是如何让QT停止渲染/防止QT认为屏幕需要刷新?@AlexanderVX不确定这与我的问题有什么关系。同样,我的问题是,我需要能够在帧缓冲区中播放视频,而不需要通过绘制帧进行Qt干扰。如果无法手动暂停Qt的渲染循环,我想知道是否有另一种方法或场景架构会导致Qt不重新绘制任何内容。我通过帧缓冲区和普通图像绘制进行QML视频输出。考虑并回答这个问题,但是设置<代码> ReRealDestabor <代码> >代码>图像< /代码>,而不是<代码> FrimBuffServices < /代码>。这符合回答的条件吗?