Bonjour,
Je cherche à écrire un programme avec une interface afin d'incruster des sous-titres dans une vidéo.
J'ai réaliser une bonne partie du programme, mais je bloque sur un point, surement bête car il s'agit de variable non définie, vous saurez surement me dire d'ou viens le problème.
Il s'agit d'un programme avec 4 boutons : on sélectionne un fichier master, sont contenu rentre dans la variable master, on sélectionne un fichier sous-titre, son contenu rentre dans la variable fichier_srt, et on clique sur encode, qui envois des commandes à ffmpeg.
Le dernier bouton est pour cliquer.
Voici la sortie de la fenetre dos :
La dernière ligne me dit que master ne contient rien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 fichier master : C:/Users/Public/Videos/Sample Videos/Wildlife.wmv fichier srt = C:/Users/Yoann/Desktop/srt/fichier.SRT nom du fichier sans l'extension : C:/Users/Yoann/Desktop/srt/fichier lancement ffmpeg Exception in Tkinter callback Traceback (most recent call last): File "C:\Python34\lib\tkinter\__init__.py", line 1482, in __call__ return self.func(*args) File "C:\Users\Yoann\Desktop\script\test5.py", line 28, in encodage print ("fichier master : ", master) NameError: name 'master' is not defined
Mais il contient normalement "C:/Users/Public/Videos/Sample Videos/Wildlife.wmv", comme on le voit plus haut.
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
47
48
49
50 # importation bibliotheque graphique Tkinter et explorateur windows from tkinter import * from tkinter.filedialog import askopenfilename import os # --- définition des fonctions gestionnaires d'événements : --- def openmaster(): "Explorateur pour fichier master" master = askopenfilename() print ("fichier master : ", master) def opensrt(): "explorateur pour fichier srt" fichier_srt = askopenfilename(filetypes = [("srt","*.srt")]) print ("fichier srt = ", fichier_srt) nom_du_fichier = os.path.splitext(fichier_srt)[0] print ("nom du fichier sans l'extension : ", nom_du_fichier) def encodage(): # fichier_ "lancement ffmpeg" print("lancement ffmpeg") # path to ffmpeg bin FFMPEG_PATH = 'C:\ffmpeg-20160227-git-5156578-win64-shared\bin' print ("fichier master : ", master) command = [ FFMPEG_PATH, '-i', master, '-vf subtitles=', fichier_srt, 'test.mp4', ] print ("commande = ", command) os.system("ping 127.0.0.1") #os.system(cmd) exécute cmd #------ Programme principal ------- # Création du widget principal ("maître") : fen1 = Tk() # création des boutons : bou1 = Button(fen1,text='Quitter',command=fen1.quit) bou1.pack(side=BOTTOM) bou2 = Button(fen1,text='fichier master',command=openmaster) bou2.pack() bou3 = Button(fen1,text='fichier srt',command=opensrt) bou3.pack() bou4 = Button(fen1,text='encoder',command=encodage) bou4.pack() fen1.mainloop() # démarrage du réceptionnaire d'événements fen1.destroy() # destruction (fermeture) de la fenêtre
Savez-vous pourquoi j'ai name 'master' is not defined ? Et comment utiliser dans la section def encodage() le contenu de la variable master définie dans def openmaster() ? Merci.
Partager