j'utilise le programme suivant pour transformer une série d'image en vidéo.
Je souhaiterais l'intéger dans un programme plus complet avec une interface avec un bouton pour lancer la création de la vidéo.
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 import sys, os, glob, Image, time import pymedia.video.vcodec as vcodec def files2Video(files, outFile='out.mpg', outCodec='mpeg1video'): s= Image.open(files[0]) if outCodec== 'mpeg1video': bitrate= 2700000 else: bitrate= 9800000 params= { 'type': 0, 'gop_size': 12, 'frame_rate_base': 1025, 'max_b_frames': 0, 'width': s.size[0], 'height': s.size[1], 'frame_rate': 2997, 'deinterlace': 0,'bitrate': bitrate, 'id': vcodec.getCodecID(outCodec) } e= vcodec.Encoder(params) fw= open(outFile, 'wb') print files os.system("pause") for ActPic in files: s= Image.open(ActPic) ss= s.tostring() bmpFrame= vcodec.VFrame(vcodec.formats.PIX_FMT_RGB24, s.size, (ss,None,None)) yuvFrame= bmpFrame.convert(vcodec.formats.PIX_FMT_YUV420P) d= e.encode(yuvFrame) fw.write(d.data) fw.close() if __name__== '__main__': files = glob.glob(r'.\test\*.jpg') #print files files.sort(key=lambda f:(os.stat(f).st_mtime, f)) files2Video(files, time.strftime('Cam1_%Y%m%d%H%M.mpg', time.localtime()))
J'ai testé ceci qui ne marche pas :
quelqu'un a-il une solution
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 from Tkinter import * import sys, os, glob, Image, time, os.path import pymedia.video.vcodec as vcodec root=Tk() root.geometry('650x300+100+150') bou1=Button(root, text ="creer la vidéo", command = lambda :test(4,5)) bou1.place(relx=0.20, rely=0.25, anchor=CENTER) def test(vitesse, dossier): files = glob.glob(r'.\test\*.jpg') files.sort(key=lambda f:(os.stat(f).st_mtime, f)) files2Video(files, time.strftime('Cam1_%Y%m%d%H%M.mpg', time.localtime())) def files2Video(files, outFile='out.mpg', outCodec='mpeg1video'): s= Image.open(files[0]) if outCodec== 'mpeg1video': bitrate= 2700000 else: bitrate= 9800000 params= { 'type': 0, 'gop_size': 12, 'frame_rate_base': 1025, 'max_b_frames': 0, 'width': s.size[0], 'height': s.size[1], 'frame_rate': 2997, 'deinterlace': 0,'bitrate': bitrate, 'id': vcodec.getCodecID(outCodec) } e= vcodec.Encoder(params) fw= open(outFile, 'wb') print files os.system("pause") for ActPic in files: s= Image.open(ActPic) ss= s.tostring() bmpFrame= vcodec.VFrame(vcodec.formats.PIX_FMT_RGB24, s.size, (ss,None,None)) yuvFrame= bmpFrame.convert(vcodec.formats.PIX_FMT_YUV420P) d= e.encode(yuvFrame) fw.write(d.data) fw.close() root.mainloop()
merci
Partager