AutoIt Français

Nouveau forum : http://www.autoitscript.fr/
 
AccueilFAQRechercherS'enregistrerMembresGroupesConnexionhttp://www.autoitscript.fr

Partagez | 
 

 Interface Graphique pour conversion video..

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
neslou
Débutant
Débutant


Nombre de messages : 7
Date d'inscription : 23/05/2007

MessageSujet: Interface Graphique pour conversion video..   2007-05-23, 13:46

Bonjour,
Je ne suis pas programmeur, c'est pour cela que je poste ici afin de savoir si quelqu'un pourrait m'aider.
En fait, j'ai un balladeur MP4 qui sait lire les vidéos en avi (en 320*240 Xvid en 20 fps etc....)
Le hic c'est que le logiciel fournit avec ce balladeur est en chinois alors j'ai fouillé un peu et j'ai vu que ce convertisseur vidéo s'appuyait sur MEncoder (une GUI et un fichier ini).
En ligne de commande, ça fonctionne nickel, donc je cherche a me faire une interface graphique avec :
Champ Source (*.* avec un bouton parcourir pour aller chercher le fichier source)
Champ Destination (*.avi avec un bouton parcourir pour enregistrer la cible dans un dossier)
Une zone avec une progress bar
Une image avec un logo
Quelqu'un pourrait m'aider à réaliser cette interface et savoir comment passer en paramètre le résultat des champs source et destination pour lancer une ligne de commande.
Exemple ci dessous :

mencoder.exe [u]E:\video\DragonBall-001.avi[/u] -ofps 20 -vf-add scale=320:240 -vf-add expand=320:240:-1:-1:1 -srate 44100 -ovc xvid -xvidencopts bitrate=600:max_bframes=0:quant_type=h263:me_quality=6 -oac lavc -lavcopts acodec=mp2:abitrate=128 -o [u]E:\video\convertit.avi[/u]

Merci par avance..
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
neslou
Débutant
Débutant


Nombre de messages : 7
Date d'inscription : 23/05/2007

MessageSujet: Re: Interface Graphique pour conversion video..   2007-05-23, 15:16

Un peu comme dans ce code généré sous Koda ;-)
#include <GUIConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("@Neslou Convertisseur video", 606, 555, 264, 173)
$Group1 = GUICtrlCreateGroup("Choisir la Source", 56, 24, 481, 121)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group2 = GUICtrlCreateGroup("Choisir la Destination", 58, 160, 481, 121)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Progress1 = GUICtrlCreateProgress(56, 304, 481, 49)
$MyButton1 = GUICtrlCreateButton("Lancer la Conversion !", 176, 408, 244, 30, BitOR($BS_DEFPUSHBUTTON,$BS_PUSHLIKE,$BS_FLAT,$WS_BORDER))
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd


Mais c juste pour une idée du look...
Merci par avance.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
sylvanie
Modérateur
Modérateur


Nombre de messages : 300
Date d'inscription : 10/03/2007

MessageSujet: Re: Interface Graphique pour conversion video..   2007-05-23, 23:08

N'ayant pas l'appli sous la main, j'ai codé "dans le vide", donc faudra adapter à la vrai situation pour le rep d'instal ...
Pour la progress, faut voir si on a un moyen de récupérer l'info d'avancement, sinon ce ne sera pas possible.

#include <GUIConstants.au3>

