FLV 2 mp3

Eigene oder Gemeinschaftsprojekte, Klassen, Module, Codeschnipsel, HowTos, ...
Antworten
Benutzeravatar
alf17
Foriker
Beiträge: 37
Registriert: Do 7. Jun 2007, 16:46
Kontaktdaten:

FLV 2 mp3

Beitrag von alf17 » Sa 24. Jan 2009, 23:21

Hallo,
ich habe mal 'ne grafische Oberfläche für ffmpeg zusammengebastelt, die das Umwandeln von *.flv in *.mp3 bedient.
Hier mal der Code:

Code: Alles auswählen

' Gambas class file

PUBLIC Inputflash AS String
PUBLIC Shellbefehl AS String
PUBLIC FlashDir AS String           'Verzeichnis des Flashs
PUBLIC DateiEinzeln AS String       'Dateiname mit Endung (Flash)
PUBLIC Flashname AS String          'Dateiname ohne Endung (Flash)
PUBLIC VerzZiel AS String           'Zielverzeichnis
PUBLIC DateiGroesseF AS Float       'Dateigröße der Ausgangadatei
PUBLIC mp3Name AS String            'mp3-Dateiname 
PUBLIC mp3Groesse AS Float          'mp3-Größe

PUBLIC SUB Form_Open()

  LabelFG.Visible = FALSE
  ButtonSave1.Enabled = FALSE
  Labelmp3Groesse.Visible = FALSE
  Labelmp3Zeit.Visible = FALSE
  PictureBox1.Visible = TRUE
  PictureBox2.Visible = FALSE
END

PUBLIC SUB ButtonOeffnen_Click() '.....flv-Video öffnen........................

  LabelFG.Visible = FALSE
  ButtonSave1.Enabled = FALSE
  Labelmp3Groesse.Visible = FALSE
  Labelmp3Zeit.Visible = FALSE

  
   'Filter für anzuzeigende Dateien
  Dialog.Filter = ["*.flv; *.FLV; *.Flv", "FlashVideo"]
  Dialog.Title = "Zu öffnende Datei :"
  IF Dialog.OpenFile() THEN RETURN
      Inputflash = Dialog.Path
    
     TextLabelIn.Text = Dialog.Path
     TextLabelIn.ToolTip = Inputflash
     
     'Flashdateigröße in bytes    
    WITH Stat(Inputflash)
      DateiGroesseF = Round(.Size / 1.024)
    END WITH 
    
    'Formatierung der Anzeige
     IF DateiGroesseF <= 1000 
    LabelFG.Text = "flv mit " & Format$(DateiGroesseF, "#.##") & " Bytes geladen"
   ELSE IF DateiGroesseF > 1000 AND DateiGroesseF <= 1000000
    LabelFG.Text = "flv mit " & Format$(DateiGroesseF / 1000, "#.##") & " kBytes geladen" 
   ELSE IF DateiGroesseF > 1000000 
    LabelFG.Text = "flv mit " & Format$(DateiGroesseF / 1000000, "#.##") & " MBytes geladen"
   ENDIF  
 
    PictureBox1.Visible = FALSE
    PictureBox2.Visible = FALSE
 
    LabelFG.Visible = TRUE
 
'Leseverzeichnis aus Einlese-Pfad
    FlashDir = Left$(Inputflash, RInStr(Inputflash, "/") - 1)

  'Einzeldateiname aus Einlese-Pfad extrahiert
    DateiEinzeln = Mid$(Inputflash, RInStr(Inputflash, "/") + 1)
        
  'Name des Flashvideos ohne Endung
    Flashname = Left$(DateiEinzeln, RInStr(DateiEinzeln, ".") - 1)
      
    LabelOut.Text = Flashname & ".mp3"
    LabelOut.ToolTip = Flashname & ".mp3"
    
    IF Inputflash = "" THEN 
         ButtonSave1.Enabled = FALSE
    ELSE  
          ButtonSave1.Enabled = TRUE
          VerzZiel = DirChooserSave.SelectedPath 
    ENDIF  
    
END

PUBLIC SUB DirChooserSave_Change()

  VerzZiel = DirChooserSave.SelectedPath
  TextBoxVerz.Text = VerzZiel
   Shellbefehl = "ffmpeg -i '" & Inputflash & "' -acodec mp3 -ac 2 -ab 128 -vn -y '" & VerzZiel & "'/'" & Flashname & "'.mp3"
    ButtonSave1.ToolTip = Shellbefehl
    
    'ButtonSave1.Enabled = TRUE
    Labelmp3Groesse.Visible = FALSE
    Labelmp3Zeit.Visible = FALSE
    TextBoxVerz.ToolTip = VerzZiel
    PictureBox1.Visible = FALSE
    PictureBox2.Visible = FALSE

END

PUBLIC SUB ButtonSave1_Click()

