我正在尝试使用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")我正在用Ubuntu=20.04上的python=3.9,python-vlc=3.0.12118,vlc=3.0.9.2测试它。我还尝试了另一台安装了较旧操作系统和较旧VLC的计算机。
发布于 2021-11-17 06:54:54
因此,如果您不提供一个窗口,LibVLC将在其上生成一个可供绘制的窗口。你不会想要这样的,因为你不能很容易地管理它。
在调用media_player.play()之前,您需要使用窗口句柄调用media_player.set_hwnd(window.handle) (适用于Windows) / media_player.set_xwindow(window.xid) (适用于Linux)。
创建、管理和删除此窗口由您决定,它不一定是您的应用程序的主窗口。
在这里,您可以找到更完整但更简单的Qt和GTK框架https://github.com/oaubert/python-vlc/tree/master/examples示例
https://stackoverflow.com/questions/69998754
复制相似问题