如何在Tkinter框架中嵌入VLC实例

3

我想在一个tkinter框架中嵌入一个vlc实例。 已经有一个类似的代码,可以在tkinter窗口中显示终端, 但我想显示一个vlc。 这是我的vlc代码:

import vlc
Instance = vlc.Instance()
player = Instance.media_player_new()
Media = Instance.media_new('http://192.168.1.3:8080')
Media.add_option('network-caching=0')
player.set_media(Media)
player.play()

以下是简单的tkinter代码:

try:
    # Python2
     from Tkinter import *
except ImportError:
    # Python3
    from tkinter import *
root = Tk()
root.geometry("380x480")
root.resizable(width=False, height=False)

frame1 = LabelFrame(root, width=459, height=300, bd=5)
frame1.grid(row=1, column=0, padx=10)

我希望您能在这个tkinter框架中展示VLC流。
3个回答

1

VLC的代码库中有一个完整的关于Tkinter的example


1
抱歉,我之前看过这个例子。但我自己无法处理它。 - jan youga

1

我曾经遇到过同样的问题,通过使用set_xwindow设置我想要播放视频的窗口,问题得以解决:

player.set_xwindow(display.winfo_id())

另一个答案使用了 set_hwnd,但对我无效(只播放音频,同时显示“无帧”等错误)。当我将其替换为 set_xwindow 时,它开始工作并显示视频以及播放声音。

最终我使用了以下代码:

Instance = vlc.Instance()
player = Instance.media_player_new()
Media = Instance.media_new('example.mp4')
player.set_xwindow(display.winfo_id())
player.set_media(Media)
player.play()

而对于tkinter:

root = tk.Tk()

frame = tk.Frame(root, width=700, height=600)
frame.pack()

display = tk.Frame(frame, bd=5)
display.place(relwidth=1, relheight=1)

root.mainloop()

1

使用python-vlc和已安装的vlc播放器(我必须安装32位版本)

    self.Instance = vlc.Instance()
    self.player = self.Instance.media_player_new()
    self.player.set_hwnd(self.label.winfo_id())#tkinter label or frame

    media = self.Instance.media_new(f)
    self.player.set_media(media)
    self.player.play()
    sleep(1.5)

    duration = self.player.get_length() / 1000
    sleep(duration-1.5)
    self.player.stop()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接