PR EXPERT: CAPTURE DATAPIXEL D UN FRAME D UN AVI [EN MEMOIRE]
Freneticode
Messages postés11Date d'inscriptionmardi 16 avril 2002StatutMembreDernière intervention11 juillet 2002
-
14 mai 2002 à 11:53
fredlynx
Messages postés662Date d'inscriptionmercredi 16 janvier 2002StatutModérateurDernière intervention16 octobre 2010
-
15 mai 2002 à 08:11
---> FrenetiCode
Voici mon Code..!!
Private Sub cmd_open_Click()
Dim FILE As cFileDlg
Dim NAME_FILE As String
Dim AVI As Long
Dim STREAM As Long
Dim AVI_INFO As AVI_FILE_INFO
Dim STREAM_INFO As AVI_STREAM_INFO
Dim DATA_IMAGE() As Long
Dim i
Set FILE = New cFileDlg
'get an avi filename from user
With FILE
.DefaultExt = "avi"
.DlgTitle = "Choose a filename to save AVI to..."
.Filter = "AVI Files|*.avi"
.OwnerHwnd = Me.hwnd
End With
If FILE.VBGetOpenFileName(NAME_FILE) <> True Then Exit Sub
Dim NB_FRAME As Long
'// Initialisation du sous-système AVI
' AVIFileInit()
'// Ouverture du fichier utilisateur en mode lecture seule et en mode partage
i = AVIFileOpen(AVI, NAME_FILE, OF_READ, 0&)
'// Récupération des informations sur le copyright, stream name, etc.
i = AVIFileInfo(AVI, AVI_INFO, Len(AVI_INFO))
'// Trouver le premier flux video (obligatoire)
i = AVIFileGetStream(AVI, STREAM, OF_READ, 0)
'// Récupére les information sur le stream
i = AVIStreamInfo(STREAM, STREAM_INFO, Len(STREAM_INFO))
'// Lecture du format d'un bloc sur la sortie video
'// a verifier !!!!!!!!!!!
i = AVIStreamReadFormat(STREAM, 0, STREAM_INFO.dwSampleSize, STREAM_INFO.dwLength)
' // Combien de frames contient le flux video ?
NB_FRAME = AVIStreamLength(STREAM)
'// Maintenant faire une boucle sur la lecture du flux videopour lire l'ensemble des
'// frame le plus rapidement possible. Les frames video sont décompressées par la
'// fonction AVIStreamRead() en DIBs (dans le buffer szBuffering) ainsi nous n'avons
' // pas à nous pr\eoccuper de la décompression.
ReDim DATA_IMAGE(1 To AVI_INFO.dwWidth * AVI_INFO.dwHeight * 3) As Long
Dim a
For a = 0 To STREAM_INFO.dwLength
i = AVIStreamRead(STREAM, a, 1, &O0, STREAM_INFO.dwSuggestedBufferSize, DATA_IMAGE(1), &O0)
Next
' // Libération des ressources du flux video
i = AVIStreamRelease(STREAM)
i = AVIFileRelease(AVI)
'i = AVIFileExit()
'MsgBox VarPtr(DATA_IMAGE(1))
'MsgBox NB_FRAME
Dim bi24BitInfo As BITMAPINFO
With bi24BitInfo.bmiHeader
.biBitCount = 24
.biCompression = BI_RGB
.biPlanes = 1
.biSize = Len(bi24BitInfo.bmiHeader)
.biWidth = AVI_INFO.dwWidth
.biHeight = AVI_INFO.dwHeight
End With
SetDIBitsToDevice Picture1.hdc, 0, 0, AVI_INFO.dwWidth, AVI_INFO.dwHeight, 0, 0, 0, AVI_INFO.dwHeight, DATA_IMAGE(1), bi24BitInfo, DIB_RGB_COLORS
End Sub
HISTORY:
JE VEUX RECUPERER CHAQUE PIXEL DE CHAQUE FRAME D UN AVI POUR AINCI DEFORMER CHAQUE FRAME PUIS RECREER UN AVI DEFORMER.
MON SYSTEME DE DEFORMATION FUNCTIONNE , J ARRIVE CREE MON AVI DEFORMER ;-)....
LE BLEME EST QUE JE LE FAIT EN AFFICHAGE ET PAS EN MEMEOIRE...API GET ET SET PIXEL :-<
BUhh
ALORS VOICI UN DE MES CODE DE TEST POUR RECUPER LES DATAPIXEL D UN FRAME D UN AVI EN MEMOIRE. LE BLEME ET QUE LORSQUE QUE J AFFICHE LE DIB MEMOIRE IL AFFICHE UN CARRER NOIR!!!!!
MAIS OU SONT PASSEE MES DONNEE PIXEL
bouh
EXPERT A L AIDE!!!!!!!!!!
C EST UN PROJET DE DIPLOME CFC!!![Switzerland/FR]
SANS REPONCE CONCLUANTE D ICI A VENDREDI JE DEVRAIS REINITIALISER MON PROJET, VOIR MEME L'ABANDONNER.... !!!!DIPLOME EXPLOSE!!!NON!!ENFIN J ESPERE PAS!!! SOUS STRESSE ON NE SAIT PAS SE QUE N'ES CAPABLE :-)....
fredlynx
Messages postés662Date d'inscriptionmercredi 16 janvier 2002StatutModérateurDernière intervention16 octobre 20103 14 mai 2002 à 13:17
j'savais bien que j'avais trouvé un jour un térible tutorial sur les AVi :) Enfin je pense que tu peux trouver ton Bonheur...
http://www.shrinkwrapvb.com/avihelp/avihelp.htm Ya tout bmp to avi avi to bmp etc etc ...
Bon courage lol