$file_in = ""
$file_out =""
$rep_mencoder=@ProgramFilesDir; <--- attention c'est une pure supposition de ma part, il faut mettre ici le chemin d'accès à mencoder.exe

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("@Neslou Convertisseur video", 606, 555, 264, 173)
$Group1 = GUICtrlCreateGroup("Choisir la Source", 56, 24, 481, 121)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Bouton_choice_in=GUICtrlCreateButton("...",76,70)
$edit_choice_in=GUICtrlCreateEdit($file_in,106,70,400,20,$ES_READONLY)
$Group2 = GUICtrlCreateGroup("Choisir la Destination", 56, 160, 481, 121)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Bouton_choice_out=GUICtrlCreateButton("...",76,206)
$edit_choice_out=GUICtrlCreateEdit($file_out,106,206,400,20,$ES_READONLY)
$Progress1 = GUICtrlCreateProgress(56, 304, 481, 49); TODO
$Bouton_Action = GUICtrlCreateButton("Lancer la Conversion !", 176, 408, 244, 30, BitOR($BS_DEFPUSHBUTTON,$BS_PUSHLIKE,$BS_FLAT,$WS_BORDER))
GUICtrlSetState(-1,$GUI_DISABLE)

GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Bouton_choice_in
FileDialog($file_in,0)
Case $Bouton_choice_out
FileDialog($file_out,1)
Case $Bouton_Action
Do_Convert()
EndSwitch
WEnd


Func FileDialog(ByRef $fichier,$mode)

Switch $mode
Case 0
$fichier=FileOpenDialog("Fichier à ouvrir",@MyDocumentsDir,"AVI (*.avi)|All (*.*)",3)
if @error=1 Then $fichier=""
GUICtrlSetData($edit_choice_in,$fichier)
Case 1
$fichier=FileSaveDialog("Fichier à enregistrer",@MyDocumentsDir,"AVI (*.avi)|All (*.*)",16)
if @error=1 Then $fichier=""
GUICtrlSetData($edit_choice_out,$fichier)
Case Else
Return
EndSwitch
check_action()
EndFunc

Func check_action()
If $file_in<> "" And $file_out<>"" Then
GUICtrlSetState($Bouton_Action,$GUI_ENABLE)
Else
GUICtrlSetState($Bouton_Action,$GUI_DISABLE)
EndIf
EndFunc

Func Do_Convert()
local $commande = 'mencoder.exe '&$file_in&' -ofps 20 -vf-add scale=320:240 -vf-add expand=320:240:-1:-1:1 -srate 44100 -ovc xvid -xvidencopts bitrate=600:max_bframes=0:quant_type=h263:me_quality=6 -oac lavc -lavcopts acodec=mp2:abitrate=128 -o '&$file_out
RunWait($commande,$rep_mencoder,@SW_HIDE) ;<--- Enlever @SW_HIDE en cas de debug ...
EndFunc
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
neslou
Débutant
Débutant


Nombre de messages : 7
Date d'inscription : 23/05/2007

MessageSujet: Re: Interface Graphique pour conversion video..   2007-05-25, 09:19

Ouahhhhhhhhhhhhhhhhhh !!!!!!!!!!!
Merci d'avoir prit le temps de faire quelque chose pour moi!
Je vais regarder tout ça et merci pour les commentaires...
Je te tiens au courant...

Pour la progress bar, sous dos y a la progression de visible alors je me disais que si on renvoyait cela dans un fichier texte, et qu'on lisait celui-ci...
Je vais voir tout cela et encore une fois merci!!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
neslou
Débutant
Débutant


Nombre de messages : 7
Date d'inscription : 23/05/2007

MessageSujet: Re: Interface Graphique pour conversion video..   2007-05-25, 09:51

sylvanie, on peut continuer de bosser ensemble sur ce converter? Je voudrais améliorer son look, ajouter un splash image au début pour le modèle du balladeur etc..
J'offre le baladeur pour lequel cela rendre service...
Mais, pour cela j'ai besoin d'améliorer l'installation avec des pré-requis comme l'installation de codecs, l'ajout d'orbit pour pouvoir télécharger les fichier (*.flv ) comme ceux que l'on trouve sur YouTube, dailymotion etc...
Je te donnerais les détails..
[img]http://www.neslou.com/ns04.PNG[/img]
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
sylvanie
Modérateur
Modérateur


Nombre de messages : 300
Date d'inscription : 10/03/2007

