Установить размеры окна Vlc в vlc.py - PullRequest
0 голосов
/ 06 июня 2019

Я использую VLC в Python, чтобы открыть видеопоток (поток UDP). Как настроить размеры видеоокна и его положение на экране

Это код


import vlc
i = vlc.Instance() 
p = i.media_player_new() 
p.set_mrl('udp://@224.1.1.1:1234') 
p.play()

1 Ответ

0 голосов
/ 07 июня 2019

Короче говоря, я не думаю, что вы можете, если вы не предоставите ему window для игры, под вашим контролем.
Это включает в себя завертывание его в gui, многие люди используют Tkinter, wxPython или Qt для этого.Ниже приведены примеры, написанные для Linux.

Вот пример wxPython:

import vlc
import wx

class MyFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None, -1, "Video Frame WxPython", size=(500,400))
        self.panel = wx.Panel(self, id= -1, pos=(10,10), size=(470,300))
        self.play_button = wx.Button(self, -1, "Play", pos=(10,320))
        self.stop_button = wx.Button(self, -1, "Pause", pos=(100,320))
        self.Bind(wx.EVT_BUTTON, self.play, self.play_button)
        self.Bind(wx.EVT_BUTTON, self.stop, self.stop_button)
        self.panel.SetBackgroundColour(wx.BLACK)
        self.Show()

    def play(self,event):
        vlc_options = '--no-xlib --quiet'
        inst = vlc.Instance(vlc_options)
        self.player = inst.media_player_new()
        self.player.set_mrl('file:///home/rolf/BBB.ogv')
        xid = self.panel.GetHandle()
        self.player.set_xwindow(xid)
        self.player.play()

    def stop(self,event):
        try:
            self.player.pause()
        except:
            pass
app = wx.App()
frame = MyFrame()
app.MainLoop()

Это версия Tkinter (простите за все причуды, я сам не использую Tkinter):

import tkinter as tk
import vlc

class myframe(tk.Frame):
    def __init__(self, root, width=500, height=400, bd=5):
        super(myframe, self).__init__(root)
        self.grid()
        self.frame = tk.Frame(self, width=450, height=350, bd=5)
        self.frame.configure(bg="black")
        self.frame.grid(row=0, column=0, columnspan=2, padx=8)
        self.play_button = tk.Button(self, text = 'Play', command = self.play)
        self.play_button.grid(row=1, column=0, columnspan=1, padx=8)
        self.stop_button = tk.Button(self, text = 'Pause', command = self.pause)
        self.stop_button.grid(row=1, column=1, columnspan=1, padx=8)

    def play(self):
        i = vlc.Instance('--no-xlib --quiet')
        self.player = i.media_player_new()
        self.player.set_mrl('file:///home/rolf/BBB.ogv')
        xid = self.frame.winfo_id()
        self.player.set_xwindow(xid)
        self.player.play()

    def pause(self):
        try:
            self.player.pause()
        except:
            pass

if __name__ == '__main__':
    root = tk.Tk()
    root.title("Video Frame Tkinter")
    app = myframe(root)
    root.mainloop()

Thisкак они выглядят на экране: enter image description here

...