Comment CREER UNE VIDEO ?

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Fortix
Messages : 559
Inscription : mar. 30/mai/2006 17:03

Comment CREER UNE VIDEO ?

Message par Fortix »

Bonsoirs à TOUS, :D

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 :D
Avatar de l’utilisateur
venom
Messages : 3138
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Message 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.


@++
Dernière modification par venom le lun. 05/nov./2007 19:14, modifié 1 fois.
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
bernard13
Messages : 1221
Inscription : mer. 05/janv./2005 21:30

Message par bernard13 »

oui avec windowmovie maker
mais ça sera un diaporama
Buckethead
Messages : 122
Inscription : jeu. 27/sept./2007 20:25

Message 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.
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Avatar de l’utilisateur
Fortix
Messages : 559
Inscription : mar. 30/mai/2006 17:03

Message 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 :D
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Non, mais faut juste debugger et modifier les lignes qui ne vont pas, il n'est pas très long le code.
Avatar de l’utilisateur
Fortix
Messages : 559
Inscription : mar. 30/mai/2006 17:03

Message 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? :D

une explication du principe me va très bien sinon!!

merci Nico
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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? :D
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 :)
Avatar de l’utilisateur
Fortix
Messages : 559
Inscription : mar. 30/mai/2006 17:03

Message 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 :lol: ,..........

en parlant de question :wink:

est il possible de creer des vidéos avec des image *.bmp 24 BITS (ou plus si possible)??
car cela pourrait beaucoup m'arranger :lol:

merci à vous
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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

Code : Tout sélectionner

Structure bitmap24
  bmiHeader.BITMAPINFOHEADER
EndStructure 
:)

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 .. :)
Avatar de l’utilisateur
Fortix
Messages : 559
Inscription : mar. 30/mai/2006 17:03

Message par Fortix »

Merci pour tes interventions Dobro :D
Avatar de l’utilisateur
Fortix
Messages : 559
Inscription : mar. 30/mai/2006 17:03

Message 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 :D
Répondre