MessageSujet: Re: Interface Graphique pour conversion video..   2007-05-25, 22:51

[quote:77fb="neslou"]Ouahhhhhhhhhhhhhhhhhh !!!!!!!!!!!

Pour la progress bar, sous dos y a la progression de visible alors je me disais que si on renvoyait cela dans un fichier texte, et qu'on lisait celui-ci...
Je vais voir tout cela et encore une fois merci!!
[/quote]

on peut catcher la sortie stsout (comme stderr) via Run (au lieu de runwait) avec les flag de fin à $STDERR_CHILD + $STDOUT_CHILD, puis appeler stdoutread sur le PID retourné par RUN.
Prends l'exple du fichier d'aide sur la fonction stdoutread , mets le nom de ton exe pour voir le type de sortie que tu aura en retour.
Après faudra décortiquer pour updater la progressbar
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
neslou
Débutant
Débutant


Nombre de messages : 7
Date d'inscription : 23/05/2007

MessageSujet: Re: Interface Graphique pour conversion video..   2007-05-27, 12:47

Bon, j'avance un peu mais...
Il semble que le programme "Mencoder" ne se lance pas quand il n'est pas lancé directement depuis son répertoire (son chemin de répertoire)..cela est sans doute du aux espaces dans les noms de répertoires?

Sinon, le choix de la source et de la destination fonctionne nickel...Peut-être forcé la sélection sur *.* lors de l'ouverture et comment faire pour lors du choix de la destination l'utilisateur choisisse son nom de fichier mais que cela rajoute automatiquement *.avi?

