问题标签 [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.
c++ - QT 小部件 视频作为背景?
我必须为我的新程序开发一个 UI,并且我想播放一个动画壁纸 (mp4) 作为我的背景。有人知道我该怎么做吗?
我尝试使用 qvideowidget 和 qmediaplayer 解决它,但如果我这样做,我将无法在视频上插入按钮等,以便视频成为我的背景。
随后,我将视频转换为单个图像,并尝试在每次迭代时刷新 qlabel 的像素图,但我的程序崩溃了,所以这也不起作用。
python - QVideoWidget 内容未从小部件中获取
我创建了一个简单的媒体播放器。我想添加对显示的视频进行快照的功能。为此,我使用“self.videoWidget.grab()”函数。但似乎grab() 不能正常工作,因为我得到了一张作为wiget 背景颜色的图片,而不是快照。如果我将 'self.videoWidget.grab()' 替换为 'snapshot = self.grab()' 我得到了小部件的快照,但上面没有 videoWidget 内容(添加了图片)。我去抛出类似的问题,但一无所获。我是 PyQt5 的新手,所以我希望解决方案是显而易见的,但我没有单独找到它。
如何抓取窗口
窗口中实际发生了什么
python - 并排播放两个视频:视频不显示
我正在尝试构建一个 GUI,它由在窗口上不同位置播放的多个视频组成,所有视频都具有 alpha 通道,因为有些视频与其他视频重叠,基于外部设备固件提供的指令。
我在项目的最开始,所以我想要的只是在同一个屏幕上播放两个视频,然后从那里开始。(虽然如果你知道一个很好的例子来分享我的最终目标,那也太棒了)。
我看到的适用于这个项目的层次结构是一个 QMainWindow,它包含一个 QGraphicsView,它包含一个 QGraphicsScene,它包含两个 QGraphicsVideoItem,它们是 QMediaPlayer 的“输出”。(我是否已经采取了错误的方式?)
一个窗口打开,大小合适,但没有播放视频。我做了很多测试,例如添加布局,更改某些指令的顺序等。但没有。
python - 背景图像上带有 Alpha 通道叠加的视频:Alpha 显示黑色
我需要在场景中播放带有 Alpha 通道的 .mov 视频 (ProRes4444)。场景有一个背景图像,我需要使用视频的 alpha 通道,以便它覆盖在背景上。
如果我用 QMediaPlayer 正常打开视频,alpha 通道显示为黑色。
带有背景图片的屏幕和带有黑色 alpha 的视频:
如何使 QMediaPlayer (QGraphicsVideoItem) 的输出尊重 alpha 并使叠加效果成为可能?
根据在线研究,我最接近答案的是 cpp 中的代码,我发现它显示了创建接收视频帧转换为 ARGB 的 QAbstractVideoSurface 的子类的必要性,然后将它们转发到显示它们的 QLabel。
我也试过了,没有成功。这是正确的课程还是我只是在当前代码中遗漏了一些简单的东西?
编辑:链接到文件(背景图片和视频.mov) https://drive.google.com/drive/folders/1LIZzTg1E8wkaD0YSvkkcfSATdlDTggyh?usp=sharing
python - QVideoWidget 不接收 dropEvent (奇怪的行为)
我想dropEvent
在QVideoWidget
. 我知道播放部分,我的问题是 QVideoWidget 没有像其他小部件一样接收 dropEvent 。我想知道这是一个错误,或者我错过了一些东西。
一切正常,所有三个事件都被调用:
但是当我使用与 a 相同的代码时QVideoWidget
,dropEvent
不会被调用:
PS:我不知道为什么,但在dropEvent
标题栏上的最后一个代码工作!如果需要,我可以上传 GIF。
c++ - 通过 QMediaPlayer 在 QVideoWidget 中使用 vaapisink 显示 Gstreamer 视频
我在 Debian 11 上使用 Qt5.12 和 gcc+-8,桌面是 Weston 合成器。Gstreamer 版本为 1.0。我想在我的应用程序上由 QMediaPlayer 在 QVideoWidget 上显示带有 vaapisink 渲染器的 Gstreamer 视频。
这个网站上有一个例子QMediaPlayer 例子
我已经尝试过了,视频可以在 QVideoWidget 中正常运行。但是当我尝试使用来自Jellyfish的视频和 vaapisink 过滤器时,视频显示在 QVideoWidget 之外。我的代码是这样的:
你知道这个问题以及如何解决这个问题吗?
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 秒。谢谢你的帮助
c++ - 为什么 QMediaPlayer::setVideoOutput() 导致 QOpenGLWidget 不播放视频
环境
- 操作系统:Ubuntu 20.04LTS
- Qt 版本:5.12.8
目标
我的系统中有两个表单,第一个是QOpenGLWidget(override)来播放视频,第二个是带有一些QVideoWidget(override) -s 在录像机中播放视频。
问题
当第一个表单播放视频时,我显示了第二个表单。第一个表单无法显示视频。我发现这个代码QMediaPlayer::setVideoOutput(ui->videoWidget)
导致了问题。