[resolu] MKV Merge et RunProgram()

Programmation d'applications complexes
Avatar de l’utilisateur
case
Messages : 1546
Inscription : lun. 10/sept./2007 11:13

Re: MKV Merge et RunProgram()

Message 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
ImageImage
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: MKV Merge et RunProgram()

Message 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 !
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: MKV Merge et RunProgram()

Message 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 :D
(même si ça fait bien 7h que je suis dessus ^^)
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
case
Messages : 1546
Inscription : lun. 10/sept./2007 11:13

Re: [resolu] MKV Merge et RunProgram()

Message 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
ImageImage
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: [resolu] MKV Merge et RunProgram()

Message 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é :wink:

merci encore
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Répondre