Closed anasshakil closed 3 years ago
Hi Anas Shakil, thanks for trying pygubu.
You can try python-vlc Here is a simple example with pygubu (tested only on linux OS)
Let me knows if this helps. Regards Alejandro A.
File: vlcclientapp.py
import os
import sys
import tkinter as tk
import tkinter.ttk as ttk
import pygubu
import vlc
PROJECT_PATH = os.path.dirname(__file__)
PROJECT_UI = os.path.join(PROJECT_PATH, "vlcclient.ui")
_isMacOS = sys.platform.startswith('darwin')
_isWindows = sys.platform.startswith('win')
_isLinux = sys.platform.startswith('linux')
class VlcclientApp:
def __init__(self):
self.builder = builder = pygubu.Builder()
builder.add_resource_path(PROJECT_PATH)
builder.add_from_file(PROJECT_UI)
self.mainwindow = builder.get_object('toplevel1')
builder.connect_callbacks(self)
self.videoframe = builder.get_object('videoframe')
# VLC player
self.is_playing = False
args = []
if _isLinux:
args.append('--no-xlib')
self.vlc_instance = vlc.Instance(args)
self.vlc_player = self.vlc_instance.media_player_new()
self.load_video()
s = ttk.Style()
s.configure('screen.TFrame', background='black')
def load_video(self):
VIDEO_FILE = '/home/alejandro/projects/videoplayer/video.mp4'
m = self.vlc_instance.media_new(VIDEO_FILE)
self.vlc_player.set_media(m)
# set the window id where to render VLC's video output
h = self.videoframe.winfo_id() # .winfo_visualid()?
if _isWindows:
self.vlc_player.set_hwnd(h)
elif _isLinux:
self.vlc_player.set_xwindow(h) # fails on Windows
else:
# FIXME: this should be made cross-platform
# For mac support see: https://git.videolan.org/?p=vlc/bindings/python.git;a=blob;f=examples/tkvlc.py;h=9984138afa37132ad1279e55d66eb7b705e21b98;hb=HEAD
pass
def on_play_clicked(self):
if not self.is_playing:
self.vlc_player.play()
self.is_playing = True
def on_stop_clicked(self):
if self.is_playing:
self.is_playing = False
self.vlc_player.pause()
def run(self):
self.mainwindow.mainloop()
if __name__ == '__main__':
app = VlcclientApp()
app.run()
File: vlcclient.ui
<?xml version='1.0' encoding='utf-8'?>
<interface version="1.1">
<object class="tk.Toplevel" id="toplevel1">
<property name="geometry">320x240</property>
<property name="height">200</property>
<property name="resizable">both</property>
<property name="title" translatable="yes">VLC-Player</property>
<property name="width">200</property>
<child>
<object class="ttk.Frame" id="frame1">
<property name="height">200</property>
<property name="padding">5</property>
<property name="width">200</property>
<layout manager="pack">
<property name="expand">true</property>
<property name="fill">both</property>
<property name="propagate">True</property>
<property name="side">top</property>
</layout>
<child>
<object class="ttk.Frame" id="videoframe">
<property name="height">200</property>
<property name="style">screen.TFrame</property>
<property name="width">200</property>
<layout manager="pack">
<property name="expand">true</property>
<property name="fill">both</property>
<property name="propagate">True</property>
<property name="side">top</property>
</layout>
</object>
</child>
<child>
<object class="ttk.Frame" id="buttons">
<property name="height">200</property>
<property name="width">200</property>
<layout manager="pack">
<property name="fill">x</property>
<property name="propagate">True</property>
<property name="side">top</property>
</layout>
<child>
<object class="ttk.Button" id="button1">
<property cbtype="simple" name="command" type="command">on_play_clicked</property>
<property name="text" translatable="yes">Play</property>
<layout manager="pack">
<property name="padx">0 5</property>
<property name="propagate">True</property>
<property name="side">left</property>
</layout>
</object>
</child>
<child>
<object class="ttk.Button" id="button2">
<property cbtype="simple" name="command" type="command">on_stop_clicked</property>
<property name="text" translatable="yes">Stop</property>
<layout manager="pack">
<property name="propagate">True</property>
<property name="side">left</property>
</layout>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</interface>
Thank you!
Hi i'm new to python. I want to play video from resources when i click on the button.