DIM Start AS Float           'Startzeit
DIM Ende AS Float            'Ende der Konvertierungzeit
DIM Dauer AS Float   

       Start = Timer             ' Anfangszeit festlegen      

 SHELL Shellbefehl WAIT 
 
       Ende = Timer
    Dauer = Ende - Start
 
   'Überprüfung, ob die Datei geschrieben wurde
            IF Exist(VerzZiel & "/" & Flashname & ".mp3") = TRUE THEN 
        
              'Bildgröße des neuen Bildes in bytes    
              WITH Stat(VerzZiel & "/" & Flashname & ".mp3")
              mp3Groesse = Round(.Size / 1.024)
              END WITH 
   
                  IF mp3Groesse <= 1000 
                  Labelmp3Groesse.Text = "mp3 mit " & mp3Groesse & " Bytes"
                   Labelmp3Zeit.Text = "in " & Format$(Dauer, "#.##") & " sec. geschrieben"
                  ELSE IF mp3Groesse > 1000 AND mp3Groesse <= 1000000
                  Labelmp3Groesse.Text = "mp3 mit " & Format$(mp3Groesse / 1000, "#.##") & " kBytes"
                   Labelmp3Zeit.Text = "in " & Format$(Dauer, "#.##") & " sec. geschrieben" 
                  ELSE IF mp3Groesse > 1000000 
                  Labelmp3Groesse.Text = "mp3 mit " & Format$(mp3Groesse / 1000000, "#.##") & " MBytes"
                   Labelmp3Zeit.Text = "in " & Format$(Dauer, "#.##") & " sec. geschrieben"
                  ENDIF  
           
                Labelmp3Groesse.Visible = TRUE
                Labelmp3Zeit.Visible = TRUE
           
            PictureBox1.Visible = FALSE
            PictureBox2.Visible = TRUE
            LabelFG.Visible = FALSE
            ELSE
            Message.Info("Sorry, das ist in die Hose gegangen") 
            ENDIF 

  
END

Als "Übender" bin ich für jede Kritik offen - auf alle Fälle funktioniert das Teil bei mir unter Linux Mint :) Nur ist halt die eigentliche graf. Oberfläche nach meiner Meinung gewöhnungsbedürftig - ich bin nun mal kein Designer - und so muß ich diese bestimmt noch oft ändern. Aber vielleicht hat ja einer eine gute Idee.

Viele Grüße Alf
Nichts verhilft so sicher zu einer eigenen Meinung wie der konsequente Verzicht auf Sachkenntnis!

yoda
Moderator
Beiträge: 442
Registriert: Mo 2. Jan 2006, 22:35
Wohnort: bei Göttinge
Kontaktdaten:

Re: FLV 2 mp3

Beitrag von yoda » Fr 13. Mär 2009, 18:42

Hi,

du hast uns nur das Pragramm gezeigt nicht aber die Form

mfg Yoda

Benutzeravatar
alf17
Foriker
Beiträge: 37
Registriert: Do 7. Jun 2007, 16:46
Kontaktdaten:

Re: FLV 2 mp3

Beitrag von alf17 » So 22. Mär 2009, 16:40

Hallo,
bin letztes Wochenende zu LinuxMint6 gewechselt - das Programm fand keinen mp3-Codierer in dieser Umgebung. Also läuft das Teil jetzt nicht mehr über ffmpeg, sondern über mplayer als Backend. Ist so auch deutlich schneller!! Hier der Code:

Code: Alles auswählen

' Gambas class file

PUBLIC Inputflash AS String
PUBLIC Shellbefehl AS String
PUBLIC FlashDir AS String           'Verzeichnis des Flashs
PUBLIC DateiEinzeln AS String       'Dateiname mit Endung (Flash)
PUBLIC Flashname AS String          'Dateiname ohne Endung (Flash)
PUBLIC VerzZiel AS String           'Zielverzeichnis
PUBLIC DateiGroesseF AS Float       'Dateigröße der Ausgangadatei
PUBLIC mp3Name AS String            'mp3-Dateiname 
PUBLIC mp3Groesse AS Float          'mp3-Größe
PUBLIC Start AS Float           'Startzeit
PUBLIC Ende AS Float            'Ende der Konvertierungzeit
PUBLIC Dauer AS Float 
PUBLIC Zeit AS Integer

PUBLIC SUB Form_Open()

  LabelFG.Visible = FALSE
  ButtonSave1.Enabled = FALSE
  Labelmp3Groesse.Visible = FALSE
  Labelmp3Zeit.Visible = FALSE
  PictureBox1.Visible = TRUE
  PictureBox2.Visible = FALSE
  
END

PUBLIC SUB ButtonOeffnen_Click() '.....flv-Video öffnen........................

  LabelFG.Visible = FALSE
  ButtonSave1.Enabled = FALSE
  Labelmp3Groesse.Visible = FALSE
  Labelmp3Zeit.Visible = FALSE

  
  
   'Filter für anzuzeigende Dateien
  Dialog.Filter = ["*.flv; *.FLV; *.Flv", "FlashVideo"]
  Dialog.Title = "Zu öffnende Datei :"
  IF Dialog.OpenFile() THEN RETURN
      Inputflash = Dialog.Path
    
     TextLabelIn.Text = Dialog.Path
     TextLabelIn.ToolTip = Inputflash
     
     'Flashdateigröße in bytes    
    WITH Stat(Inputflash)
      DateiGroesseF = Round(.Size / 1.024)
    END WITH 
    
    'Formatierung der Anzeige
     IF DateiGroesseF <= 1000 
    LabelFG.Text = "flv mit " & Format$(DateiGroesseF, "#.##") & " Bytes geladen"
   ELSE IF DateiGroesseF > 1000 AND DateiGroesseF <= 1000000
    LabelFG.Text = "flv mit " & Format$(DateiGroesseF / 1000, "#.##") & " kBytes geladen" 
   ELSE IF DateiGroesseF > 1000000 
    LabelFG.Text = "flv mit " & Format$(DateiGroesseF / 1000000, "#.##") & " MBytes geladen"
   ENDIF  
 
    PictureBox1.Visible = FALSE
    PictureBox2.Visible = FALSE
 
    LabelFG.Visible = TRUE
 