J'ai journalisé à la main l'éxécution d'une conversion dont voici le fichier texte :
[url=http://www.neslou.com/log.txt]http://www.neslou.com/log.txt[/url]

La fin est réalisé par la séquence suivante :
Flushing video frames
Writing index...
Writing header...

En revanche, il semble difficile de matérialisé la progression de façon régulière?


Voici la commande que je lance à partir du répertoire ou se trouve "mencoder.exe" situé dans "D:\Documents and Settings\toto\Bureau\neslou"

mencoder.exe "D:\Documents and Settings\toto\Bureau\neslou\sources\Comme un roc.flv" -ofps 20 -vf-add scale=320:240 -vf-add expand=320:240:-1:-1:1 -srate 44100 -ovc xvid -xvidencopts bitrate=600:max_bframes=0:quant_type=h263:me_quality=6 -oac lavc -lavcopts acodec=mp2:abitrate=128 -o "D:\Documents and Settings\toto\Bureau\neslou\destination\test.avi" >> log.txt


Merci par avance.

Neslou.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
sylvanie
Modérateur
Modérateur


Nombre de messages : 300
Date d'inscription : 10/03/2007

MessageSujet: Re: Interface Graphique pour conversion video..   2007-05-27, 13:34

[quote:ce36="neslou"]Bon, j'avance un peu mais...
Il semble que le programme "Mencoder" ne se lance pas quand il n'est pas lancé directement depuis son répertoire (son chemin de répertoire)..cela est sans doute du aux espaces dans les noms de répertoires?
[/quote]

Il peut y a voir des pbs de lancement dus aux espaces dans le rep d'install( nommons le $rep) si on lance l'exe par :
runwait($rep&'\mencoder ... ',...)
pour cela je préfère le lancer comme ceci
runwait('mencoder ...',$rep,...)

mainteant si celà fait la sourde oeille, on peut repasser avec la première solution en forçant des doubles cotes à l'intérieur de cote simple :

runwait('"'&$rep&'\mencoder"',...)

[quote:ce36="neslou"]

Sinon, le choix de la source et de la destination fonctionne nickel...Peut-être forcé la sélection sur *.* lors de l'ouverture et comment faire pour lors du choix de la destination l'utilisateur choisisse son nom de fichier mais que cela rajoute automatiquement *.avi?
[/quote]
pour l'ouverture mets "All (*.*)|AVI (*.avi)" à la place de "AVI (*.avi)|All (*.*)"

pour l'enregistrement mets simplement "AVI (*.avi)" à la place de ,"AVI (*.avi)|All (*.*)". Comme ça, même en tapant toto, ça le transformera en toto.avi

pour le log, j'ai vu un pourcentage de 180 %, c'est bizarre comme avancement ...
on peut faire une fause progressbar rebouclant durant l'execution de l'executable en revanche, histoire de signaler que ça tourne.

pour ceciil faut faire un run à la place de runwait. Celà renvoie le pid de ton exe en cours. puis tu lance un while porant sur l'existance du pid. dans cette boucle, incrémente ta progressbar de 5 % (arbitrairement...) et fait un sleep(1000) pour attendre 1 seconde. Si tu dépasses 100% alors reboucle à 0.
Lorsque mencoder finira, le pid n'existera plus, alors, tu remettra ta rpogressbar à 100% ou 0%, comme tu veux. Et mets un popup disant que c'est fini
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
neslou
Débutant
Débutant


Nombre de messages : 7
Date d'inscription : 23/05/2007

MessageSujet: Re: Interface Graphique pour conversion video..   2007-05-27, 17:41

Bonjour,
Merci pour tes réponses...je vois ta maitrise et ta compréhension de ce que je veux faire...
Pourrais t'ens occuper stp? Comme indiqué, je ne suis pas programmeur et je pense que tu serais plus efficace et comme convenu j'offre un des baladeurs en photo...l'idée étant de pouvoir faire une interface plutot efficace et semie pro ;-)
Merci par avance.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
sylvanie
Modérateur
Modérateur


Nombre de messages : 300
Date d'inscription : 10/03/2007

MessageSujet: Re: Interface Graphique pour conversion video..   2007-05-28, 00:12

vois si ça fait ton bonheur.
logo.jpg est un découpage depuis la pub lise plus haut, sans ce fichier, il n'y aura pas d'image
j'ai ajouté des côtes sur l'exe et les entrées. Si des pbs persistent, faudra passer par une conversion DOS.
L'extension avi est mise automatiquement
pour le reste , cf commentaires
#include <GUIConstants.au3>
AutoItSetOption("OnExitFunc","My_exit")
Dim $pid
Dim $pourcent=0
$file_in = ""
$file_out =""
$rep_mencoder=@ProgramFilesDir; <--- attention c'est une pure supposition de ma part, il faut mettre ici le chemin d'accès à mencoder.exe

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("@Neslou Convertisseur video", 606, 555, 264, 173)
GUISetBkColor(0xffffff)
$pic=GUICtrlCreatePic("logo.jpg",40,300,560,275) ;< mise en fond du logo redécoupé depuis l'image que tu as mise à titre d'exple de fond
GUICtrlSetState(-1,$GUI_DISABLE)
$Group1 = GUICtrlCreateGroup("Choisir la Source", 56, 24, 481, 121)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Bouton_choice_in=GUICtrlCreateButton("...",76,70)
$edit_choice_in=GUICtrlCreateEdit($file_in,106,70,400,20,$ES_READONLY)
$Group2 = GUICtrlCreateGroup("Choisir la Destination", 56, 160, 481, 121)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Bouton_choice_out=GUICtrlCreateButton("...",76,206)
$edit_choice_out=GUICtrlCreateEdit($file_out,106,206,400,20,$ES_READONLY)
$label=GUICtrlCreateLabel("",56,285,200,20)
GUICtrlSetBkColor(-1,$GUI_BKCOLOR_TRANSPARENT)
$Progress1 = GUICtrlCreateProgress(56, 304, 481, 49)
$Bouton_Action = GUICtrlCreateButton("Lancer la Conversion !", 176, 408, 244, 30, BitOR($BS_DEFPUSHBUTTON,$BS_PUSHLIKE,$BS_FLAT,$WS_BORDER))
GUICtrlSetState(-1,$GUI_DISABLE)
$label_url=GUICtrlCreateLabel("http://www.neslou.com",400,520) ; lien url
GUICtrlSetColor(-1,0x0000ff)
GUICtrlSetCursor(-1,0)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Bouton_choice_in
FileDialog($file_in,0)
Case $Bouton_choice_out
FileDialog($file_out,1)
Case $Bouton_Action
Do_Convert()
Case $label_url
Run("explorer "&GUICtrlRead($label_url))
EndSwitch
WEnd


Func FileDialog(ByRef $fichier,$mode)

Switch $mode
Case 0
$fichier=FileOpenDialog("Fichier à ouvrir",@MyDocumentsDir,"All (*.*)|AVI (*.avi)",3)
if @error=1 Then $fichier=""
GUICtrlSetData($edit_choice_in,$fichier)
Case 1
$fichier=FileSaveDialog("Fichier à enregistrer",@MyDocumentsDir,"AVI (*.avi)",16)
if @error=1 Then $fichier=""
GUICtrlSetData($edit_choice_out,$fichier)
Case Else
Return
EndSwitch
check_action()
EndFunc

Func check_action()
If $file_in<> "" And $file_out<>"" Then
GUICtrlSetState($Bouton_Action,$GUI_ENABLE)
Else
GUICtrlSetState($Bouton_Action,$GUI_DISABLE)
EndIf
EndFunc

Func Do_Convert()

If StringRight($file_out,4)<>".avi" and StringRight($file_out,4)<>".AVI" Then $file_out&=".avi" ; routine de ctrl de la presence de l'extention avi avec ajout si nécessaire

local $commande = 'mencoder.exe" "'&$file_in&'" -ofps 20 -vf-add scale=320:240 -vf-add expand=320:240:-1:-1:1 -srate 44100 -ovc xvid -xvidencopts bitrate=600:max_bframes=0:quant_type=h263:me_quality=6 -oac lavc -lavcopts acodec=mp2:abitrate=128 -o "'&$file_out&'"'

$pid=Run('"'&$rep_mencoder&'\'&$commande,$rep_mencoder,@SW_HIDE) ;<--- Enlever @SW_HIDE en cas de debug ...
Sleep(200)
GUICtrlSetData($label,"Génération en cours")
$pourcent=0
GUICtrlSetState($Bouton_Action,$GUI_DISABLE)
AdlibEnable("_update",1000) ;<-- permet de lancer un update de la progressbar en rendant immediatement la main à la gui principale

EndFunc

Func _update() ;fonction d'update de la progressbare

if (ProcessExists($pid)<>0) Then
$pourcent+=5
If $pourcent>100 Then
$pourcent=0
GUICtrlSetData($label,"Génération en cours")
EndIf
GUICtrlSetData($Progress1,$pourcent)
GUICtrlSetData($label,GUICtrlRead($label)&".")
Sleep(100)
Else
GUICtrlSetData($Progress1,0)
GUICtrlSetData($label,"")
AdlibDisable()
MsgBox(64,"Terminé","Conversion Terminée")
check_action()
EndIf
EndFunc

Func My_exit() ; fonction de sortie qui tue mencoder.exe si il est encore en cours d'execution
if ProcessExists($pid)<>0 Then ProcessClose($pid)
exit 0
EndFunc
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Interface Graphique pour conversion video..   Aujourd'hui à 17:18

Revenir en haut Aller en bas
 
Interface Graphique pour conversion video..
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» probleme pour mettre video
» Choisir une Carte Graphique pour Noël
» Commande graphique pour les forums de graphismes
» Quel code Css pour les pages XHtml ?
» Code pour une video

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
AutoIt Français :: AutoIt v3 :: Entraide-
Sauter vers: