Page 1 sur 1
Comment CREER UNE VIDEO ?
Publié : lun. 05/nov./2007 19:00
par Fortix
Bonsoirs à TOUS,
Une QUESTION ME TAREAUDE
(au sens figurer allon allon)
Est il possible de créer une video (peu importe le format pour l'instant) à partir de plusieurs image sélectionnées?
Merci pour vos réponses

Publié : lun. 05/nov./2007 19:07
par venom
a tu veut parler d'un gif non ?
car une video c'est 24 images secondes minimum pour pas que l'oeuil voit de la sacade.
@++
Publié : lun. 05/nov./2007 19:09
par bernard13
oui avec windowmovie maker
mais ça sera un diaporama
Publié : lun. 05/nov./2007 19:18
par Buckethead
Je pense que tout est possible

il faudrait voir le format de la video, sans DLL ou autre j'opterais pour un format non compressé, pour débuter. Prévoir un codec si on fait son propre format, ou alors proposer un executable.
Publié : lun. 05/nov./2007 19:48
par nico
Publié : lun. 05/nov./2007 21:11
par Fortix
Ok c'est très sympa à vous, mais Nico as tu une mise à jour de ton code pour PB v4, car ton code m'interesse beaucoup

Publié : mar. 06/nov./2007 17:43
par nico
Non, mais faut juste debugger et modifier les lignes qui ne vont pas, il n'est pas très long le code.
Publié : ven. 30/nov./2007 13:18
par Fortix
Tu as certainement raison Nico mais le problème c'est qu'à la base je ne connais ni le principe, ni la méthode pour creer une vidéo pour pouvoir modifier il faut dabort comprendre pas vrai?
une explication du principe me va très bien sinon!!
merci Nico
Publié : ven. 30/nov./2007 17:15
par Backup
j'ai mis en V4.10 le code de Nico
http://www.purebasic.fr/french/viewtopi ... hlight=avi
Fortix a écrit :Tu as certainement raison Nico mais le problème c'est qu'à la base je ne connais ni le principe, ni la méthode pour creer une vidéo pour pouvoir modifier il faut dabort comprendre pas vrai?
juste pour montrer que meme sans "comprendre" le code, il suffit d'essayer !!
en l'occurence, il n'y avait que les fonction relative aux fichier, ou il fallait ajouter le numero de fichier pour rendre compatible avec la V 4.10

Publié : dim. 02/déc./2007 15:15
par Fortix
Tu as également raison Dobro, mais le but de ma précedante question était d'obtenir l'explication du principe de fonctionnement et de la création via la méthode PB même si la conversion du code PB V3 en V4 n'était éffectivement pas difficile, en claire je voulais obtenir 2 réponses avec une question

,..........
en parlant de question
est il possible de creer des vidéos avec des image *.bmp 24 BITS (ou plus si possible)??
car cela pourrait beaucoup m'arranger
merci à vous
Publié : dim. 02/déc./2007 16:03
par Backup
Fortix a écrit :
est il possible de creer des vidéos avec des image *.bmp 24 BITS
merci à vous
je supose que oui vu la strucutre dans le code
a savoir que pour mon PureGolo je me suis servi du Code de Nico pour faire des video a partir de Jpg ... , donc tout est possible ..

Publié : dim. 02/déc./2007 18:46
par Fortix
Merci pour tes interventions Dobro

Publié : mer. 19/déc./2007 11:11
par Fortix
Etant donné que je ne suis pas un fortish des Structures, j'aimerais savoir si il est possible d'attribuer un numéro d'image (exemple: de 0 à tant d'images) à la place du chemin complet de chaque images dans:
AddElement(bitmap())
bitmap()= Fichier
Code : Tout sélectionner
#streamtypeVIDEO = $73646976
#Lib = 0
Structure bitmap24
bmiHeader.BITMAPINFOHEADER
EndStructure
Structure AVISTREAMINFO
fccType.l
fccHandler.l
dwFlags.l
dwCaps.l
wPriority.w
wLanguage.w
dwScale.l
dwRate.l
dwStart.l
dwLength.l
dwInitialFrames.l
dwSuggestedBufferSize.l
dwQuality.l
dwSampleSize.l
rcFrame.RECT
dwEditCount.l
dwFormatChangeCount.l
szName.b[64]
EndStructure
Structure AVICOMPRESSOPTIONS
fccType.l
fccHandler.l
dwKeyFrameEvery.l
dwQuality.l
dwBytesPerSecond.l
dwFlags.l
*lpFormat.l
cbFormat.l
*lpParms.l
cbParms.l
dwInterleaveEvery.l
EndStructure
NewList bitmap.s()
NewList memoire.l()
Debug SizeOf(bitmap24)
Debug (SizeOf(BITMAPFILEHEADER))
Fichier.s = OpenFileRequester("Sélection multiple des Fichiers Bitmaps", "", "Fichiers BMP|*.bmp", 0, #PB_Requester_MultiSelection)
If Fichier
;Debug Fichier
AddElement(bitmap())
bitmap()= Fichier
Repeat
Fichier = NextSelectedFileName()
If Fichier
AddElement(bitmap())
bitmap()= Fichier
;Debug Fichier
EndIf
Until Fichier = ""
EndIf
ForEach bitmap()
If ReadFile(0, bitmap())
;Debug Lof(0)
CallDebugger
FileSeek(0,SizeOf(BITMAPFILEHEADER))
bmi.bitmap24
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
Next
If OpenLibrary ( #Lib , "AVIFIL32.DLL")
CallFunction ( #Lib, "AVIFileInit" )
avifile.s = SaveFileRequester ( "Nom du fichier Avi à enregistrer", "", "Video|*.avi", 0 )
If GetExtensionPart(avifile)=""
avifile=avifile+".avi"
EndIf
;Debug avifile
If CallFunction( #Lib, "AVIFileOpen", @pAVIFile.IAVIFILE, @avifile, (#OF_WRITE | #OF_CREATE), 0 )=0
strhdr.AVISTREAMINFO
strhdr\fccType = #streamtypeVIDEO
strhdr\fccHandler = 0
strhdr\dwScale = 1
strhdr\dwRate = 4
strhdr\dwSuggestedBufferSize = bmi\bmiHeader\biSize
If SetRect_(@strhdr\rcFrame, 0, 0, bmi\bmiHeader\biWidth, bmi\bmiHeader\biHeight) <>0
If CallFunction( #Lib, "AVIFileCreateStream", pAVIFile, @pAVIStream, @strhdr) =0
opts.AVICOMPRESSOPTIONS
Dim aopts(0)
aopts(0)=@opts
#ICMF_CHOOSE_KEYFRAME=1
#ICMF_CHOOSE_DATARATE=2
#AVIERR_OK=0
#AVIIF_KEYFRAME=$10
If CallFunction( #Lib, "AVISaveOptions", 0, #ICMF_CHOOSE_KEYFRAME | #ICMF_CHOOSE_DATARATE, 1, @pAVIStream, @aopts(0)) =1
If CallFunction( #Lib, "AVIMakeCompressedStream", @pAVICompressed, pAVIStream, aopts(0), 0)=#AVIERR_OK
If CallFunction( #Lib, "AVIStreamSetFormat", pAVICompressed, 0, @bmi, SizeOf(bitmap24)) =0
ForEach memoire()
If memoire()
If CallFunction( #Lib, "AVIStreamWrite", pAVICompressed, index, 1, memoire() , bmi\bmiHeader\biSizeImage, #AVIIF_KEYFRAME, 0,0) =0
index=index+1
EndIf
EndIf
Next
EndIf
CallFunction( #Lib, "AVIStreamRelease", pAVICompressed)
EndIf
EndIf
CallFunction( #Lib, "AVIStreamRelease", pAVIStream )
EndIf
EndIf
CallFunction( #Lib, "AVIFileRelease", pAVIFile)
EndIf
CallFunction( #Lib, "AVIFileExit" )
CloseLibrary( #Lib )
ForEach memoire()
GlobalFree_(memoire())
Next
MessageRequester("Info","Nombre de Frames enregistrées: "+Str(index))
EndIf
Merci
