Page 2 sur 2
Re: MKV Merge et RunProgram()
Publié : ven. 29/juil./2011 22:41
par case
la pour le coup runprogram y est pour rien ,)
ton code copié collé depuis le forum
Code : Tout sélectionner
Opt3$ = " ?--language? ?0:fre? ?--track-name? ?0:Sous-titre FR? ?--default-track? ?0:yes? ?--forced-track? ?0:no? ?-S? ?0? ?-D? ?-A? ?-T? ?--no-global-tags? ?--no-chapters? "
Opt3$ = ReplaceString(Opt3$,"?",Chr(34))
ta ligne de commande copiée depuis le forum aussi
Code : Tout sélectionner
"C:\Program Files (x86)\MKVtoolnix\mkvmerge.exe" -o "F:\\FilmZ\\etcetc\\FichierDestination.mkv" "--forced-track" "0:no" "--forced-track" "1:no" "-a" "1" "-d" "0" "-S" "-T" "--no-global-tags" "--no-chapters" "F:\\FilmZ\\etcetc\\source.avi" "--language" "0:fre" "--track-name" "0:Sous-titre FR" "--default-track" "0:yes" "--forced-track" "0:no" "-s" "0" "-D" "-A" "-T" "--no-global-tags" "--no-chapters" "F:\\FilmZ\\etcetc\\soustitre.srt" "--track-order" "0:0,0:1,1:0"
je remarque que le switch "-S" de ton code est un "-s" dans ta ligne de commande
et c'est pas du tout le même switch dans la doc de mkvmerge
-S, --no-subtitles
-s, --subtitle-tracks [!]n,m,...
en l’occurrence le but recherché est d'avoir les sous titres. donc -s et pas -S et je te garantie que ça fonctionne j'ai installé les mkvtoolnix juste pour tester et même pas dans le même répertoire que celui du programme pb
Re: MKV Merge et RunProgram()
Publié : ven. 29/juil./2011 22:49
par Ar-S
j'ai édité mon message, je me suis rendu compte du -S / -s mais j'avais pas eu le temps de mettre à jour le code avant que tu ne répondes.
---edit ----
TAINNNNNNNNN j'ai trouvé !
C'est bien ce runprogram()...
pour que cela fonctionne, il faut mettre tout d'un bloc !
Code : Tout sélectionner
MKVconvert$ = prog$ + Param$
MKVmerge = RunProgram(MKVconvert$, "", GetPathPart(prog$), #PB_Program_Open|#PB_Program_Read)
C'est juste n'imp !
Merci pour votre aide !
Re: MKV Merge et RunProgram()
Publié : ven. 29/juil./2011 22:56
par Ar-S
Voilà le code fonctionnel
Code : Tout sélectionner
Global NewList AVI.s()
; Parametres conversion
prog$=Chr(34)+"C:\Program Files (x86)\MKVtoolnix\MKVmerge.exe"+Chr(34)
opt$=" -o " ; Ici pas de chr(34)
; Ajout des " par replacestring
; C'est plus lisible que de mettre dans la sources x dizaines de chr(34)
Opt2$ = " ?--forced-track? ?0:no? ?--forced-track? ?1:no? ?-a? ?1? ?-d? ?0? ?-S? ?-T? ?--no-global-tags? ?--no-chapters? "
Opt2$ = ReplaceString(Opt2$,"?",Chr(34))
Opt3$ = " ?--language? ?0:fre? ?--track-name? ?0:Sous-titre FR? ?--default-track? ?0:yes? ?--forced-track? ?0:no? ?-s? ?0? ?-D? ?-A? ?-T? ?--no-global-tags? ?--no-chapters? "
Opt3$ = ReplaceString(Opt3$,"?",Chr(34))
Opt4$ = " ?--track-order? ?0:0,0:1,1:0?"
Opt4$ = ReplaceString(Opt4$,"?",Chr(34))
Procedure ListeFilms()
ClearList(AVI())
Directory$ = PathRequester("Repertoire à lister",GetCurrentDirectory())
If Directory$
If ExamineDirectory(0,Directory$,"*.avi")
While NextDirectoryEntry(0)
If DirectoryEntryType(0) = #PB_DirectoryEntry_File
fichier$=DirectoryEntryName(0)
If fichier$<>"." And fichier$<>".."
AddElement(AVI())
AVI() = Directory$+fichier$
Debug AVI()
EndIf
EndIf
Wend
FinishDirectory(0)
EndIf
Else
ProcedureReturn #False
EndIf
EndProcedure
Procedure.s SetFileExtension (Fichier.s,Nouvelle_Extension.s)
Protected.s Extension
; Test fichier
If Len(Fichier)<5 ; 5 = min pour nom de fichier + extension (a.avi par exemple)
ProcedureReturn
EndIf
Extension.s = GetExtensionPart(Fichier)
; test si extension existe
If Extension = ""
ProcedureReturn
EndIf
; on remplace l'extension
Fichier_Sortie.s = Left(Fichier,Len(Fichier)-3)+Nouvelle_Extension
Fichier_Sortie = Chr(34)+Fichier_Sortie+Chr(34)
ProcedureReturn Fichier_Sortie
EndProcedure
;- /// PROGRAMME ///
ListeFilms()
ResetList(AVI())
ForEach AVI()
; Parsing des double slash
AVI$ = AVI() ; On garde AVI() intact
AVI$ = Chr(34)+AVI$+Chr(34)
AVI$ = ReplaceString(AVI$,"\","\\")
MKV$ = SetFileExtension(AVI(),"mkv")
MKV$ = ReplaceString(MKV$,"\","\\")
SRT$ = SetFileExtension(AVI(),"srt")
SRT$ = ReplaceString(SRT$,"\","\\")
Param$ = opt$ + MKV$ + Opt2$ + AVI$ + Opt3$ + SRT$ + Opt4$
MKVconvert$ = prog$ + Param$
MKVmerge = RunProgram(MKVconvert$, "", GetPathPart(prog$), #PB_Program_Open|#PB_Program_Read) ; je te haie RunProgram !
Sortie$ = ""
If MKVmerge
While ProgramRunning(MKVmerge)
If AvailableProgramOutput(MKVmerge)
Sortie$ + ReadProgramString(MKVmerge) + Chr(10)
EndIf
Wend
Sortie$ + Chr(13) + Chr(13)
Sortie$ + "Code de retour : " + Str(ProgramExitCode(MKVmerge)) + Chr(13)
CloseProgram(MKVmerge) ; Ferme la connection vers le programme
Debug Sortie$
Else
Debug "Impossible d'ouvrir "+prog$
EndIf
Debug MKVconvert$
SetClipboardText(MKVconvert$)
Next
ça offre un gain de temps monstreux lorsqu'on a pas mal de fichiers

(même si ça fait bien 7h que je suis dessus ^^)
Re: [resolu] MKV Merge et RunProgram()
Publié : ven. 29/juil./2011 23:05
par case
bizarre ton souci avec runprogram moi les paramètres dans la place pour les paramètres ça fonctionne... enfin je suppose que le principal c'est que malgré ta haine de runprogram tu ai résolu ton souci :p
Re: [resolu] MKV Merge et RunProgram()
Publié : ven. 29/juil./2011 23:31
par Ar-S
Tout à fait ! Je me suis même peut être emmêlé lors de mes essais (un coup runprogram ok mais options foireuses et inversement..)
Je me fais une petite GUI (1 bouton et un champ string) histoire de voir la progression ^^ et c'est plié
merci encore