【问题标题】:how to embed a vlc instance in a tkinter frame如何在 tkinter 框架中嵌入 vlc 实例
【发布时间】:2017-12-27 10:39:14
【问题描述】:

我想在 tkinter 框架中嵌入一个 vlc 实例。 这里已经有一个similar code 在 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 流

【问题讨论】:

    标签: python tkinter vlc


    【解决方案1】:

    我遇到了同样的问题,并通过设置我希望使用 set_xwindow 播放视频的窗口来解决它:

    player.set_xwindow(display.winfo_id())
    

    此处的另一个答案使用 set_hwnd 对我不起作用(仅播放音频,同时给出相同的“无帧”错误等)。当我用 set_xwindow 交换它时,它开始工作并显示视频以及播放声音。

    对于 vlc,我最终得到:

    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()
    

    【讨论】:

      【解决方案2】:

      安装了 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()
      

      【讨论】:

        【解决方案3】:

        VLC 存储库有一个完整的 example 用于 Tkinter。

        【讨论】:

        • 对不起,我以前看过这个例子。但我无法自己处理
        猜你喜欢
        • 2017-02-16
        • 2015-11-29
        • 2014-03-15
        • 2013-08-05
        • 1970-01-01
        • 2012-04-08
        • 2014-12-04
        • 2018-11-07
        • 1970-01-01
        相关资源
        最近更新 更多