'Leseverzeichnis aus Einlese-Pfad
    FlashDir = Left$(Inputflash, RInStr(Inputflash, "/") - 1)

  'Einzeldateiname aus Einlese-Pfad extrahiert
    DateiEinzeln = Mid$(Inputflash, RInStr(Inputflash, "/") + 1)
        
  'Name des Flashvideos ohne Endung
    Flashname = Left$(DateiEinzeln, RInStr(DateiEinzeln, ".") - 1)
      
    LabelOut.Text = Flashname & ".mp3"
    LabelOut.ToolTip = Flashname & ".mp3"
    
    IF Inputflash = "" THEN 
         ButtonSave1.Enabled = FALSE
    ELSE  
          ButtonSave1.Enabled = TRUE
          VerzZiel = DirChooserSave.SelectedPath 
    ENDIF  
    
   ' Shellbefehl = "ffmpeg -i '" & Inputflash & "' -acodec mp3 -ac 2 -ab 128k -vn -y '" & VerzZiel & "'/'" & Flashname & "'.mp3"
    Shellbefehl = "mplayer -dumpaudio '" & Inputflash & "' -dumpfile '" & VerzZiel & "'/'" & Flashname & "'.mp3"
     ButtonSave1.ToolTip = Shellbefehl
END

PUBLIC SUB DirChooserSave_Change() '..................................................

       
  VerzZiel = DirChooserSave.SelectedPath
  TextBoxVerz.Text = VerzZiel
   'Shellbefehl = "ffmpeg -i '" & Inputflash & "' -acodec mp3 -ac 2 -ab 128k -vn -y '" & VerzZiel & "'/'" & Flashname & "'.mp3"
   Shellbefehl = "mplayer -dumpaudio '" & Inputflash & "' -dumpfile '" & VerzZiel & "'/'" & Flashname & "'.mp3"
    ButtonSave1.ToolTip = Shellbefehl
    
    'ButtonSave1.Enabled = TRUE
    Labelmp3Groesse.Visible = FALSE
    Labelmp3Zeit.Visible = FALSE
    TextBoxVerz.ToolTip = VerzZiel
    PictureBox1.Visible = FALSE
    PictureBox2.Visible = FALSE
     
END

PUBLIC SUB ButtonSave1_Click()  '..............................................

  Start = 0
  Dauer = 0
  Ende = 0
  Zeit = 0

   Labelmp3Groesse.Visible = FALSE
   Labelmp3Zeit.Visible = FALSE
   
       Start = Timer             ' Anfangszeit einlesen 

       SHELL Shellbefehl WAIT 
 
       Ende = Timer             'Endzeit einlesen
       
       Dauer = Ende - Start     'Dauer berechnen = Endzeit - Anfangszeit
 
   'Überprüfung, ob die Datei geschrieben wurde
            IF Exist(VerzZiel & "/" & Flashname & ".mp3") = TRUE THEN 
            
              ' Timer1.Enabled = FALSE   'Timer anhalten
              'Bildgröße des neuen Bildes in bytes    
              WITH Stat(VerzZiel & "/" & Flashname & ".mp3")
              mp3Groesse = Round(.Size / 1.024)
              END WITH 
   
                  IF mp3Groesse <= 1000 
                  'mp3-Größe anzeigen und formatieren
                  Labelmp3Groesse.Text = "mp3 mit " & mp3Groesse & " Bytes"
                  'Dauer der mp3-Erzeugung anzeigen
                   Labelmp3Zeit.Text = "in " & Format$(Dauer, "#.##") & " sec. geschrieben"
                  ELSE IF mp3Groesse > 1000 AND mp3Groesse <= 1000000
                  Labelmp3Groesse.Text = "mp3 mit " & Format$(mp3Groesse / 1000, "#.##") & " kBytes"
                   Labelmp3Zeit.Text = "in " & Format$(Dauer, "#.##") & " sec. geschrieben" 
                  ELSE IF mp3Groesse > 1000000 
                  Labelmp3Groesse.Text = "mp3 mit " & Format$(mp3Groesse / 1000000, "#.##") & " MBytes"
                   Labelmp3Zeit.Text = "in " & Format$(Dauer, "#.##") & " sec. geschrieben"
                  ENDIF  
           
                Labelmp3Groesse.Visible = TRUE
                Labelmp3Zeit.Visible = TRUE
           
                     
            PictureBox1.Visible = FALSE
            PictureBox2.Visible = TRUE
            LabelFG.Visible = FALSE
            ELSE
            Message.Info("Sorry, das ist in die Hose gegangen") 
            ENDIF
            
        
END
Nun möchte ich noch die Form zeigen:
flv2mp3_1.png
die Start-Ansicht
flv2mp3_1.png (80.35 KiB) 9455 mal betrachtet
flv2mp3_2.png
Wenn das Programm fertig ist, sieht es so aus!
flv2mp3_2.png (70.34 KiB) 9454 mal betrachtet
Es existiert auch ein *all.deb-Paket auf" http://www.ansichtssache-ev.de/?Willkom ... ein:Archiv " zum testen, natürlich ohne jede Gewähr. :)
Hallo Yoda, war mit der "fehlenden Form" ein Screenshot gemeint?

Viele Grüße Alf
Nichts verhilft so sicher zu einer eigenen Meinung wie der konsequente Verzicht auf Sachkenntnis!

