Récupérer une image d'une video

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
lepiaf31
Messages : 510
Inscription : dim. 25/mars/2007 13:44
Localisation : Toulouse, France
Contact :

Récupérer une image d'une video

Message par lepiaf31 »

Bonjour à tous ! :)

Je cherche un moyen pour "extraire" une image d'une video. J'ai essayé de lire la video sur un sprite à l'aide de la fonction RenderMovieFrame() puis d'enregistrer le sprite grâce à SaveSprite() mais la fonction RenderMovieFrame() n'a pas l'air de fonctionner avec les videos au format DivX.
Si quelqu'un saurait comment faire, je serais ravi :p

Merci


EDIT: Bon j'ai trouvé un ptit code sympa sur purearea:
http://www.purearea.net/pb/CodeArchiv/M ... nverter.pb

EDIT2: probleme: lecode que j'ai trouvé ne marche que pour les videos de type avi et je voudrais que cela soit compatible qvec d'autres formats
beauregard
Messages : 1307
Inscription : dim. 08/juil./2007 18:32
Localisation : Toulouse

Re: Récupérer une image d'une video

Message par beauregard »

lepiaf31 a écrit :EDIT2: probleme: lecode que j'ai trouvé ne marche que pour les videos de type avi et je voudrais que cela soit compatible qvec d'autres formats
bonjour, Free video converter est un logiciel gratuit de convertion.
config de mon ordi: seven, directx11, Pentium(R) DualCore E5700, RadeonHD 4550 512MB, PureBasic 4.61 x86
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message par Ollivier »

Voici un code récupéré ici.

Code : Tout sélectionner

Structure PB_StructureMovie
  Movie.IGraphBuilder
  MediaControl.IMediaControl
  MediaEvent.IMediaEventEx
  Window.IVideoWindow
  Audio.IBasicAudio
  Video.IBasicVideo
  MediaSeeking.IMediaSeeking
  state.l
EndStructure

Procedure.l CaptureFrame(MovieNumber, ImageNumber)
  Protected *Movie.PB_StructureMovie, *Video.IBasicVideo, *Window.IVideoWindow
  Protected *ImageData.BITMAPINFOHEADER, DataSize, Parent, Result
 
  *Movie  = IsMovie(MovieNumber) 
  *Movie  + MovieNumber * SizeOf(PB_StructureMovie)
  *Window = *Movie\Window
  *Video  = *Movie\Video
 
  Result  = 0
 
  If *Video\GetCurrentImage(@DataSize, 0) = #S_OK
   
    *ImageData = AllocateMemory(DataSize)
    If *ImageData
     
      If *Video\GetCurrentImage(@DataSize, *ImageData) = #S_OK
       
        If IsImage( ImageNumber )
          hBmp  = ImageID( ImageNumber )
         
          w = ImageWidth(ImageNumber)
          h = ImageHeight(ImageNumber)
         
          bmi.BITMAPINFO
          bmi\bmiHeader\biSize   = SizeOf(BITMAPINFOHEADER)
          bmi\bmiHeader\biWidth  = w
          bmi\bmiHeader\biHeight = h
          bmi\bmiHeader\biPlanes = 1
         
          bmi\bmiHeader\biBitCount = ImageDepth(ImageNumber)
          bmi\bmiHeader\biBitCount = 32
          bmi\bmiHeader\biCompression = #BI_RGB
         
          hdc = StartDrawing(ImageOutput(ImageNumber))
          If hdc
            SetDIBits_( hdc, hBmp, 0, h, *ImageData, @bmi, #DIB_RGB_COLORS)
            StopDrawing()
          EndIf
        EndIf
      EndIf
     
      FreeMemory(*ImageData)
    EndIf
   
  EndIf   
 
  *Window\get_Owner(@Parent)
  RedrawWindow_(Parent,0,0,#RDW_INVALIDATE)
  ProcedureReturn Result
EndProcedure 
Répondre