gpt4 book ai didi

python - 右键单击 Windows,使用 VLC 和 PyGTK

转载 作者:可可西里 更新时间:2023-11-01 10:27:40 25 4
gpt4 key购买 nike

我正在将一个视频应用程序从 Linux 移植到 Windows,并且我使用 VLC 作为媒体后端。我遇到了一个小问题,我还没有找到解决方案:当我在视频图像上单击鼠标右键时,应用程序没有反应,而电影正在播放。就像 GTK 因为 VLC 而没有收到右键单击。这似乎是一个 vout 驱动程序问题,因为我用 MPlayer 进行了测试并且右键单击是有效的,直到我使用 direct3d 或 gl 作为视频驱动程序。这里的解决方案是什么?我在 Windows 7 上使用 VLC 和 VLC Python 绑定(bind)。

最佳答案

我遇到了类似的问题。您应该在 libvlc_video_set_key_inputlibvlc_video_set_mouse_input 函数中传递 False

工作代码示例:

instance = vlc.Instance()

class VLCWidget(gtk.DrawingArea):
def __init__(self, *p):
gtk.DrawingArea.__init__(self)
self.player = instance.media_player_new()
def handle_embed(*args):
self.player.set_hwnd(self.window.handle)
return True
self.connect("map", handle_embed)
self.set_size_request(320, 200)

class Player(gtk.Window):
def __init__(self):
gtk.Window.__init__(self)

vbox = gtk.VBox()
self._vlc_widget = VLCWidget()
self.player = self._vlc_widget.player
self.player.video_set_mouse_input(False)
self.player.video_set_key_input(False)
vbox.pack_start(self._vlc_widget, expand=True)
self._toolbar = self.get_player_control_toolbar()
self.pack_start(self._toolbar, expand=False)
self.add(vbox)

self._vlc_widget.set_events(
gtk.gdk.BUTTON_PRESS_MASK
)
self._vlc_widget.connect("button-press-event", self.on_vlc_button_press)

def on_vlc_button_press(self, widget, event):
print "pressed"

def get_player_control_toolbar(self):
tb = gtk.Toolbar()
tb.set_style(gtk.TOOLBAR_ICONS)
for tooltip, stock, callback in (
(_("Play"), gtk.STOCK_MEDIA_PLAY, lambda b: self.player.play()),
(_("Pause"), gtk.STOCK_MEDIA_PAUSE, lambda b: self.player.pause()),
(_("Stop"), gtk.STOCK_MEDIA_STOP, lambda b: self.player.stop()),
):
b=gtk.ToolButton(stock)
b.set_tooltip_text(tooltip)
b.connect("clicked", callback)
tb.insert(b, -1)
tb.show_all()
return tb

def main(self, fname):
self.show_all()
self.player.set_media(instance.media_new(fname))
self.connect("destroy", gtk.main_quit)
gtk.main()

if __name__ == '__main__':
p=Player()
p.main("path_to_file")

关于python - 右键单击 Windows,使用 VLC 和 PyGTK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9928166/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com