yoda
Moderator
Beiträge: 442
Registriert: Mo 2. Jan 2006, 22:35
Wohnort: bei Göttinge
Kontaktdaten:

Re: FLV 2 mp3

Beitrag von yoda » So 22. Mär 2009, 17:40

Hi,
Hallo Yoda, war mit der "fehlenden Form" ein Screenshot gemeint?
Ja Screenshot oder Code damit man es laufen lassen kann. Die Oberfläche macht einen guten Eindruck.
Also läuft das Teil jetzt nicht mehr über ffmpeg, sondern über mplayer als Backend.
Hm... ich wusste gar nicht das der das kann.

Ich wollte mal so etwas ähnliches für youtube machen aber ich bin irgendwie von abgekommen.

mfg Yoda

Benutzeravatar
alf17
Foriker
Beiträge: 37
Registriert: Do 7. Jun 2007, 16:46
Kontaktdaten:

Re: FLV 2 mp3

Beitrag von alf17 » Mo 23. Mär 2009, 18:15

Hallo,
Hintergrund für das Programm ist eigentlich nur die Faulheit. Wer will schon immer den ganzen Code in die Konsole tippen! Aber, funktioniert das Teil bei euch?

Viele Grüße Alf
Nichts verhilft so sicher zu einer eigenen Meinung wie der konsequente Verzicht auf Sachkenntnis!

Strangebite
Foriker
Beiträge: 2
Registriert: So 19. Apr 2009, 18:48
Kontaktdaten:

Re: FLV 2 mp3

Beitrag von Strangebite » So 19. Apr 2009, 19:10

Hallo Alf,

sehr nettes Tool, dass einwandfrei läuft und schon ein paar FLVs umwandeln durfte :mrgreen:

Die Oberfläche ist übersichtlich und funktional, lässt sich an einem Punkt aber noch verbessern:

möchte man mehrere FLV-Dateien umwandeln, die im selben Verzeichnis liegen, muss man dieses jedesmal auswählen, da wäre es schön wenn sich dein Programm merken würde in welchem Verzeichnis es zuletzt war oder es die Möglichkeit bieten würde direkt mehrere Dateien auszuwählen...
oder vll. beides :wink:

Ansonsten wird bei dem deb-Paket mplayer nicht berücksichtigt, von daher wäre eine aussagekräftigere Fehlermeldung nicht schlecht, damit die Nutzer wissen warum die Umwandlung nicht geklappt hat.

Gruß
Bite

Benutzeravatar
alf17
Foriker
Beiträge: 37
Registriert: Do 7. Jun 2007, 16:46
Kontaktdaten:

Re: FLV 2 mp3

Beitrag von alf17 » Mo 20. Apr 2009, 12:17

Hallo,
danke für den Tip. Das Programm merkt sich jetzt das letzte Verzeichnis - allerdings habe ich jetzt so auf die Schnelle noch keine Technologie, so daß mehrere Dateien nacheinander auf einen Rutsch umgewandelt werden. Am Anfang wird eine kurze Message eingeblendet, das mplayer installiert sein muß.

Code: Alles auswählen

' Gambas class file

PUBLIC Inputflash AS String
PUBLIC Shellbefehl AS String
PUBLIC FlashDir AS String           'Verzeichnis des Flashs
PUBLIC DateiEinzeln AS String       'Dateiname mit Endung (Flash)
PUBLIC Flashname AS String          'Dateiname ohne Endung (Flash)
PUBLIC VerzZiel AS String           'Zielverzeichnis
PUBLIC DateiGroesseF AS Float       'Dateigröße der Ausgangadatei
PUBLIC mp3Name AS String            'mp3-Dateiname 
PUBLIC mp3Groesse AS Float          'mp3-Größe
PUBLIC Start AS Float           'Startzeit
PUBLIC Ende AS Float            'Ende der Konvertierungzeit
PUBLIC Dauer AS Float 
PUBLIC Zeit AS Integer

PUBLIC SUB Form_Open()

  LabelFG.Visible = FALSE
  ButtonSave1.Enabled = FALSE
  Labelmp3Groesse.Visible = FALSE
  Labelmp3Zeit.Visible = FALSE
  PictureBox1.Visible = TRUE
  PictureBox2.Visible = FALSE
  Dialog.Path = User.home '.......direkter Zugriff aufs User-Verzeichnis
   Message.Info("mplayer muss installiert sein, sonst geht's nicht", "OK")
  
END

PUBLIC SUB ButtonOeffnen_Click() '.....flv-Video öffnen........................

  LabelFG.Visible = FALSE
  ButtonSave1.Enabled = FALSE
  Labelmp3Groesse.Visible = FALSE
  Labelmp3Zeit.Visible = FALSE

  
  
   'Filter für anzuzeigende Dateien
  Dialog.Filter = ["*.flv; *.FLV; *.Flv", "FlashVideo"]
  Dialog.Title = "Zu öffnende Datei :"
  'Dialog.Path = User.home '.......direkter Zugriff aufs User-Verzeichnis
  
  IF Dialog.OpenFile() THEN RETURN
      Inputflash = Dialog.Path
    
     TextLabelIn.Text = Dialog.Path
     TextLabelIn.ToolTip = Inputflash
     
     'Flashdateigröße in bytes    
    WITH Stat(Inputflash)
      DateiGroesseF = Round(.Size / 1.024)
    END WITH 
    
    'Formatierung der Anzeige
     IF DateiGroesseF <= 1000 
    LabelFG.Text = "flv mit " & Format$(DateiGroesseF, "#.##") & " Bytes geladen"
   ELSE IF DateiGroesseF > 1000 AND DateiGroesseF <= 1000000
    LabelFG.Text = "flv mit " & Format$(DateiGroesseF / 1000, "#.##") & " kBytes geladen" 
   ELSE IF DateiGroesseF > 1000000 
    LabelFG.Text = "flv mit " & Format$(DateiGroesseF / 1000000, "#.##") & " MBytes geladen"
   ENDIF  
 
    PictureBox1.Visible = FALSE
    PictureBox2.Visible = FALSE
 
    LabelFG.Visible = TRUE
 
'Leseverzeichnis aus Einlese-Pfad
    FlashDir = Left$(Inputflash, RInStr(Inputflash, "/") - 1)

  'Einzeldateiname aus Einlese-Pfad extrahiert
    DateiEinzeln = Mid$(Inputflash, RInStr(Inputflash, "/") + 1)
        
  'Name des Flashvideos ohne Endung
    Flashname = Left$(DateiEinzeln, RInStr(DateiEinzeln, ".") - 1)
      
    LabelOut.Text = Flashname & ".mp3"
    LabelOut.ToolTip = Flashname & ".mp3"
    
    IF Inputflash = "" THEN 
         ButtonSave1.Enabled = FALSE
    ELSE  
          ButtonSave1.Enabled = TRUE
          VerzZiel = DirChooserSave.SelectedPath 
    ENDIF  
    
   ' Shellbefehl = "ffmpeg -i '" & Inputflash & "' -acodec mp3 -ac 2 -ab 128k -vn -y '" & VerzZiel & "'/'" & Flashname & "'.mp3"
    Shellbefehl = "mplayer -dumpaudio '" & Inputflash & "' -dumpfile '" & VerzZiel & "'/'" & Flashname & "'.mp3"
     ButtonSave1.ToolTip = Shellbefehl
     
     Dialog.Path = TextLabelIn.Text '.......direkter Zugriff aufs letzte Verzeichnis
     
END

PUBLIC SUB DirChooserSave_Change() '..................................................

       
  VerzZiel = DirChooserSave.SelectedPath
  TextBoxVerz.Text = VerzZiel
   'Shellbefehl = "ffmpeg -i '" & Inputflash & "' -acodec mp3 -ac 2 -ab 128k -vn -y '" & VerzZiel & "'/'" & Flashname & "'.mp3"
   Shellbefehl = "mplayer -dumpaudio '" & Inputflash & "' -dumpfile '" & VerzZiel & "'/'" & Flashname & "'.mp3"
    ButtonSave1.ToolTip = Shellbefehl
    
    'ButtonSave1.Enabled = TRUE
    Labelmp3Groesse.Visible = FALSE
    Labelmp3Zeit.Visible = FALSE
    TextBoxVerz.ToolTip = VerzZiel
    PictureBox1.Visible = FALSE
    PictureBox2.Visible = FALSE
     
END

PUBLIC SUB ButtonSave1_Click()  '..............................................

  Start = 0
  Dauer = 0
  Ende = 0
  Zeit = 0

   Labelmp3Groesse.Visible = FALSE
   Labelmp3Zeit.Visible = FALSE
   
       Start = Timer             ' Anfangszeit einlesen 

       SHELL Shellbefehl WAIT 
 
       Ende = Timer             'Endzeit einlesen
       
       Dauer = Ende - Start     'Dauer berechnen = Endzeit - Anfangszeit
 
   'Überprüfung, ob die Datei geschrieben wurde
            IF Exist(VerzZiel & "/" & Flashname & ".mp3") = TRUE THEN 
            
              ' Timer1.Enabled = FALSE   'Timer anhalten
              'Bildgröße des neuen Bildes in bytes    
              WITH Stat(VerzZiel & "/" & Flashname & ".mp3")
              mp3Groesse = Round(.Size / 1.024)
              END WITH 
   
                  IF mp3Groesse <= 1000 
                  'mp3-Größe anzeigen und formatieren
                  Labelmp3Groesse.Text = "mp3 mit " & mp3Groesse & " Bytes"
                  'Dauer der mp3-Erzeugung anzeigen
                   Labelmp3Zeit.Text = "in " & Format$(Dauer, "#.##") & " sec. geschrieben"
                  ELSE IF mp3Groesse > 1000 AND mp3Groesse <= 1000000
                  Labelmp3Groesse.Text = "mp3 mit " & Format$(mp3Groesse / 1000, "#.##") & " kBytes"
                   Labelmp3Zeit.Text = "in " & Format$(Dauer, "#.##") & " sec. geschrieben" 
                  ELSE IF mp3Groesse > 1000000 
                  Labelmp3Groesse.Text = "mp3 mit " & Format$(mp3Groesse / 1000000, "#.##") & " MBytes"
                   Labelmp3Zeit.Text = "in " & Format$(Dauer, "#.##") & " sec. geschrieben"
                  ENDIF  
           
                Labelmp3Groesse.Visible = TRUE
                Labelmp3Zeit.Visible = TRUE
           
                     
            PictureBox1.Visible = FALSE
            PictureBox2.Visible = TRUE
            LabelFG.Visible = FALSE
            ELSE
            Message.Info("Sorry, das ist in die Hose gegangen") 
            ENDIF
              
END

Im Archiv der ansichtssachew-ev.de - Seite lege ich das fertige Paket für Ubuntu/Linux Mint in der neuen Version ab.

