|
Capturer image video |
|
Utilisateur WDF
Inscrit: 22/02/2005 21:13
Post(s): 59
|
Bonjour,
je cherche le moyen de d'enregistrer l'image d'une video en pause lue dans un chap image et gérée avec les fonctions MCI.
J'ai essayé :
dcopieImage dans un autre champ image -> image retournée transparente.
dSauveImageJPG -> même probleme : image transparente
Contribution le : 23/02/2005 08:23
|
|
|
Re: Capturer image video |
|
Anonyme
|
up
Contribution le : 24/02/2005 09:22
|
|
|
Re: Capturer image video |
|
Inscrit: 19/11/2002 12:20
Post(s): 390
|
Tu risques d'avoir du mal, en général c'est directshow (un truc comme ça) qui est utilisé, ce qui fait qu'en faisant une capture d'écran, tu n'as qu'un fond noir (overlay).
Il faudrait désactiver l'utilisation de directshow, en tous cas temporairement...
Contribution le : 24/02/2005 10:10
|
|
|
Re: Capturer image video |
|
Utilisateur WDF
Inscrit: 22/02/2005 21:13
Post(s): 59
|
Oula... Pourquoi je sens que ça va pas être facile ?
Contribution le : 24/02/2005 10:47
|
|
|
Re: Capturer image video |
|
Utilisateur WDF
Inscrit: 22/02/2005 21:13
Post(s): 59
|
Après plusieurs essais, je suis toujours bloqué sur ça... J'ai récupéré l'exemple de windev 7 du lecteur video qui était censé pouvoir faire une capture mais même lui ne marche pas... au secours
Contribution le : 02/03/2005 20:08
|
|
|
Re: Capturer image video |
|
Inscrit: 19/11/2002 12:20
Post(s): 390
|
Il faut que tu désactives l'accélération matérielle pour l'affichage des vidéos si tu utilises Windows Media Player: Menu: Outils -> Options -> Performances Bouton "Options avancées"
J'ai fait l'essai en désactivant toutes les accélérations matérielles et en décochant toutes les options, j'ai pu faire une capture d'écran de la vidéo...
Après, reste à voir comment faire la désactivation en automatique, vu que Camtasia Studio 2 sait le faire, ça doit être possible...
Contribution le : 02/03/2005 21:01
|
|
|
Re: Capturer image video |
|
Utilisateur WDF
Inscrit: 22/02/2005 21:13
Post(s): 59
|
Merci pour l'info. Je trouve bizarre que personne n'est essayé de le faire (et donc qui aurait trouvé une solution ^^!) Je vais continuer de chercher dans cette voie. Si quelqu'un a une solution, qu'il ne se gène pas pour la mettre
Contribution le : 02/03/2005 21:41
|
|
|
Re: Capturer image video |
|
Inscrit: 19/11/2002 12:20
Post(s): 390
|
Google power...
Contribution le : 02/03/2005 21:48
|
|
|
Re: Capturer image video |
|
Inscrit: 19/11/2002 12:20
Post(s): 390
|
Apparemment voici comment faire, il faut chercher dans la base de registre: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectDraw
Là il faut, pour désactiver Directdraw, créer la clef (si elle n'existe pas): EmulationOnly
Avec pour valeur: 1
Et directdraw sera désactivé et tu pourras capturer les images de Windows Media Player par simple copie d'écran (exemple)...
Pour réactiver directdraw, il faut mettre comme valeur: 0
ou bien supprimer la clef: EmulationOnly
Remarque: Il faut changer la valeur (ou la créer) AVANT de lancer Windows Media Player par exemple. Si tu changes la valeur alors que Windows Media Player est lancé, le changement n'est pas pris en compte...
Contribution le : 02/03/2005 22:05
|
|
|
Re: Capturer image video |
|
Inscrit: 19/11/2002 12:20
Post(s): 390
|
Voici le code Windev: Pour désactiver Directdraw:
RegistreEcrit("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectDraw","EmulationOnly",1)
Pour activer Directdraw:
RegistreEcrit("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectDraw","EmulationOnly",0)
Contribution le : 02/03/2005 22:17
|
|
|
Re: Capturer image video |
|
Utilisateur WDF
Inscrit: 22/02/2005 21:13
Post(s): 59
|
Ca marche pas Initialisation de la fenetre princiaple : RegistreEcrit("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectDraw","EmulationOnly",1)
clic sur un bouton : MciOuvre("I:\Temp\********.mpeg","vid",MciStyleFille,Principale.im,MciModeEtiré)
MciFormatPosition("vid",MciFormatImage)
pot_vid..BorneMax = MciTaille("vid")
clic sur un autre bouton : dDébutDessin(im2)
dCopieImage(im,im2)
im..Visible = Faux
im2..Visible = Vrai
pick = True
dRectangle(0,0,317,237,iTransparent,iVertClair)
toujours cette image noire
Contribution le : 02/03/2005 23:54
|
|
|
Re: Capturer image video |
|
Inscrit: 19/11/2002 12:20
Post(s): 390
|
Ca ne marche pas comme ça... Il faut faire une copie d'écran, et ensuite recouper... Je fais un exemple et je le poste...
Contribution le : 03/03/2005 00:39
|
|
|
Re: Capturer image video |
|
Inscrit: 19/11/2002 12:20
Post(s): 390
|
D'abord tu fais en effet le emultruc... Ensuite, tu lances le MCI dans le champ (pour moi Image1). Ce que je fais ensuite, c'est que je fais une capture d'écran que j'envoie dans Image 3 que je mets à la taille de l'écran... Ensuite, je prends dans Image3 la zone qui m'intéresse (le contenu qui se trouve à la place de Image1) et je le colle dans Image2:
//position du champ Image1 par rapport à l'écran (pas par rapport à la fenêtre)
x_dep est un entier =0
y_dep est un entier =0
//capture d'écran dans le champ Image3
Image3..Largeur = SysXRes()
Image3..Hauteur = SysYRes()
dCopieImage(copieEcran, Image3)
//on retaille le contenu du champ Image3 et on copie la zone qui nous intéresse dans Image2:
dDébutDessin(Image2)
x_dep=FenIntPosX(test_mci)+Image1..X
y_dep=FenIntPosY(test_mci)+Image1..Y
dCopieImage(Image3, Image2, copieSrcCopie,x_dep,y_dep,Image1..Hauteur,Image1..Largeur)
Et là ça marche... Explication: Tu ne peux pas faire de copie "brute" Image1 vers Image2, en fait la vidéo ne doit pas être dans le champ Image1, mais à la place du champ Image1, ce qui expliquerait pourquoi quand tu fais une copie directe, le champ image1 soit "noir"... Par exemple, mets une image dans le champ Image1 au départ, joue la vidéo et exécute ton code, tu verras que dans Image2 tu auras l'image d'origine (d'avant la vidéo) alors que tu as l'impression que la vidéo est dans le champ Image1... Tu dois pouvoir faire plus simple pour la copie d'écran en passant par des API pour éviter de faire une copie d'écran complète, mais bon...
Contribution le : 03/03/2005 01:07
|
|
|
Re: Capturer image video |
|
Utilisateur WDF
Inscrit: 22/02/2005 21:13
Post(s): 59
|
C'est parfait ! Ca marche vraiment bien
Merci beaucoup pour ton aide
Contribution le : 03/03/2005 09:22
|
|
|
Re: Capturer image video |
|
Inscrit: 19/11/2002 12:20
Post(s): 390
|
de nada ;)
Contribution le : 03/03/2005 09:51
|
|
|
Re: Capturer image video |
|
Utilisateur WDF
Inscrit: 22/02/2005 21:13
Post(s): 59
|
Tant qu'à faire le difficile... Si quelqu'un connait une autre méthode que le imprim écran, je suis aussi preneur En effet ça m'oblige à garder mon programme en 1er plan (j'ai une procédure qui fait beaucoup de captures pour les analyser) Voilà
Contribution le : 03/03/2005 17:31
|
|
|
Re: Capturer image video |
|
Inscrit: 19/11/2002 12:20
Post(s): 390
|
Ca existe, cf hypersnapdx ou snagit qui peuvent capturer une image sous directx ou autre... Mais j'ai bien peur que là il te faille aller chercher directement le contenu du buffer directdraw, autant dire... bon courage...
Contribution le : 03/03/2005 17:38
|
|
|
Re: Capturer image video |
|
Utilisateur WDF
Inscrit: 22/02/2005 21:13
Post(s): 59
|
sait-on jamais ?
Contribution le : 03/03/2005 17:44
|
|
|
Re: Capturer image video |
|
Utilisateur WDF
Inscrit: 22/02/2005 21:13
Post(s): 59
|
Je remonte ce toic pour ne pas en créer un nouveau qui ait le même sujet. Je suis persuadé qu'on peut faire la même chose avec les api. J'ai passé pas mal de temps à fouiller sur le web pour trouver de quoi m'aider, hélas les sources windev sont rares. Par contre les sources VB, ça ne manque pas J'essaye donc de traduire cette source en windev ( http://www.answers.com/main/ntquery?method=4&dsid=1726&dekey=AVI+Info&gwp=8&curtab=1726_1) Si j'arrive déjà à faire celle-là je pourrais m'attaquer à la capture. Si certains veulent m'aider, je suis pas contre
Contribution le : 15/03/2005 17:13
|
|
|
Re: Capturer image video |
|
Animateur WDF
Inscrit: 02/03/2003 04:07
De Noisy le grand(93)
Post(s): 2745
|
Bonjour, resultat de la conversion
OF_SHARE_DENY_WRITE est un entier = 0x20
AVIFILEINFO est une structure
dwMaxBytesPerSec est un entier
dwFlags est un entier
dwCaps est un entier
dwStreams est un entier
dwSuggestedBufferSize est un entier
dwWidth est un entier
dwHeight est un entier
dwScale est un entier
dwRate est un entier
dwLength est un entier
dwEditCount est un entier
szFileType est une chaîne fixe sur 64
FIN
hFile est un entier
AviInfo est un AVIFILEINFO
sFile est une chaîne = ComplèteRep(fRepExe())+"\BLUR24.AVI"
//Initialize the AVIFile library
API("avifil32","AVIFileInit")
//create a handle to the AVI file
SI API("avifil32","AVIFileOpen",&hFile, &sFile, OF_SHARE_DENY_WRITE, 0) = 0 ALORS
//retrieve the AVI information
SI API("avifil32","AVIFileInfo",hFile, &AviInfo, Dimension(AviInfo)) = 0 ALORS
Info("AVI dimensions: " + (AviInfo:dwWidth) + "x" + (AviInfo:dwHeight))
SINON
Info("Error while retrieving AVI information... :(")
FIN
//release the file handle
API("avifil32","AVIFileRelease", hFile)
SINON
Info("Error while opening the AVI file... :(")
FIN
//exit the AVIFile library and decrement the reference count for the library
API("avifil32", "AVIFileExit")
Contribution le : 15/03/2005 21:09
|
|
Vous ne pouvez pas débuter de nouveaux sujets.
Vous pouvez voir les sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.
|
Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
|