Bonjour à tous,
J'ai écrit un bout de code permettant d'inclure MPlayer dans une fenêtre GTK.
Le voici:
Celui-ci fonctionne correctement grâce aux GtkSocket et au mode "slave" de mplayer.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 import pygtk pygtk.require('2.0') import gtk import os PATH_mkfifo = '/tmp/mplayer' class MPlayer(gtk.Socket): def __init__(self, id): gtk.Socket.__init__(self) self.tube = PATH_mkfifo + str(id) try: os.unlink(self.tube) except: pass os.mkfifo(self.tube) os.chmod(self.tube, 0666) def execmplayer(self, cmd): i = open(self.tube,'w') i.write(cmd+"\n") i.flush() def playfile(self, wid): os.system("mplayer -slave -really-quiet -vo x11 -wid %s -idle -input file=%s &"%(wid, self.tube)) def loadfile(self, filename): self.execmplayer("loadfile %s"%(filename)) def quit(self): self.execmplayer("quit") window = gtk.Window() vbox = gtk.VBox() da = gtk.DrawingArea() #da.set_size_request(200,100) vbox.pack_start(da, True, True, 0) window.add(vbox) window.connect("destroy", gtk.main_quit) window.show_all() print da.window.xid stream = MPlayer(da.window.xid) stream.playfile(da.window.xid) stream.loadfile("/home/alex/Downloads/HeBeDragons.m4v") gtk.main()
Bref mon problème concerne plutôt GTK je pense.
En effet quand je lance mon programme, le fichier vidéo se lit sans soucis. Le problème est que si la fenêtre est plus petite que ma vidéo celle-ci est coupée, et quand je maximise la fenêtre, ma vidéo est centrée à l'intérieur de celle-ci mais en aucun cas re-dimensionée à la taille entière de ma fenêtre.
J'ai trouvé un petit bout de code faisant à peu prés la même chose que moi et qui a le comportement que je cherche. Celui-ci est ici: http://www.dinointeractive.com/?p=36
La personne qui a écrit ce bout de code à utilisé Glade, ce que je ne souhaite pas faire. Ayant parcouru tout son fichier python, je ne comprends toujours pas comment il fait, j'imagine donc que cela est géré par Glade.
J'aimerais donc savoir comment dois-je faire pour que ma vidéo colle à la taille de ma fenêtre dans mon code.
Toute aide est la bienvenue.
Merci d'avance.
Partager