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:
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 solutionCode:
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