Page 2 sur 2
Re: Vidéo via images!!!!
Publié : dim. 21/nov./2010 13:08
par G-Rom
y a plus simple quand même ( et portable au passage

) avec ffmpeg.
Linux :
Code : Tout sélectionner
InitSprite() : InitKeyboard()
FFMPEG_PROGRAM$ = "ffmpeg"
CreateDirectory("./Cache")
DeleteFile("./Cache/video_output.mpg")
wnd = OpenWindow(#PB_Any,0,0,640,480,"Please wait...")
OpenWindowedScreen(WindowID(wnd),0,0,640,480,1,0,0)
UsePNGImageEncoder()
Repeat
WindowEvent()
ClearScreen(0)
x = 320 + 100 * Cos(ElapsedMilliseconds()/1000)
y = 240 + 50 * Sin(ElapsedMilliseconds()/500)
col = 128 + 127 * Cos(ElapsedMilliseconds()/10)
StartDrawing(ScreenOutput())
Circle(x-10,y-10,10,RGB(col/4,col/2,col))
DrawText(10,10,"Created with purebasic !")
StopDrawing()
FlipBuffers()
Sprite = GrabSprite(#PB_Any,0,0,640,480)
SaveSprite(Sprite,"./Cache/Image_"+Str(Frame)+".png",#PB_ImagePlugin_PNG)
Frame + 1
Until Frame = 400
program = RunProgram(FFMPEG_PROGRAM$,"-f image2 -i Image_%d.png video_output.mpg","./Cache",#PB_Program_Wait)
For i = 0 To 399
DeleteFile("./Cache/Image_"+Str(i)+".png")
Next
CopyFile("./Cache/video_output.mpg","./video_output.mpg")
DeleteFile("./Cache/video_output.mpg")
Pour ceux qui sont sous windows , modifier la ligne 3 ( il faut ffmpeg )
Re: Vidéo via images!!!!
Publié : dim. 21/nov./2010 17:02
par Backup
G-Rom a écrit :y a plus simple quand même ( et portable au passage

) avec ffmpeg.
certes , nous avions fait un sujet la dessus, il y a pas mal de temps
http://www.purebasic.fr/french/viewtopi ... +converter
c'est tres bien, mais oblige a avoir une Dll externe
et qu'en est t'il des droits d'utilisation en usage commercial ?

Re: Vidéo via images!!!!
Publié : dim. 21/nov./2010 17:27
par G-Rom
qu'en est t'il des droits d'utilisation en usage commercial ?
http://fr.wikipedia.org/wiki/Licence_pu ... C3%A9e_GNU
c'est tres bien, mais oblige a avoir une Dll externe
ffmpeg.exe sous windows ca existe a mon avis ?
ca te permet d'avoir un code relativement leger , et surtout tu as plus d'options d'encodage ( suffit de lire la doc de ffmpeg )
et en plus portable , pas besoin d'apprendre une api particulière.
Re: Vidéo via images!!!!
Publié : dim. 21/nov./2010 18:27
par Backup
G-Rom a écrit :
ffmpeg.exe sous windows ca existe a mon avis ?
ca te permet d'avoir un code relativement leger , et surtout tu as plus d'options d'encodage ( suffit de lire la doc de ffmpeg )
et en plus portable , pas besoin d'apprendre une api particulière.
j'ajoute que j'ai programmé "PureConverter" basé sur cette Dll
je connais tres bien
mais il me semblait qu'il y avait des restrictions d'utilisations ...(licence)
je vais allez lire le lien que tu donne....
quoiqu'il en soit la routine de Nico (que j'ai posté)
ne représente rien de plus qu'une procédure , bien sur l'appel au API gene l'utilisateur Linux
mais répond tres tres bien a la question posé dans ce topic

Re: Vidéo via images!!!!
Publié : dim. 21/nov./2010 18:36
par Fortix
j'y suis depuis 2004, suis-je un ancien @Nico?
je plaisante
Effectivement, le code de @Nico semble être "une mecanique bien huilée"
je bricole là-dessus actuellement car avant la phase de "création vidéo" je dois faire passé
chaques images par un filtre de "Redimentionnement" et là sa coince
Code : Tout sélectionner
Procedure Add_bmp_avi(bmp.s)
If ReadFile(0, bmp)
FileSeek(0,SizeOf(BITMAPFILEHEADER))
ReadData(0,@bmi, SizeOf(bitmap24))
If bmi\bmiHeader\biWidth
If bmi\bmiHeader\biHeight
If bmi\bmiHeader\biBitCount=24
If bmi\bmiHeader\biSizeImage=0
bmi\bmiHeader\biSizeImage=Lof(0)-54
EndIf
FileSeek(0,54)
AddElement(memoire())
memoire() =GlobalAlloc_(#GMEM_FIXED|#GMEM_ZEROINIT, bmi\bmiHeader\biSizeImage)
ReadData(0,memoire(), bmi\bmiHeader\biSizeImage)
EndIf
EndIf
EndIf
CloseFile(0)
EndIf
EndProcedure
la parti "ReadFile","Fileseek","ReadData" me posent problème étant donné que je dois me servir des "ImageId()"
Code : Tout sélectionner
...........
If ReadFile(0, bmp)
FileSeek(0,SizeOf(BITMAPFILEHEADER))
ReadData(0,@bmi, SizeOf(bitmap24))
................
j'y travails en ce moment

Re: Vidéo via images!!!!
Publié : dim. 21/nov./2010 23:25
par Backup
Fortix a écrit :
la parti "ReadFile","Fileseek","ReadData" me posent problème étant donné que je dois me servir des "ImageId()"
les id se trouvent dans memoire() ... donc tu redimenssione avant la partie qui ecrit !!
et puis qu'est ce qui t'empeche de redimentionner tes images avant l'encodage video ?

Re: Vidéo via images!!!!
Publié : lun. 22/nov./2010 12:25
par Fortix
En fait il n'y a pas que le redimentionnement, mais aussi un filtre qui modifit les couleurs (grossomodo) de chaques images
en réalité, mon projet a pour but final:
1)Chargement d'une vidéo
2)découpage image par image
(étape manquante!)
3)modifications image par image par filtre
(en cours...)
4)reconstitution de la vidéo ainsi modifié
(en cours...)
projet ambitieux non?