http://www.ansichtssache-ev.de/?Willkom ... ein:Archiv

Viele Grüße Alf
Nichts verhilft so sicher zu einer eigenen Meinung wie der konsequente Verzicht auf Sachkenntnis!

Strangebite
Foriker
Beiträge: 2
Registriert: So 19. Apr 2009, 18:48
Kontaktdaten:

Re: FLV 2 mp3

Beitrag von Strangebite » Mi 22. Apr 2009, 19:19

Hallo,

mehrere Dateien können mit Dialog.OpenFile(TRUE) ausgewählt werden und stehen im Programm über Dialog.Paths zur Verfügung.

Paths liefert hierbei ein Array mit den Dateinamen zurück, auf das man bequem per Schleife zugreifen kann.

Beispiel:

Code: Alles auswählen

  DIM pfade AS String[]
  DIM index AS Integer
  IF Dialog.OpenFile(TRUE) THEN RETURN 
  pfade = Dialog.Paths
  FOR index = 0 TO pfade.Length - 1 STEP 1
    ' Funktionslogik pro Datei z.B.:
    DateiEinzeln = Mid$(Inputflash, RInStr(pfade[index], "/") + 1)
  NEXT
Gruß
Bite

Benutzeravatar
alf17
Foriker
Beiträge: 37
Registriert: Do 7. Jun 2007, 16:46
Kontaktdaten:

Re: FLV 2 mp3

Beitrag von alf17 » Fr 24. Apr 2009, 17:14

Hallo,
da meine Urlaubsreise leider ins Wasser gefallen ist, war wieder etwas Zeit zum Schreiben von Zeilen. Das Programm sollte nun auch ganze Verzeichnisse voller flv's in einem Rutsch umwandeln können. Sicher ist das ganze wie immer hakelig programmiert und entbehrt jeder Schönheit - aber bei mir läuft es ganz gut.

Code: Alles auswählen

' Gambas class file

PUBLIC Inputflash AS String         'Name der flv-Datei
PUBLIC Shellbefehl AS String        'an die Shell zu übergebender String
PUBLIC FlashDir AS String           'Verzeichnis des Flashs
PUBLIC DateiEinzeln AS String       'Dateiname mit Endung (Flash)
PUBLIC Flashname AS String          'Dateiname ohne Endung (Flash)
PUBLIC VerzZiel AS String           'Zielverzeichnis
PUBLIC DateiGroesseF AS Float       'Dateigröße der Ausgangadatei
PUBLIC mp3Name AS String            'mp3-Dateiname 
PUBLIC mp3Groesse AS Float          'mp3-Größe
PUBLIC Start AS Float               'Startzeit
PUBLIC Ende AS Float                'Ende der Konvertierungzeit
PUBLIC Dauer AS Float               'Konvertierungsdauer
PUBLIC Ladeverzeichnis AS String    'Verzeichnis mit den flash-Videos
PUBLIC VerzDateien AS String        'flv-Dateien im gelesenen Verzeichnis
PUBLIC arrayFLV AS NEW String[]     'Array der gelesenen Dateien im Verzeichnis
PUBLIC varEinzel AS Boolean         'Auswahl-Bit Einzel oder Verzeichnis
PUBLIC AnzahlFLV AS Integer         'identisch mit x als Anzahl der flv-Dateien im Array


PUBLIC SUB Form_Open() '............Programm-Start-Einstellungen.............

  LabelFG.Visible = FALSE
  ButtonSave1.Enabled = FALSE
  Labelmp3Groesse.Visible = FALSE
  Labelmp3Zeit.Visible = FALSE
  PictureBox1.Visible = TRUE
  PictureBox2.Visible = FALSE
  TextAreaVerz.Visible = FALSE
  DirChooserSave.Enabled = FALSE
  
  
  Dialog.Path = User.home '.......direkter Zugriff aufs User-Verzeichnis
  Message.Info("mplayer muss installiert sein, sonst geht's nicht", "OK")
  
END

PUBLIC SUB ButtonOeffnen_Click() '.....flv-Video öffnen..Einzeldatei......................

  LabelFG.Visible = FALSE
  ButtonSave1.Enabled = FALSE
  Labelmp3Groesse.Visible = FALSE
  Labelmp3Zeit.Visible = FALSE
  TextAreaVerz.Visible = FALSE
  
  
  varEinzel = TRUE    'Auswahl für Einzeldatei getroffen

   'Filter für anzuzeigende Dateien
  Dialog.Filter = ["*.flv; *.FLV; *.Flv", "FlashVideo"]
  Dialog.Title = "Zu öffnende Einzeldatei :"
  
  IF Dialog.OpenFile() THEN RETURN
      Inputflash = Dialog.Path
    
     TextLabelIn.Text = Dialog.Path
     TextLabelIn.ToolTip = Inputflash
     
     'Flashdateigröße in bytes    
    WITH Stat(Inputflash)
      DateiGroesseF = Round(.Size / 1.024)
    END WITH 
    
    'Formatierung der Anzeige
     IF DateiGroesseF <= 1000 
    LabelFG.Text = "flv mit " & Format$(DateiGroesseF, "#.##") & " Bytes geladen"
   ELSE IF DateiGroesseF > 1000 AND DateiGroesseF <= 1000000
    LabelFG.Text = "flv mit " & Format$(DateiGroesseF / 1000, "#.##") & " kBytes geladen" 
   ELSE IF DateiGroesseF > 1000000 
    LabelFG.Text = "flv mit " & Format$(DateiGroesseF / 1000000, "#.##") & " MBytes geladen"
   ENDIF  
 
    PictureBox1.Visible = FALSE
    PictureBox2.Visible = FALSE
 
    LabelFG.Visible = TRUE
 
