Code : Tout sélectionner
;{- FFmpeg GUI by Ar-S / LDV MULTIMEDIA
Enumeration
  #WIN
  #P0
  #OP_Debit_Free
  #BT_ChoixSource
  #ChoixSource
  #ChoixDest
  #BT_ChoixDest
  #TXT_1
  #TXT_2
  #OP_FLV
  #OP_AVI
  #TXT_3
  #BT_GO
  #TXT_4
  #OP_inchange
  #OP_16_9
  #OP_4_3
  #TXT_5
  #OP_res1
  #OP_128x96
  #OP_160x120
  #OP_320x240
  #OP_640x480
  #OP_800x600
  #OP_1024x768
  #TXT_6
  #OP_Debit1
  #OP_Debit_50
  #OP_Debit_100
  #OP_Debit_500
  #SON
  #Font_BT_ChoixSource
  #Font_BT_ChoixDest
EndEnumeration
Global OP_Debit_Free_Tooltip
Global BT_ChoixSource_Tooltip
Global BT_ChoixDest_Tooltip
Global SON_Tooltip
Global esp$=" "
Global Path$=GetCurrentDirectory()
Global FFmpeg$=Chr(34)+Path$+"ffmpeg.exe"+Chr(34)
Global V$="0.2"
; Create tooltip
Procedure GadgetBalloonToolTip(WindowNumber.l, GadgetNumber.l, Text.s)
  Protected Tooltip.l, Balloon.TOOLINFO
  Tooltip = CreateWindowEx_(0, "ToolTips_Class32", "", #WS_POPUP | #TTS_NOPREFIX | #TTS_BALLOON, 0, 0, 0, 0, WindowID(WindowNumber), 0, GetModuleHandle_(0), 0)
  SendMessage_(Tooltip, #TTM_SETTIPTEXTCOLOR, GetSysColor_(#COLOR_INFOTEXT), 0)
  SendMessage_(Tooltip, #TTM_SETTIPBKCOLOR, GetSysColor_(#COLOR_INFOBK), 0)
  SendMessage_(Tooltip, #TTM_SETMAXTIPWIDTH, 0, 180)
  Balloon\cbSize = SizeOf(TOOLINFO)
  Balloon\uFlags = #TTF_IDISHWND | #TTF_SUBCLASS
  Balloon\hwnd = GadgetID(GadgetNumber)
  Balloon\uId = GadgetID(GadgetNumber)
  Balloon\lpszText = @Text
  SendMessage_(Tooltip, #TTM_ADDTOOL, 0, @Balloon)
  ProcedureReturn Tooltip
EndProcedure
; Change tooltip text
Procedure ChangeGadgetBalloonToolTip(Tooltip.l, GadgetNumber.l, Text.s)
  Protected Balloon.TOOLINFO
  Balloon\cbSize = SizeOf(TOOLINFO)
  Balloon\uFlags = #TTF_IDISHWND | #TTF_SUBCLASS
  Balloon\hwnd = GadgetID(GadgetNumber)
  Balloon\uId = GadgetID(GadgetNumber)
  Balloon\lpszText = @Text
  SendMessage_(Tooltip, #TTM_ADDTOOL, 0, @Balloon)
EndProcedure
; Free tooltip
Procedure FreeBalloonTooltip(Tooltip.l)
  DestroyWindow_(Tooltip.l)
EndProcedure 
;
Define.l Event, EventWindow, EventGadget, EventType, EventMenu
;}
Procedure OpenWindow_WIN()
  If OpenWindow(#WIN, 456, 176, 450, 185, "FFmpeg GUI FLV - AVI converter "+V$, #PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
    If CreateGadgetList(WindowID(#WIN))
      PanelGadget(#P0, 0, 0, 450, 185) ;>
        ; Options Generales
        AddGadgetItem(#P0, -1, "Options Generales")
        ButtonGadget(#BT_ChoixSource, 390, 15, 50, 30, "...")
        BT_ChoixSource_Tooltip = GadgetBalloonToolTip(#WIN, #BT_ChoixSource, "Indiquez le chemin du fichier source")
        StringGadget(#ChoixSource, 5, 25, 380, 20, "", #PB_String_BorderLess|#ES_CENTER|#PB_String_ReadOnly)
        StringGadget(#ChoixDest, 5, 75, 380, 20, "", #PB_String_BorderLess|#ES_CENTER|#PB_String_ReadOnly)
        ButtonGadget(#BT_ChoixDest, 390, 65, 50, 30, "...")
        BT_ChoixDest_Tooltip = GadgetBalloonToolTip(#WIN, #BT_ChoixDest, "Indiquez le chemin du fichier source")
        TextGadget(#TXT_1, 5, 7, 180, 15, "Chemin du fichier source")
        TextGadget(#TXT_2, 5, 55, 180, 15, "Chemin du fichier de destination")
        OptionGadget(#OP_FLV, 5, 130, 40, 20, "FLV")
        OptionGadget(#OP_AVI, 50, 130, 40, 20, "AVI")
        SetGadgetState(#OP_AVI, 1)
        TextGadget(#TXT_3, 5, 110, 80, 20, "Format de sortie")
        ButtonGadget(#BT_GO, 105, 105, 335, 45, "Convertir la vidéo")
        ; Options avancées
        AddGadgetItem(#P0, -1, "Options avancées")
        StringGadget(#OP_Debit_Free, 295, 105, 50, 15, "", #PB_String_Numeric|#ES_RIGHT)
        OP_Debit_Free_Tooltip = GadgetBalloonToolTip(#WIN, #OP_Debit_Free, "Choississez vous-même un débit vidéos")
        TextGadget(#TXT_4, 10, 5, 60, 15, "Aspect")
        OptionGadget(#OP_inchange, 10, 25, 70, 15, "Inchangé")
        SetGadgetState(#OP_inchange, 1)
        OptionGadget(#OP_16_9, 10, 45, 50, 15, "16:9")
        OptionGadget(#OP_4_3, 10, 65, 50, 15, "4:3")
        TextGadget(#TXT_5, 125, 5, 60, 15, "Résolution")
        OptionGadget(#OP_res1, 125, 25, 145, 15, "Identique à la source")
        SetGadgetState(#OP_res1, 1)
        OptionGadget(#OP_128x96, 125, 45, 70, 15, "128x96")
        OptionGadget(#OP_160x120, 125, 65, 70, 15, "160x120")
        OptionGadget(#OP_320x240, 125, 85, 70, 15, "320x240")
        OptionGadget(#OP_640x480, 125, 105, 70, 15, "640x480")
        OptionGadget(#OP_800x600, 125, 125, 70, 15, "800x600")
        OptionGadget(#OP_1024x768, 125, 145, 70, 15, "1024x768")
        TextGadget(#TXT_6, 295, 5, 110, 15, "Débit vidéo (kbps/s)")
        OptionGadget(#OP_Debit1, 295, 25, 145, 15, "Defaut (200)")
        SetGadgetState(#OP_Debit1, 1)
        OptionGadget(#OP_Debit_50, 295, 45, 50, 15, "50")
        OptionGadget(#OP_Debit_100, 295, 65, 50, 15, "100")
        OptionGadget(#OP_Debit_500, 295, 85, 50, 15, "500")
        CheckBoxGadget(#SON, 295, 135, 140, 15, "Suppression du son ?")
        SON_Tooltip = GadgetBalloonToolTip(#WIN, #SON, "Cocher pour supprimer la bande son")
        ; A propos
        AddGadgetItem(#P0, -1, "A propos")
        ; Mise à jour ?
        AddGadgetItem(#P0, -1, "Mise à jour ?")
      CloseGadgetList() ;<
      ; Gadget Fonts
      SetGadgetFont(#BT_ChoixSource, LoadFont(#Font_BT_ChoixSource, "Century Schoolbook", 16, 272))
      SetGadgetFont(#BT_ChoixDest, LoadFont(#Font_BT_ChoixDest, "Century Schoolbook", 16, 272))
      PureCOLOR_SetGadgetColor(#OP_Debit_Free, $0, $67CFFC)
      PureCOLOR_SetButtonColor(#BT_ChoixSource, #PureCOLOR_SystemColor, $67CFFC)
      PureCOLOR_SetGadgetColor(#ChoixSource, $0, $67CFFC)
      PureCOLOR_SetGadgetColor(#ChoixDest, $0, $67CFFC)
      PureCOLOR_SetButtonColor(#BT_ChoixDest, #PureCOLOR_SystemColor, $67CFFC)
      
    EndIf
  EndIf
EndProcedure
OpenWindow_WIN()
Aspect$=""
Resolution$=""
Format$="avi"
Debit$=""
Son$=""
;{- Event loop
Repeat
  Event = WaitWindowEvent()
  Select Event
    ; ///////////////////
    Case #PB_Event_Gadget
      EventGadget = EventGadget()
      EventType = EventType()
      Select EventGadget
        Case #P0
        Case #BT_ChoixSource
          EtatFormat=GetGadgetState(#OP_AVI)
          If EtatFormat=1
            Format$="avi"
          Else
            Format$="flv"
          EndIf
          FichierParDefaut$ = Path$   
          Filtre$ = "Tous les fichiers (*.*)|*.*"
          Filtre  = 0   
          Fichier$ = OpenFileRequester("Choisissez le fichier video à convertir", FichierParDefaut$, Filtre$, Filtre)
          If Fichier$
            NomFichier$=GetFilePart(Fichier$)
            LongueurFichier=Len(Fichier$)
            fichierDest$=Chr(34)+Left(Fichier$,LongueurFichier-3)+Format$+Chr(34)
            Fichier$=Chr(34)+Fichier$+Chr(34)
            SetGadgetText(#ChoixSource,Fichier$)
            SetGadgetText(#ChoixDest,fichierDest$)
          Else
            MessageRequester("Information", "La sélection a été annulée.", 0)
          EndIf 
          
        Case #BT_ChoixDest
          FichierParDefaut$ = Path$
          Filtre$ = "Fichier "+Format$+ " (*."+Format$+")|*."+Format$
          fichierDest$ = SaveFileRequester("Choisissez le fichier à sauvegarder", FichierParDefaut$, Filtre$, Filtre)
          If fichierDest$
            If Right(fichierDest$,4)="."+Format$
              fichierDest$=fichierDest$
            Else
              fichierDest$=Chr(34)+fichierDest$+"."+Format$+Chr(34)
            EndIf
            SetGadgetText(#ChoixDest,fichierDest$)
          Else
            MessageRequester("Information", "La sélection a été annulée.", 0)  
          EndIf 
        Case #ChoixSource 
        Case #ChoixDest
          
        Case #TXT_1
        Case #TXT_2
        Case #OP_FLV
          Format$="flv"
          SetGadgetState(#OP_AVI, 0)
        Case #OP_AVI
          Format$="avi"
          SetGadgetState(#OP_FLV, 0)
        Case #TXT_3
          ;-GO       
        Case #BT_GO
          EtatFormat=GetGadgetState(#OP_AVI)
          If EtatFormat=1
            Format$="avi"
          Else
            Format$="flv"
          EndIf
          If Fichier$=""
            MessageRequester("information","Vous devez choisir un fichier à convertir",#MB_ICONEXCLAMATION)
          Else
            If fichierDest$=""
              MessageRequester("information","Vous devez choisir le chemin de sauvegarde",#MB_ICONEXCLAMATION)
            Else
              If Format$="flv"
                parametre$="-i "+Fichier$+esp$+"-f "+Format$+esp$+fichierDest$
                Else
                  parametre$="-i "+Fichier$+esp$+"-sameq -vcodec rawvideo -f "+Format$+esp$+fichierDest$  
                ;parametre$="-i "+Fichier$+esp$+"-f "+Format$+esp$+Aspect$+Son$+Debit$+Resolution$+fichierDest$
              EndIf
              ;  RunProgram (FFmpeg$,parametre$)
              MessageRequester ("test",FFmpeg$+esp$+parametre$) ;-test
              RunProgram(FFmpeg$,parametre$,"",1)
              SetClipboardText(FFmpeg$+esp$+parametre$)
              CloseFile(1)
            EndIf
          EndIf
          
        Case #TXT_4
        Case #OP_inchange
          Aspect$=""
          SetGadgetState(#OP_16_9, 0)
          SetGadgetState(#OP_4_3, 0)
        Case #OP_16_9
          Aspect$="-aspect 16:9 "
          SetGadgetState(#OP_4_3, 0)
          SetGadgetState(#OP_inchange, 0)
        Case #OP_4_3
          Aspect$="-aspect 4:3 "
          SetGadgetState(#OP_16_9, 0)
          SetGadgetState(#OP_inchange, 0)
        Case #TXT_5
        Case #OP_res1
          Resolution$=""
          SetGadgetState(#OP_128x96, 0)
          SetGadgetState(#OP_160x120, 0)
          SetGadgetState(#OP_320x240, 0)
          SetGadgetState(#OP_640x480, 0)
          SetGadgetState(#OP_800x600, 0)
          SetGadgetState(#OP_1024x768, 0)
        Case #OP_128x96
          Resolution$="-s sqcif "
          SetGadgetState(#OP_res1, 0)
          SetGadgetState(#OP_160x120, 0)
          SetGadgetState(#OP_320x240, 0)
          SetGadgetState(#OP_640x480, 0)
          SetGadgetState(#OP_800x600, 0)
          SetGadgetState(#OP_1024x768, 0)
          
        Case #OP_160x120
          Resolution$="-s qqvga "
          SetGadgetState(#OP_128x96, 0)
          SetGadgetState(#OP_res1, 0)
          SetGadgetState(#OP_320x240, 0)
          SetGadgetState(#OP_640x480, 0)
          SetGadgetState(#OP_800x600, 0)
          SetGadgetState(#OP_1024x768, 0)
        Case #OP_320x240
          Resolution$="-s qvga "
          SetGadgetState(#OP_128x96, 0)
          SetGadgetState(#OP_res1, 0)
          SetGadgetState(#OP_160x120, 0)
          SetGadgetState(#OP_640x480, 0)
          SetGadgetState(#OP_800x600, 0)
          SetGadgetState(#OP_1024x768, 0)
        Case #OP_640x480
          Resolution$="-s vga "
          SetGadgetState(#OP_128x96, 0)
          SetGadgetState(#OP_res1, 0)
          SetGadgetState(#OP_160x120, 0)
          SetGadgetState(#OP_320x240, 0)
          SetGadgetState(#OP_800x600, 0)
          SetGadgetState(#OP_1024x768, 0)
        Case #OP_800x600
          Resolution$="-s svga "
          SetGadgetState(#OP_128x96, 0)
          SetGadgetState(#OP_res1, 0)
          SetGadgetState(#OP_160x120, 0)
          SetGadgetState(#OP_320x240, 0)
          SetGadgetState(#OP_640x480, 0)
          SetGadgetState(#OP_1024x768, 0)
        Case #OP_1024x768
          Resolution$="-s qqvga "
          SetGadgetState(#OP_128x96, 0)
          SetGadgetState(#OP_res1, 0)
          SetGadgetState(#OP_160x120, 0)
          SetGadgetState(#OP_320x240, 0)
          SetGadgetState(#OP_640x480, 0)
          SetGadgetState(#OP_800x600, 0)
        Case #TXT_6
        Case #OP_Debit_Free
          debfree$=GetGadgetText(#OP_Debit_Free)
          Debit$="-b "+debfree$+esp$
        Case #OP_Debit1
          Debit$=""
          SetGadgetState(#OP_Debit_50, 0)
          SetGadgetState(#OP_Debit_100, 0)
          SetGadgetState(#OP_Debit_500, 0)
          SetGadgetText(#OP_Debit_Free,"")
        Case #OP_Debit_50
          Debit$="-b 50 "
          SetGadgetState(#OP_Debit1, 0)
          SetGadgetState(#OP_Debit_100, 0)
          SetGadgetState(#OP_Debit_500, 0)
          SetGadgetText(#OP_Debit_Free,"")
        Case #OP_Debit_100
          Debit$="-b 100 "
          SetGadgetState(#OP_Debit1, 0)
          SetGadgetState(#OP_Debit_50, 0)
          SetGadgetState(#OP_Debit_500, 0)
          SetGadgetText(#OP_Debit_Free,"")
        Case #OP_Debit_500
          Debit$="-b 500 "
          SetGadgetState(#OP_Debit1, 0)
          SetGadgetState(#OP_Debit_50, 0)
          SetGadgetState(#OP_Debit_100, 0)
          SetGadgetText(#OP_Debit_Free,"")
        Case #SON
          RezSon=GetGadgetState(#SON)
          If RezSon=1
            SetGadgetState(#SON,1)
            Son$="-an "
          Else
            SetGadgetState(#SON,0)
            Son$=""
          EndIf
      EndSelect
      ; ////////////////////////
    Case #PB_Event_CloseWindow
      EventWindow = EventWindow()
      Select EventWindow
        Case #WIN
          CloseWindow(#WIN)
          Break
      EndSelect
  EndSelect
ForEver
;
;}
vais faire dodo, demain boulot 10h,
a++
