qt - GStreamer d3dvideosink 覆盖重绘闪烁
问题描述
关于d3dvideosink我有一个相当持久的问题。
我的 GStreamer 管道是使用 Qt/C++ 中的 GStreamer SDK 1.14.2 编写的,如下所示: videotestsrc -> d3dvideosink
我gst_video_overlay_set_window_handle
用来将接收器输出放在相应的 QWidget 上(使用WId QWidget::winId() const
)。
流按预期工作,但在小部件(或任何父小部件)重新绘制时(例如,在调整大小时)时会产生闪烁。
如何配置小部件/管道/d3dvideosink/...以消除闪烁?
PS 使用 glimagesink 而不是 d3dvideosink 可以工作,但性能会降低。
解决方案
禁用窗口上的 Qt 重绘。去做这个:
- setAttribute(Qt::WA_PaintOnScreen);
- 重载paintEngine() 以返回nullptr。
推荐阅读
- android - 为解密创建安全处理程序时出现 NullPointerException:使用 pdfbox 从 PDF 中提取文本时出错
- java - 继承和接口设计改进
- facebook-pixel - 如何修复 facebook 像素错误
- java - 无法访问原始文件夹中的文件
- html - 添加事件侦听器在动态(*ngFor)创建的元素中不起作用
- php - 如何从数组中的所有索引中获取特定值
- python - 使用 Tweepy 访问 twitter API 时出错
- wso2esb - 如何只处理每个“x”消息?
- c++ - 如何安全地向下转换 USTRUCT
- python - 有没有办法从网站的检查菜单中获取有关元素的信息?