'Leseverzeichnis aus Einlese-Pfad
    FlashDir = Left$(Inputflash, RInStr(Inputflash, "/") - 1)

  'Einzeldateiname aus Einlese-Pfad extrahiert
    DateiEinzeln = Mid$(Inputflash, RInStr(Inputflash, "/") + 1)
        
  'Name des Flashvideos ohne Endung
    Flashname = Left$(DateiEinzeln, RInStr(DateiEinzeln, ".") - 1)
      
    LabelOut.Text = Flashname & ".mp3"
    LabelOut.ToolTip = Flashname & ".mp3"
    
    IF Inputflash = "" THEN 
         ButtonSave1.Enabled = FALSE
    ELSE  
          ButtonSave1.Enabled = TRUE
          VerzZiel = DirChooserSave.SelectedPath 
    ENDIF  
    
   ' Shellbefehl = "ffmpeg -i '" & Inputflash & "' -acodec mp3 -ac 2 -ab 128k -vn -y '" & VerzZiel & "'/'" & Flashname & "'.mp3"
    Shellbefehl = "mplayer -dumpaudio '" & Inputflash & "' -dumpfile '" & VerzZiel & "'/'" & Flashname & "'.mp3"
     ButtonSave1.ToolTip = Shellbefehl
     
     Dialog.Path = TextLabelIn.Text '.......direkter Zugriff aufs letzte Verzeichnis
     
     'Erlauben der Zielauswahl
     DirChooserSave.Enabled = TRUE 
     
END

PUBLIC SUB ButtonVerz_Click() ':::::::::::::::Verzeichnis einlesen.......................

DIM Files AS String[]         'Sammlung der erlaubten Dateiendungen
DIM x AS Integer              'Dateienanzahl im Verzeichnis +1
DIM FLVIndex AS Integer          'Index-Nummer der flv-Datei aus arrayFLV

  
  LabelFG.Visible = FALSE
  ButtonSave1.Enabled = FALSE
  Labelmp3Groesse.Visible = FALSE
  Labelmp3Zeit.Visible = FALSE
  
  varEinzel = FALSE   'Auswahl für Verzeichnis getroffen
  
  VerzDateien = ""
  Files = ""
  TextAreaVerz.Text = ""
  x = 0
  FLVIndex = 0
  AnzahlFLV = 0
  
  Dialog.Path = User.home '.......direkter Zugriff aufs User-Verzeichnis
  Dialog.Title = "Dieses Verzeichnis komplett umwandeln :"

IF Dialog.SelectDirectory() THEN RETURN   'Stringvariable Ladeverzeichnis -> zu lesendes Verzeichnis
    Ladeverzeichnis = Dialog.Path
    
    TextLabelIn.Text = Ladeverzeichnis 
    TextLabelIn.ToolTip = "Alles aus dem Verzeichnis " & Ladeverzeichnis & " umwandeln!"
    
    PictureBox1.Visible = FALSE
    PictureBox2.Visible = FALSE
    TextAreaVerz.Visible = TRUE
    
    'Filter für mögliche Flash-Video-Endungen werden in eine Endungssammlung geschrieben
      Files = Dir(Ladeverzeichnis, "*.flv")
'Achtung, hier ist vermutlich GROSS/kleinschreibung nicht wichtig, daher nächste Zeilen auskommentiert
      'Files.Insert(Dir(Ladeverzeichnis, "*.FLV"))
      'Files.Insert(Dir(Ladeverzeichnis, "*.Flv"))
      'Files.Insert(Dir(Ladeverzeichnis, "*.FLv"))
      
    'flv-Dateien-Namen aus Verzeichnis Ladeverzeichnis einlesen  
     FOR EACH VerzDateien IN Files 
        'PUBLIC VerzDateien AS String............flv-Dateien im gelesenen Verzeichnis 
        IF VerzDateien = "" THEN         
            Message.Info("Nichts Lesbares im Verzeichnis", "OK")
        ELSE  
            arrayFLV.Add(VerzDateien)               'flv-Dateien Array füllen 
        ENDIF 
     NEXT 
    
       x = arrayFLV.Max + 1           'Definition der Anzahl der flv-Dateien
    
      TextAreaVerz.Text = x & " lesbare Dateien" & Chr(10)
      
      FOR FLVIndex = 1 TO x  '....Verzeichnisinhalt anzeigen...
          TextAreaVerz.Text = TextAreaVerz.Text & arrayFLV[FLVIndex - 1] & Chr(10)
      NEXT 

     'Erlauben der Zielauswahl
     DirChooserSave.Enabled = TRUE 
     
     AnzahlFLV = x
    
END

