【问题标题】:How to display a video behind other components?如何在其他组件后面显示视频?
【发布时间】:2018-01-29 14:49:35
【问题描述】:

我正在使用 FMX 在 Delphi 10.2 Tokyo 中创建软件。我想使用TMediaPlayerControl 在所有组件后面显示一个视频。我将TMediaPlayerControl 发送到后面并播放视频,但视频不在组件后面播放,而是在它们之上播放。

我在客户区放了一个TMemo,在它后面放了一个TMediaPlayerControl。它应该做的是播放TMemo后面的视频,但它会在TMemo之上播放。

如何在TMemo后面的后台播放视频?

【问题讨论】:

  • 我不清楚。也许你可以提供一个minimal reproducible example
  • 最有可能的是,媒体播放器正在使用将视频输出直接渲染到屏幕而不是窗口的技术。这可以解释为什么它出现在一切之上。
  • 我在后台看到了 TMediaPlayerControl 的使用,然后是 TEdit 和 TButton 以及 TPanel。我不记得了,但我在应用程序中看到了用途。
  • @Abhishek 你确定是TMediaPlayerControl,还是一般的视频?它有所作为
  • 大多数操作系统(可能是所有操作系统)的 TMediaPlayerControl 实现,使用本机控件来显示视频,并且没有 Z 顺序管理,因此它们将出现在最重要的是。为什么要在实际视频上显示备忘录,我无法理解,因为它会使图片变得模糊;我会把它放在一边。

标签: delphi firemonkey delphi-10.2-tokyo


【解决方案1】:

我正在使用包装类和组件 http://prog.olsztyn.pl/paslibvlc 确实很简单

在 FMX Delphi 10.4.2 中检查 - 工作正常(libVLC 3.014 - 最新)

【讨论】:

    【解决方案2】:

    您可以使用 libvlc 直接呈现为表单或任何您想要的。 调用 libvlc_media_player_set_display_window() 以设置媒体播放器应在其中呈现其视频输出的窗口句柄。 因此,您可以在所有组件后面的背景中显示视频。

    【讨论】:

      【解决方案3】:

      如果您想这样做,您将需要一个可以直接在 openGL 表面上渲染的视频播放器(即实际上在 delphi 表单上渲染)。据我所知,他们是唯一一个可以做到这一点的视频播放器,它是在 alcinoe (https://sourceforge.net/projects/alcinoe/) 中实现的TalVideoPlayer。当前的实现仅适用于 ios / android,但 windows 实现接缝非常简单,macos 版本非常简单,因为它使用与 ios 相同的 api

      【讨论】:

      • 在这篇文章发布后的三年里,是否有一个直接呈现为 Delphi 表单的 Windows 就绪视频播放器可用?我的用例是为动画添加图层。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-10
      • 1970-01-01
      • 1970-01-01
      • 2014-11-25
      • 2013-11-27
      相关资源
      最近更新 更多