0

我正在尝试使用 VLC 播放视频,并在视频播放完毕后关闭窗口。但是,我无法关闭播放器窗口。我尝试发布播放器和媒体的实例,但它不起作用。而且我在 API 文档中找不到其他任何内容。

请注意,我不想在播放器完成后终止整个应用程序,因此sys.exit不是一个选项。

以下代码是我正在做的。

import vlc

VIDEO_PATH="/path/to/video.mp4"

def get_end_callback(mediaplayer):
    def end_callback(event):
        print("End of playing reached")
        mediaplayer.stop()
        mediaplayer.get_media().release()
        mediaplayer.release()
        mediaplayer.get_instance().release()
    return end_callback

def play():
    vlc_instance = vlc.Instance(["--no-xlib"])
    media_player = vlc.MediaPlayer(vlc_instance, VIDEO_PATH)

    media_player.play()

    event_manager = media_player.event_manager()
    event_manager.event_attach(vlc.EventType.MediaPlayerEndReached, get_end_callback(media_player))

play()

input("press Enter to exit")

我正在用python=3.9, python-vlc=3.0.12118, vlc=3.0.9.2, on对其进行测试Ubuntu=20.04。我还尝试了另一台具有较旧操作系统和较旧 VLC 的机器。

4

1 回答 1

0

因此,如果您不提供,LibVLC 将生成一个窗口供您绘制。您不希望这样,因为您将无法轻松管理它。

在调用 之前media_player.play(),您想使用窗口句柄调用media_player.set_hwnd(window.handle)(for Windows) / (for Linux)。media_player.set_xwindow(window.xid)

创建、管理和删除此窗口由您决定,它不必是您应用程序的主窗口。

在这里,您可以找到更多完整但最少的 Qt 和 GTK 框架示例https://github.com/oaubert/python-vlc/tree/master/examples

于 2021-11-17T06:54:54.107 回答