script um oggs nach mp3 zu wandeln
script um oggs nach mp3 zu wandeln
ich moechte ein einfaches script schreiben, dass mir oggs nach mp3's wandeln kann.
idealerweise soll das script pruefen, ob die korrespondierende mp3 datei bereits besteht damit z.b. nach einem abruch weitergemacht werden kann.
als eingabeparameter soll entweder eine wildcard verwendet werden, oder gezielt eine datei.
zum konvertieren habe ich lame und ogg123 auserkoren.
da ogg123 scheinbar nicht nach stdout ausgeben kann, verwende ich keine pipe sondern eine datei temp.out
die titel koennen blanks beeinhalten, deshalb die ''
das folgende script funktioniert soweit. (allerdings gehen die mp3 tags verloren )
#!/bin/bash
ogg123 -d wav -f temp.out 'my music track.ogg'
lame -h -b 192 temp.out 'my music track.mp3'
nun kommt meine frage: wie bekomme ich das automatisiert hin?
beispiel:
in /myoggs/ liegen 100 *.ogg dateien die ich automatisiert in 100 *.mp3 dateien konvertieren moechte.
sollten bereits 10 dateien konvertiert worden sein, soll das script die bereits konvertierten daten ignorieren und die restlichen 90 bearbeiten.
die dateinamen koennen auch im namen den '.' verwenden: beispiel: my.music.ogg
mit $1 etc. bekomme ich immer den ganzen namen, daher geht das folgende nicht:
#!/bin/bash
ogg123 -d wav -f temp.out $1
lame -h -b 192 temp.out $1
die originaldatei wuerde ueberschrieben und ausserdem wuerde nur eine datei bearbeitet.
p.s. spaeter mochte ich mp3's neu encoden koennen, z.b. von bitrate a auf bitrate b, und von vbr auf cbr.
idealerweise soll das script pruefen, ob die korrespondierende mp3 datei bereits besteht damit z.b. nach einem abruch weitergemacht werden kann.
als eingabeparameter soll entweder eine wildcard verwendet werden, oder gezielt eine datei.
zum konvertieren habe ich lame und ogg123 auserkoren.
da ogg123 scheinbar nicht nach stdout ausgeben kann, verwende ich keine pipe sondern eine datei temp.out
die titel koennen blanks beeinhalten, deshalb die ''
das folgende script funktioniert soweit. (allerdings gehen die mp3 tags verloren )
#!/bin/bash
ogg123 -d wav -f temp.out 'my music track.ogg'
lame -h -b 192 temp.out 'my music track.mp3'
nun kommt meine frage: wie bekomme ich das automatisiert hin?
beispiel:
in /myoggs/ liegen 100 *.ogg dateien die ich automatisiert in 100 *.mp3 dateien konvertieren moechte.
sollten bereits 10 dateien konvertiert worden sein, soll das script die bereits konvertierten daten ignorieren und die restlichen 90 bearbeiten.
die dateinamen koennen auch im namen den '.' verwenden: beispiel: my.music.ogg
mit $1 etc. bekomme ich immer den ganzen namen, daher geht das folgende nicht:
#!/bin/bash
ogg123 -d wav -f temp.out $1
lame -h -b 192 temp.out $1
die originaldatei wuerde ueberschrieben und ausserdem wuerde nur eine datei bearbeitet.
p.s. spaeter mochte ich mp3's neu encoden koennen, z.b. von bitrate a auf bitrate b, und von vbr auf cbr.
Debian SID
Hi!
$ python convert.py ~/myoggs
Bye
g-henna
PS. Ja, ich fühl mich schlecht dabei, jemandem dabei zu helfen, oggs in mp3s zu konvertieren *grin*
Code: Alles auswählen
#!/usr/bin/python
import os, sys, glob
for file in glob.glob(sys.argv[1]):
if os.path.exists(file) and os.path.isfile(file):
os.system('ogg123 -d wav -f temp.out "' + file + '"')
newfile = os.path.splitext(file)[0]+".mp3"
# jetzt stimmt's
os.system('lame -h -b 192 temp.out "' + newfile + '"')
Bye
g-henna
PS. Ja, ich fühl mich schlecht dabei, jemandem dabei zu helfen, oggs in mp3s zu konvertieren *grin*
Zuletzt geändert von g-henna am 27.02.2004 19:16:37, insgesamt 1-mal geändert.
follow the penguin...
Leider muss ich solch eine Grausamkeit auch manchmal machen, es gibt nämlich in D noch keinen Vorbis-USB-Stick zu kaufeng-henna hat geschrieben:PS. Ja, ich fühl mich schlecht dabei, jemandem dabei zu helfen, oggs in mp3s zu konvertieren *grin*
BTW: Dein Programm scheint nicht ganz zu stimmen: Die Endung ".ogg" wird nicht in ".mp3" umgewandelt.
Desweiteren sollte man lame immer mit "--preset standard" aufrufen, damit ist die Datei fast so gut wie ein Vorbis file, und auch nur unwesentlich größer als ein 192kBit CBR-Mp3.
(evtl. heisst es auch nur "-preset" oder "standart", das kann ich mir nie merken)
Auf jeden Fall hier der Code in bash (normale shell geht nicht, wegen der ${a/b/c}-Anweisung!
Code: Alles auswählen
#!/bin/bash
for file in $1; do
if [ -e ${file/.ogg/.mp3} ]; then
ogg123 -d wav -f tmp.out $file
lame --preset standard tmp.out ${file/.ogg/.mp3}
fi
done
Code: Alles auswählen
lame --preset standard $file ${file/.ogg/.mp3}
- Mr_Snede
- Beiträge: 2323
- Registriert: 08.07.2003 13:48:49
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Ruhrpott
Hallo Belgarad,
anbei ein kleines Skript um bestehende mp3 (für dich natürlich ogg) in mp3 mit niedriger Bitrate, cbr und fester Samplingfequenz von 44.1 KHz umzuwandeln.
Habe für dich -- ogginput anstatt meinem --mp3input eingefügt und für die Ausgabedatei die Dateiendung .mp3 eingefügt.
Mit -q 9 habe ich natürlich viel Qualität verloren, aber im mobilen Einsatz ist es nicht negativ aufgefallen.
Dafür dauert das konvertieren nicht so lange.
Ich habe das Skript nicht mit --ogginput nicht getestet, habe nur mp3's.
Leider fragt das Skript nicht nach schon bestehenden Dateien im Ausgangsordner oder ob im Eingangsordner andere Dateien als *.ogg liegen.
Ich habe vor dieses Skript noch weiter auszubauen, um zB. oben genannte Mängel auszuräumen.
Wenn du Interesse hast können wir uns gerne zusammentun.
ps: bin noch grün hinter den Ohren, was das Skripten/Programmieren angeht. Bin also für jede Rückmeldung zu meinem Code dankbar.
g-henna:
gefunden bei: http://www.mp3dev.org/mp3/USAGE
Bis denn Sebastian
anbei ein kleines Skript um bestehende mp3 (für dich natürlich ogg) in mp3 mit niedriger Bitrate, cbr und fester Samplingfequenz von 44.1 KHz umzuwandeln.
Habe für dich -- ogginput anstatt meinem --mp3input eingefügt und für die Ausgabedatei die Dateiendung .mp3 eingefügt.
Mit -q 9 habe ich natürlich viel Qualität verloren, aber im mobilen Einsatz ist es nicht negativ aufgefallen.
Dafür dauert das konvertieren nicht so lange.
Ich habe das Skript nicht mit --ogginput nicht getestet, habe nur mp3's.
Leider fragt das Skript nicht nach schon bestehenden Dateien im Ausgangsordner oder ob im Eingangsordner andere Dateien als *.ogg liegen.
Ich habe vor dieses Skript noch weiter auszubauen, um zB. oben genannte Mängel auszuräumen.
Wenn du Interesse hast können wir uns gerne zusammentun.
ps: bin noch grün hinter den Ohren, was das Skripten/Programmieren angeht. Bin also für jede Rückmeldung zu meinem Code dankbar.
g-henna:
Code: Alles auswählen
--ogginput input file is an Ogg Vorbis file. decode using libvorbis
Code: Alles auswählen
#!/usr/bin/python
mport string, os
pfad_in = "/home/foo/in/"
pfad_out= "/home/bar/out/"
lame_aufruf = "lame --ogginput --cbr --resample 44.1 -q 9 -b 96 " # -q 9 -h
filenames = os.listdir(pfad_in)
filenames.sort() # nicht unbedingt noetig, aber nett
print 'Dateien im Ordner: ', filenames ,'\n'
for fname in filenames:
fname_esc = fname.replace(" ","\\ ")
print fname_esc
fname_no = fname.replace(" ","")
print fname_no
fname_no = fname_no[:-3] + "mp3"
print fname_no
befehl = lame_aufruf + pfad_in + fname_esc+ " "+ pfad_out + fname_no
print befehl
os.system(befehl)
- peschmae
- Beiträge: 4844
- Registriert: 07.01.2003 12:50:33
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: nirgendwo im irgendwo
Re: script um oggs nach mp3 zu wandeln
Das ist nicht nötig. Du kannst ogg123 auch einfach nach /dev/stdout ausgeben lassen. Dann kannst du auch mit derartig widerspenstigen Programmen Pipes verwenden.Belgarad hat geschrieben:...
da ogg123 scheinbar nicht nach stdout ausgeben kann, verwende ich keine pipe sondern eine datei temp.out
(Entsprechend gibt es natürlich auch /dev/stderr und /dev/stdin)
MfG Peschmä