PUBLIC SUB DirChooserSave_Change() '..................................................

  IF varEinzel = TRUE THEN  '....Einzeldatei...
     
  VerzZiel = DirChooserSave.SelectedPath
  TextBoxVerz.Text = VerzZiel
   'Shellbefehl = "ffmpeg -i '" & Inputflash & "' -acodec mp3 -ac 2 -ab 128k -vn -y '" & VerzZiel & "'/'" & Flashname & "'.mp3"
   Shellbefehl = "mplayer -dumpaudio '" & Inputflash & "' -dumpfile '" & VerzZiel & "'/'" & Flashname & "'.mp3"
   ButtonSave1.ToolTip = Shellbefehl
    
    'ButtonSave1.Enabled = TRUE
    Labelmp3Groesse.Visible = FALSE
    Labelmp3Zeit.Visible = FALSE
    TextBoxVerz.ToolTip = VerzZiel
    PictureBox1.Visible = FALSE
    PictureBox2.Visible = FALSE
    
    ELSE '...Verzeichnis.wurde eingelesen....
      
          IF VerzDateien = "" THEN 
            ButtonSave1.Enabled = FALSE
          ELSE  
              ButtonSave1.Enabled = TRUE
              VerzZiel = DirChooserSave.SelectedPath
              TextBoxVerz.Text = VerzZiel
              LabelOut.Text = "gleich: " & AnzahlFLV & " mp3-Dateien in :"
          ENDIF 
      
    ENDIF 
     
END

PUBLIC SUB ButtonSave1_Click()  '.............Wir speichern die mp3.................................

DIM FLVIndex AS Integer           'Index-Nummer der flv-Datei aus arrayFLV

IF varEinzel = TRUE THEN '........Einzeldatei..............

  Start = 0
  Dauer = 0
  Ende = 0

   Labelmp3Groesse.Visible = FALSE
   Labelmp3Zeit.Visible = FALSE
   
       Start = Timer             ' Anfangszeit einlesen 

       SHELL Shellbefehl WAIT 
 
       Ende = Timer             'Endzeit einlesen
       Dauer = Ende - Start     'Dauer berechnen = Endzeit - Anfangszeit
 
   'Überprüfung, ob die Datei geschrieben wurde
            IF Exist(VerzZiel & "/" & Flashname & ".mp3") = TRUE THEN 
            
              ' Timer1.Enabled = FALSE   'Timer anhalten
              'Bildgröße des neuen Bildes in bytes    
              WITH Stat(VerzZiel & "/" & Flashname & ".mp3")
              mp3Groesse = Round(.Size / 1.024)
              END WITH 
   
                  IF mp3Groesse <= 1000 
                  'mp3-Größe anzeigen und formatieren
                  Labelmp3Groesse.Text = "mp3 mit " & mp3Groesse & " Bytes"
                  'Dauer der mp3-Erzeugung anzeigen
                   Labelmp3Zeit.Text = "in " & Format$(Dauer, "#.##") & " sec. geschrieben"
                  ELSE IF mp3Groesse > 1000 AND mp3Groesse <= 1000000
                  Labelmp3Groesse.Text = "mp3 mit " & Format$(mp3Groesse / 1000, "#.##") & " kBytes"
                   Labelmp3Zeit.Text = "in " & Format$(Dauer, "#.##") & " sec. geschrieben" 
                  ELSE IF mp3Groesse > 1000000 
                  Labelmp3Groesse.Text = "mp3 mit " & Format$(mp3Groesse / 1000000, "#.##") & " MBytes"
                   Labelmp3Zeit.Text = "in " & Format$(Dauer, "#.##") & " sec. geschrieben"
                  ENDIF  
           
                Labelmp3Groesse.Visible = TRUE
                Labelmp3Zeit.Visible = TRUE
           
                     
            PictureBox1.Visible = FALSE
            PictureBox2.Visible = TRUE
            LabelFG.Visible = FALSE
            ELSE
            Message.Info("Sorry, das ist in die Hose gegangen") 
            ENDIF

ELSE    '....ab hier alles für Verzeichnis-Auswahl............. 

'PUBLIC AnzahlFLV AS Integer.........identisch mit x als Anzahl der flv-Dateien im Array
'DIM FLVIndex AS Integer.............Index-Nummer der flv-Datei aus arrayFLV

  Start = 0
  Dauer = 0
  Ende = 0

   Labelmp3Groesse.Visible = FALSE
   Labelmp3Zeit.Visible = FALSE
   
    Start = Timer             ' Anfangszeit einlesen 
      FOR FLVIndex = 1 TO AnzahlFLV  '....der Reihe nach jede Datei umrechnen...
          'TextAreaVerz.Text = TextAreaVerz.Text & arrayFLV[FLVIndex - 1]
           Shellbefehl = "mplayer -dumpaudio '" & Ladeverzeichnis & "/" & arrayFLV[FLVIndex - 1] & "' -dumpfile '" & VerzZiel & "'/'" & arrayFLV[FLVIndex - 1] & "'.mp3" 
           SHELL Shellbefehl WAIT 
      NEXT       
    Ende = Timer             'Endzeit einlesen
    Dauer = Ende - Start     'Dauer berechnen = Endzeit - Anfangszeit
    
    Labelmp3Groesse.Visible = TRUE
    Labelmp3Zeit.Visible = TRUE
    
     Labelmp3Groesse.Text = AnzahlFLV & " mp3's nach " & VerzZiel
     Labelmp3Zeit.Text = "in " & Format$(Dauer, "#.##") & " sec. geschrieben"

ENDIF
        
END

Die fertige .deb lade ich dann wieder auf http://www.ansichtssache-ev.de/?Willkom ... ein:Archiv hoch.

Viele Grüße Alf
flv2mp3.jpeg
flv2mp3.jpeg (32.59 KiB) 9353 mal betrachtet
Nichts verhilft so sicher zu einer eigenen Meinung wie der konsequente Verzicht auf Sachkenntnis!

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste