簡體   English   中英

在GStreamer視頻上疊加其他GUI元素

[英]Overlay Other GUI Elements Over GStreamer Video

我有一個用Python,PyGTK 2.24和PyGST(GStreamer)構建的項目。 我的視頻在gtk.DrawingArea對象中運行良好。

但是,我需要在播放視頻時在該視頻上顯示其他GUI元素。 (請不要問為什么,請相信我。)現在,它們似乎都落后了。 在代碼中,聲明了視頻對象(和gtk.DrawingArea),並將其放入gtk.Fixed FIRST中,接着是其他所有內容。

那么,我該怎么做呢? 我是否需要更改正在播放GStreamer的對象? 我知道這是有可能的...我看過GStreamer程序,這些程序在視頻的頂部都有按鈕和標簽。

提前致謝!

可能對OP沒有用,但我花了很長時間尋找一種將小部件放置在gtk.gdk.Drawable元素(可以是靜態繪制的圖像,動畫或視頻)上方的方法。找出如何在pygtk2中執行此操作。

這是我想出的東西的鏈接: http : //bazaar.launchpad.net/~damien-moore/picty/trunk/view/642/modules/picty/overlay_widgets.py

這包括3個自定義類:

ProportionalLayout:自定義gtk.Container的實現,允許用戶使用比例來定位子窗口小部件。

DrawableOverlay:一個EventBox,它發出一個“繪制”事件供用戶連接並在其上進行繪制,並在頂部顯示一個ProportionalLayout。

DrawableOverlayHover:DrawableOverlayHover,它僅在指針與窗口小部件“接近”時才顯示窗口小部件。

樣品主要程序說明如何使用它們。 該代碼應相當簡單,以適應視頻應用程序。

您可以在GTK 3.2及更高版本中使用GtkOverlay進行此GtkOverlay

如果您不能升級,那么這里是老式方式的摘要:連接到DrawingAreaexpose-event信號,然后使用開羅在您自己DrawingArea繪制信息。 信息更改時,使用widget.queue_draw()觸發對繪圖區域的重繪。 確保您的處理程序在將實際視頻繪制到繪圖區域的處理程序之后運行。 這將適用於標簽和非交互式GUI元素。

如果您希望將實際起作用的GUI元素懸停在視頻上方,那會更加復雜,我不知道該怎么做。 我認為Fixed保證任何z順序。 我懷疑您的按鈕和其他內容會被繪制到繪圖區域上的視頻所覆蓋,因此可能會觸發您的expose-event處理程序中的按鈕重繪有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM