Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[C++ Win32] extraire une image d'une video

12 réponses
Avatar
Albator
Bonjour,

Qlq un pourrait il m'aiguiller pour moi extraire une image d'une video (afin
de creer une imagette qui représente cette video)?

merci

10 réponses

1 2
Avatar
lo
"Albator" a écrit
Bonjour,

Qlq un pourrait il m'aiguiller pour moi extraire une image d'une video (afin
de creer une imagette qui représente cette video)?



Si t'as juste besoin d'un aiguillage, tu peux peut etre te procurer les
sources de virtualdub : c'est sans doute un bon point de depart pour voir
comment il gere les fichiers videos.

Loic. c'est juste une piste : j'ai jamais traité ce genre de probleme.
Avatar
patrox
Plusieurs solutions :
DirectChaud ( chaud comme son nom l'indique )
vfw ( un peu vieillot mais fonctionnel , regarde du coté de AVIFile
Functions dans le msdn )
quicktime ( tres bien et assez simple mais reclame une install
supplementaire CreateMovie, SetGWorld, MovieTask ( 3 instructions a peu de
chose pret et tres peu d'inits ) )

pat.

"lo" a écrit dans le message de
news:bodhlp$v6f$
"Albator" a écrit
> Bonjour,
>
> Qlq un pourrait il m'aiguiller pour moi extraire une image d'une video


(afin
> de creer une imagette qui représente cette video)?

Si t'as juste besoin d'un aiguillage, tu peux peut etre te procurer les
sources de virtualdub : c'est sans doute un bon point de depart pour voir
comment il gere les fichiers videos.

Loic. c'est juste une piste : j'ai jamais traité ce genre de probleme.




Avatar
Albator
Merci à tout les 2...

Pour DirectChaud ;) et quicktime je vais éviter car il me faudrait quelque
chose le plus léger possible. (surtout que je n'ai besoin de ca que pour
creer cette image et rien d'autre).

Je vais donc aller voir du coté de vfw en espérant y trouver mon bonheur ;-)


"patrox" wrote in message
news:3faa5178$0$10400$
Plusieurs solutions :
DirectChaud ( chaud comme son nom l'indique )
vfw ( un peu vieillot mais fonctionnel , regarde du coté de AVIFile
Functions dans le msdn )
quicktime ( tres bien et assez simple mais reclame une install
supplementaire CreateMovie, SetGWorld, MovieTask ( 3 instructions a peu de
chose pret et tres peu d'inits ) )

pat.

"lo" a écrit dans le message de
news:bodhlp$v6f$
> "Albator" a écrit
> > Bonjour,
> >
> > Qlq un pourrait il m'aiguiller pour moi extraire une image d'une video
(afin
> > de creer une imagette qui représente cette video)?
>
> Si t'as juste besoin d'un aiguillage, tu peux peut etre te procurer les
> sources de virtualdub : c'est sans doute un bon point de depart pour


voir
> comment il gere les fichiers videos.
>
> Loic. c'est juste une piste : j'ai jamais traité ce genre de probleme.
>
>




Avatar
Christian ASTOR
Albator wrote:

Qlq un pourrait il m'aiguiller pour moi extraire une image d'une video (afin
de creer une imagette qui représente cette video)?



AVIFileInit()-AVIStreamOpenFromFile()-AVIStreamGetFrameOpen()
AVIStreamGetFrame()
CreateFile()-WriteFile()(BITMAPFILEHEADER)-WriteFile()(LPBITMAPINFOHEADER)-CloseHandle()
AVIStreamGetFrameClose()-AVIFileExit()
Avatar
Albator
Merci pour cette info supplémentaire...Car je suis un peu perdu ;-)

"Christian ASTOR" wrote in message
news:3faaa6f6$0$6974$
Albator wrote:

> Qlq un pourrait il m'aiguiller pour moi extraire une image d'une video


(afin
> de creer une imagette qui représente cette video)?

AVIFileInit()-AVIStreamOpenFromFile()-AVIStreamGetFrameOpen()
AVIStreamGetFrame()



CreateFile()-WriteFile()(BITMAPFILEHEADER)-WriteFile()(LPBITMAPINFOHEADER)-C
loseHandle()
AVIStreamGetFrameClose()-AVIFileExit()



Avatar
Albator
Bonjour,

Pourriez vous me dire comment avoir le BITMAPFILEHEADER ?


Pour le LPBITMAPINFOHEADER j'ai fait ceci:
byte* DIB;
...
DIB = (byte*) AVIStreamGetFrame(getFrame, 1);
...
WriteFile(newBitmapFileH ,
((LPBITMAPINFOHEADER)DIB),sizeof(BITMAPFILEHEADER), &dwBytes, 0);

Mais je ne vois pas comment je dois faire pour récupérer le BITMAPFILEHEADER
.

merci
Avatar
Albator
Je me dis que je dois le contruire moi meme comme dans cet exemple :

fileheader.bfType = 0x4D42;
ColorSize = dwNumColors * sizeof(RGBQUAD);
fileheader.bfSize = ((dwWidth*dwHeight*dwBPP) >>
3)+ColorSize+sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER);
fileheader.bfReserved1 = fileheader.bfReserved2 = 0;
fileheader.bfOffBits ColorSize+sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER);


Si je me trompe merci de me corriger ;-) Je ne fais du C++ que depuis 2
semaines cela me change bien du java ^_^


"Albator" wrote in message
news:3fabc29b$0$251$
Bonjour,

Pourriez vous me dire comment avoir le BITMAPFILEHEADER ?


Pour le LPBITMAPINFOHEADER j'ai fait ceci:
byte* DIB;
...
DIB = (byte*) AVIStreamGetFrame(getFrame, 1);
...
WriteFile(newBitmapFileH ,
((LPBITMAPINFOHEADER)DIB),sizeof(BITMAPFILEHEADER), &dwBytes, 0);

Mais je ne vois pas comment je dois faire pour récupérer le


BITMAPFILEHEADER
.

merci




Avatar
Christian ASTOR
Albator wrote:

Je me dis que je dois le contruire moi meme comme dans cet exemple :

fileheader.bfType = 0x4D42;
ColorSize = dwNumColors * sizeof(RGBQUAD);
fileheader.bfSize = ((dwWidth*dwHeight*dwBPP) >>
3)+ColorSize+sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER);
fileheader.bfReserved1 = fileheader.bfReserved2 = 0;
fileheader.bfOffBits > ColorSize+sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER);


Si je me trompe merci de me corriger ;-) Je ne fais du C++ que depuis 2
semaines cela me change bien du java ^_^



Oui, mais pas sûr pour la formule du bfSize selon tes variables.
Pour le bfOffBits, c'est bon, considérant que ton ColorSize, qui doit
être la taille de la palette, est correct (à vérifier)
Comme tjrs, tout le code est ds MSDN ("WinCap32" => SaveDIB(),
PaletteSize(), etc...)
Avatar
Albator
Merci...

Me voilà de retour après ce long week-end :-) je me plonge de suite dans
MSDN ;-)

"Christian ASTOR" wrote in message
news:3facbfda$0$6978$
Albator wrote:

> Je me dis que je dois le contruire moi meme comme dans cet exemple :
>
> fileheader.bfType = 0x4D42;
> ColorSize = dwNumColors * sizeof(RGBQUAD);
> fileheader.bfSize = ((dwWidth*dwHeight*dwBPP) >>
> 3)+ColorSize+sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER);
> fileheader.bfReserved1 = fileheader.bfReserved2 = 0;
> fileheader.bfOffBits > > ColorSize+sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER);
>
>
> Si je me trompe merci de me corriger ;-) Je ne fais du C++ que depuis 2
> semaines cela me change bien du java ^_^

Oui, mais pas sûr pour la formule du bfSize selon tes variables.
Pour le bfOffBits, c'est bon, considérant que ton ColorSize, qui doit
être la taille de la palette, est correct (à vérifier)
Comme tjrs, tout le code est ds MSDN ("WinCap32" => SaveDIB(),
PaletteSize(), etc...)



Avatar
Albator
Bonjour,

je traine toujours se probleme d'extraction d'image...

En fait voilà j'écris bien le FileHeader et le BitmapHeader... mais je ne
sais pas comment récupéré les "Image Data" correcte.

Je fais le test avec une petite video .avi ... dans le Bitmap Header je vois
qu'il s'agit d'une image 8bit (donc il me faudrait la palette de couleur de
l'image...ce qui n'est pas le cas pour une image 24bits)... mais mon image
est toute noire car les info qui suive sont null...

Avez-vous une idée?

merci beaucoup!


"Christian ASTOR" wrote in message
news:3facbfda$0$6978$
Albator wrote:

> Je me dis que je dois le contruire moi meme comme dans cet exemple :
>
> fileheader.bfType = 0x4D42;
> ColorSize = dwNumColors * sizeof(RGBQUAD);
> fileheader.bfSize = ((dwWidth*dwHeight*dwBPP) >>
> 3)+ColorSize+sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER);
> fileheader.bfReserved1 = fileheader.bfReserved2 = 0;
> fileheader.bfOffBits > > ColorSize+sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER);
>
>
> Si je me trompe merci de me corriger ;-) Je ne fais du C++ que depuis 2
> semaines cela me change bien du java ^_^

Oui, mais pas sûr pour la formule du bfSize selon tes variables.
Pour le bfOffBits, c'est bon, considérant que ton ColorSize, qui doit
être la taille de la palette, est correct (à vérifier)
Comme tjrs, tout le code est ds MSDN ("WinCap32" => SaveDIB(),
PaletteSize(), etc...)



1 2