FLV 2 mp3

Hier könnte Ihr Eure Projekte vorstellen und Mitstreiter suchen

FLV 2 mp3

Beitragvon 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!
Benutzeravatar
alf17
Foriker
 
Beiträge: 37
Registriert: Do 7. Jun 2007, 16:46

Re: FLV 2 mp3

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

Hi,

du hast uns nur das Pragramm gezeigt nicht aber die Form

mfg Yoda
yoda
Site Admin
 
Beiträge: 423
Registriert: Mo 2. Jan 2006, 22:35
Wohnort: bei Göttinge

Re: FLV 2 mp3

Beitragvon 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) 6521-mal betrachtet
flv2mp3_2.png
Wenn das Programm fertig ist, sieht es so aus!
flv2mp3_2.png (70.34 KiB) 6520-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!
Benutzeravatar
alf17
Foriker
 
Beiträge: 37
Registriert: Do 7. Jun 2007, 16:46

Re: FLV 2 mp3

Beitragvon 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
yoda
Site Admin
 
Beiträge: 423
Registriert: Mo 2. Jan 2006, 22:35
Wohnort: bei Göttinge

Re: FLV 2 mp3

Beitragvon 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!
Benutzeravatar
alf17
Foriker
 
Beiträge: 37
Registriert: Do 7. Jun 2007, 16:46

Re: FLV 2 mp3

Beitragvon 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
Strangebite
Foriker
 
Beiträge: 2
Registriert: So 19. Apr 2009, 18:48

Re: FLV 2 mp3

Beitragvon 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!
Benutzeravatar
alf17
Foriker
 
Beiträge: 37
Registriert: Do 7. Jun 2007, 16:46

Re: FLV 2 mp3

Beitragvon 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
Strangebite
Foriker
 
Beiträge: 2
Registriert: So 19. Apr 2009, 18:48

Re: FLV 2 mp3

Beitragvon 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) 6419-mal betrachtet
Nichts verhilft so sicher zu einer eigenen Meinung wie der konsequente Verzicht auf Sachkenntnis!
Benutzeravatar
alf17
Foriker
 
Beiträge: 37
Registriert: Do 7. Jun 2007, 16:46


Zurück zu Projekte

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron