问题标签 [qvideowidget]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
298 浏览

c++ - QT 小部件 视频作为背景?

我必须为我的新程序开发一个 UI,并且我想播放一个动画壁纸 (mp4) 作为我的背景。有人知道我该怎么做吗?

我尝试使用 qvideowidget 和 qmediaplayer 解决它,但如果我这样做,我将无法在视频上插入按钮等,以便视频成为我的背景。

随后,我将视频转换为单个图像,并尝试在每次迭代时刷新 qlabel 的像素图,但我的程序崩溃了,所以这也不起作用。

0 投票
3 回答
177 浏览

python - QVideoWidget 内容未从小部件中获取

我创建了一个简单的媒体播放器。我想添加对显示的视频进行快照的功能。为此,我使用“self.videoWidget.grab()”函数。但似乎grab() 不能正常工作,因为我得到了一张作为wiget 背景颜色的图片,而不是快照。如果我将 'self.videoWidget.grab()' 替换为 'snapshot = self.grab()' 我得到了小部件的快照,但上面没有 videoWidget 内容(添加了图片)。我去抛出类似的问题,但一无所获。我是 PyQt5 的新手,所以我希望解决方案是显而易见的,但我没有单独找到它。

如何抓取窗口

窗口中实际发生了什么

0 投票
1 回答
74 浏览

c++ - 如何在具有透明度的 QVideoWidget 上使用paintEvent?

我正在研究 qt5 (C +)。我使用 QVideoWidget 播放 rtsp 视频流。我想用 QPainter 在显示的视频上绘制任何签名。但是,我在绘画时模糊了视频。例如,关于绘图区域,我给出了 QVideoWidget 图像的一半。

使用的示例:
使用的示例

尝试在 QVideoWidget 上添加额外的 QLabel:

然后画上“标签”,还覆盖了QVideoWidget。

我还补充说:

但随后透明度一直延伸到操作系统的桌面。

0 投票
1 回答
59 浏览

python - 并排播放两个视频:视频不显示

我正在尝试构建一个 GUI,它由在窗口上不同位置播放的多个视频组成,所有视频都具有 alpha 通道,因为有些视频与其他视频重叠,基于外部设备固件提供的指令。

我在项目的最开始,所以我想要的只是在同一个屏幕上播放两个视频,然后从那里开始。(虽然如果你知道一个很好的例子来分享我的最终目标,那也太棒了)。

我看到的适用于这个项目的层次结构是一个 QMainWindow,它包含一个 QGraphicsView,它包含一个 QGraphicsScene,它包含两个 QGraphicsVideoItem,它们是 QMediaPlayer 的“输出”。(我是否已经采取了错误的方式?)

一个窗口打开,大小合适,但没有播放视频。我做了很多测试,例如添加布局,更改某些指令的顺序等。但没有。

0 投票
1 回答
150 浏览

python - 背景图像上带有 Alpha 通道叠加的视频:Alpha 显示黑色

我需要在场景中播放带有 Alpha 通道的 .mov 视频 (ProRes4444)。场景有一个背景图像,我需要使用视频的 alpha 通道,以便它覆盖在背景上。

如果我用 QMediaPlayer 正常打开视频,alpha 通道显示为黑色。

带有背景图片的屏幕和带有黑色 alpha 的视频:

带有背景图片的屏幕和带有黑色 alpha 的视频

如何使 QMediaPlayer (QGraphicsVideoItem) 的输出尊重 alpha 并使叠加效果成为可能?

根据在线研究,我最接近答案的是 cpp 中的代码,我发现它显示了创建接收视频帧转换为 ARGB 的 QAbstractVideoSurface 的子类的必要性,然后将它们转发到显示它们的 QLabel。

使用 qt 显示带有 alpha 通道的视频

我也试过了,没有成功。这是正确的课程还是我只是在当前代码中遗漏了一些简单的东西?

编辑:链接到文件(背景图片和视频.mov) https://drive.google.com/drive/folders/1LIZzTg1E8wkaD0YSvkkcfSATdlDTggyh?usp=sharing

0 投票
1 回答
163 浏览

python - 如何在 PyQt5 中的 QVideoWidget 中旋转视频

图形用户界面

主要的

我正在测试 PyQt5 QVideowidget,但视频旋转出现问题。

我在互联网上找到的视频没有旋转,所以我没有任何问题。

但是我无法在 QVideowidget 中旋转我用手机拍摄的视频。

在此处输入图像描述

我没有打开手机,我只是拿起它拍了视频

在此处输入图像描述

这样QVideoWidget拍的视频就躺着出来了。

在此处输入图像描述

如您所见,视频是躺着的,我想旋转这个视频,有什么办法吗?

我不想编辑视频信息。如果有办法旋转媒体,我想拥有图像信息并使用 if 语句旋转媒体。

0 投票
1 回答
48 浏览

python - QVideoWidget 不接收 dropEvent (奇怪的行为)

我想dropEventQVideoWidget. 我知道播放部分,我的问题是 QVideoWidget 没有像其他小部件一样接收 dropEvent 。我想知道这是一个错误,或者我错过了一些东西。

一切正常,所有三个事件都被调用:

但是当我使用与 a 相同的代码时QVideoWidget dropEvent不会被调用:

PS:我不知道为什么,但在dropEvent标题栏上的最后一个代码工作!如果需要,我可以上传 GIF。

0 投票
0 回答
43 浏览

c++ - 通过 QMediaPlayer 在 QVideoWidget 中使用 vaapisink 显示 Gstreamer 视频

我在 Debian 11 上使用 Qt5.12 和 gcc+-8,桌面是 Weston 合成器。Gstreamer 版本为 1.0。我想在我的应用程序上由 QMediaPlayer 在 QVideoWidget 上显示带有 vaapisink 渲染器的 Gstreamer 视频。

这个网站上有一个例子QMediaPlayer 例子

我已经尝试过了,视频可以在 QVideoWidget 中正常运行。但是当我尝试使用来自Jellyfish的视频和 vaapisink 过滤器时,视频显示在 QVideoWidget 之外。我的代码是这样的:

你知道这个问题以及如何解决这个问题吗?

0 投票
1 回答
18 浏览

qt - pyqt5 跳过位置的 setNotifyInterval

当我使用:

setNotifyInterval(1),我注意到它有时会跳过一毫秒。例如:当我打印媒体的位置时,它通常会跳过 2 秒而不是 1 秒。这是一个问题,因为我希望程序每 10 秒停止一次,如果它跳过一毫秒就不会停止。

例如:如果我希望视频在 10 秒(10000 毫秒)处停止,当我输出位置时有时会这样:

9999 毫秒

10001 毫秒

所以跳过了 10000 毫秒的位置,视频不会停止。以前有没有其他人遇到过这个问题?是由于视频缓冲还是计算机延迟?谢谢你的帮助。

该方法的文档是:setNotifyInterval(milliseconds)

编辑:我感谢你们的帮助。以下是对该示例的更多解释:

所以我有一个positionChanged连接到positionChanged插槽的信号。(positionChanged 方法与信号名称相同,但可以更改为任何其他名称)。

因此,我称之为连接信号槽机制:self.mediaPlayer.positionChanged.connect(self.positionChanged)

positionChanged 方法告诉视频每 10 秒停止一次,所以它看起来像这样:

视频播放器有时不会每 10 秒停止一次。这是因为setNotifyInterval(1) isn't always accurate. 我将使用 musicamante 所说的,并检查播放器是否大于或等于 10 秒。谢谢你的帮助

0 投票
0 回答
17 浏览

c++ - 为什么 QMediaPlayer::setVideoOutput() 导致 QOpenGLWidget 不播放视频

环境

  1. 操作系统:Ubuntu 20.04LTS
  2. Qt 版本:5.12.8

目标

我的系统中有两个表单,第一个是QOpenGLWidget(override)来播放视频,第二个是带有一些QVideoWidget(override) -s 在录像机中播放视频。

问题

当第一个表单播放视频时,我显示了第二个表单。第一个表单无法显示视频。我发现这个代码QMediaPlayer::setVideoOutput(ui->videoWidget)导致了问题。

系统界面及操作流程

代码

QOpenGLWidget(覆盖)

QVideoWidget(覆盖)