![]() |
ENGLISH VERSION |
|
![]() |
Links | | | Forum | | | Kommentare | | | News melden |
![]() |
Chat | | | Umfragen | | | Newsticker | | | Archiv |
![]() |
amiga-news.de Forum > Amiga, AmigaOS 4 > Ogg2mp3 - Suche Script | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
-1- | [ - Beitrag schreiben - ] |
04.12.2005, 15:39 Uhr Stefan Posts: 936 Nutzer |
Hallo, Wie ich das Ganze über "oggdec" und "lame" hinkriege weiss ich. Ich suche einen etwas einfacheren Weg über ein Script, welches wohl ungefähr so aussehen sollte/muss wie z.B. das Hier Leider funktioniert das Script dort nicht (habe es natürlich aus der "sh-Shell" ausgeführt), irgendwie hängt es an dem "do". Ich habe noch 2 PerlScripte gefunden, welche aber auch nicht wollen ![]() Also, ich frage mal die Script-Experten, wie kann ich es hinbiegen, daß es funktioniert. Helfen würde auch ein normales Amiga-Script, nur habe ich da keinen Plan. Gruß Stefan ![]() [ - Antworten - Zitieren - Direktlink - ] |
04.12.2005, 16:20 Uhr FischX Posts: 436 Nutzer |
@Stefan: eine genaue Fehlermeldung würds schon bringen... *grumel* ich kann dir das script schnell erklären: code:wird benötigt um das script unter un*xes als normales Programm zu starten zb wenn das Programm mit ./name gestartet wird, wird das Programm /bin/sh gestartet und die Daten als Argument übergeben...#!/bin/sh code:Kommentare die dich darauf aufmerksam machen das du ogg123 und lame installiert haben musst# ------------------------------------ # ogg to mp3 converter script # Author: Patrick 'patlkli' Geltinger # # Requirements: # - ogg123 (the command!) # - lame # ------------------------------------ # step1: ogg to wav # code:eine for Schleife (für jede Datei mit der Endung .ogg mache...)for i in *.ogg; do code:ersetzt das Lehrzeichen durch einen Unterschrich und speichert das Ergebniss in die Variable $inputinput=$(ls $i | sed -e 's/ /_/g') code:entfernt die Endung .ogg und speichert das ergebniss in $outout=$(ls $input | sed -e 's/.ogg//g') code:übergibt die Variable $input an ogg123ogg123 -d wav -f - $input code:ende der for Schleifedone code:wieder eine for Schleife diesmal mit der Endung .wav# # step2: wav to mp3 # for i in *.wav; do code:entfernt die Endung .wav und übergibt die Daten der Variable $outout=$(ls $i | sed -e 's/.wav//g') code:lame bekommt die datei wie von der Schleife definiert als $i und definiert die Ausgabedatei $out mit der endung .mp3lame -v -h -b 192 "$i" "$out.mp3" code:Ende der Schleifedone code:löschen der wav dateienrm *.wav code:Ausgabe Conversion done!echo "Conversion done! ![]() # # end Eine Mögliche Fehlerquelle ist das ogg123 keine Ausgabedatei bekommt (er macht in der ersten for Schleife nichts mit der Variable $out) zum debuggen kannst du jede Zeile (abges. von der ersten) einzeln in der Shell eingeben, nicht erschrecken wenn du eine Schleife beginnst erwartet er weitere Eingaben bis zu den Befehl "done" [ Dieser Beitrag wurde von FischX am 04.12.2005 um 16:34 Uhr editiert. ] [ Dieser Beitrag wurde von FischX am 04.12.2005 um 16:36 Uhr editiert. ] [ - Antworten - Zitieren - Direktlink - ] |
04.12.2005, 17:30 Uhr Stefan Posts: 936 Nutzer |
Zitat: Erstmal danke für die Erklärung des Scripts! Hier die Fehlermeldung ---------- sh $ ogg2mp3 /BIN/ogg2mp3: /BIN/ogg2mp3[12]: syntax error: 'do^M' unexpected --------------- Gruß Stefan ![]() [ - Antworten - Zitieren - Direktlink - ] |
04.12.2005, 17:45 Uhr FischX Posts: 436 Nutzer |
! entspricht die Zeile 12 bei dir der Zeile 12 von der Website? Achte darauf das nach do nichts mehr in der Zeile 12 steht... [ - Antworten - Zitieren - Direktlink - ] |
04.12.2005, 18:10 Uhr Stefan Posts: 936 Nutzer |
Zitat: Habe es noch einmal kontrolliert, sieht identisch aus. Ich tippe es mal einzeln ab. [ - Antworten - Zitieren - Direktlink - ] |
04.12.2005, 19:28 Uhr FischX Posts: 436 Nutzer |
mal eine blöde Frage: du verwendest schon die Bash oder? [ - Antworten - Zitieren - Direktlink - ] |
04.12.2005, 20:10 Uhr Stefan Posts: 936 Nutzer |
Zitat: Also ein man sh bringt hervor "KSH - Public Domain Kornshell". Von der Bash gibt es im Aminet nur den Quellcode. Das Ganze läuft natürlich hier unter "ixemul" am Amiga, das mal noch zur Info, um Missverständnissen vorzubeugen. Manch andere Scripte laufen schon, Beispiel habe ich gerade keins. Möglich wäre auch, dass noch etwas fehlt, meine Umgebung habe ich nur bei "BTTR" zusammengesammelt. Gruß Stefan ![]() [ - Antworten - Zitieren - Direktlink - ] |
04.12.2005, 20:35 Uhr FischX Posts: 436 Nutzer |
@Stefan: die Kornshell hat nicht alle Funktionen der Bash bzw ist teilweise nicht kompatibel schau dir zb das mal an: http://de.wikipedia.org/wiki/Bash#Weiterentwicklungen [ - Antworten - Zitieren - Direktlink - ] |
04.12.2005, 20:54 Uhr FischX Posts: 436 Nutzer |
ich hab mir das jetzt mal angesehen, für korn solte das ca. so aussehen:code:stattfor i in *.ogg do input=$(ls $i | sed -e 's/ /_/g') out=$(ls $input | sed -e 's/.ogg//g') ogg123 -d wav -f - $input done code:for i in *.ogg; do input=$(ls $i | sed -e 's/ /_/g') out=$(ls $input | sed -e 's/.ogg//g') ogg123 -d wav -f - $input done Wobei do in der ksh eine eigene Gruppe darstellt die normalerweise mit od beendet wird in unserem Fall sollte das allerdings done erledigen. [ - Antworten - Zitieren - Direktlink - ] |
04.12.2005, 23:18 Uhr FischX Posts: 436 Nutzer |
der Sinn des ganzen Scripts lässt sich aufcode:for i in *.ogg; do oggdec $i -o - | lame - $i.mp3; done zusammenfassen das sollte dann auch funktionieren, zu dem exakt gleichen Ergebniss wie in dem script kommt man mit code:aber da kann ich dir nicht garantieren das es bei dir funktioniert.for i in *.ogg; do oggdec $i -o - | lame - 'basename $i .ogg'.mp3; done Der Vorteil dieser Lösung ist das du es "so wie es ist" in die Eingabezeile kopieren kannst bzw ein alias darauf zu legen, weiters werden de Recourcen des systems geschohnt da keine .wav Dateien zwischengespeichert werden und du brauchst auch keinen sed. [ Dieser Beitrag wurde von FischX am 04.12.2005 um 23:42 Uhr editiert. ] [ - Antworten - Zitieren - Direktlink - ] |
05.12.2005, 13:10 Uhr Palgucker Posts: 1342 Nutzer |
@ Stefan Falls es immer noch nicht richtig funzt, vielleicht geht die Amigados-Variante. z.B: list path:#?.wav lformat="lame -v -h -b 192 *"%f%s*" *"%f%m.mp3*"" >T:convert.script execute T:convert.script Wobei %f = VerzeichnisPfad %s = Filename %m = Filename ohne Erweiterung *" = Anführungszeichen einfügen darstellt. Allerdings weiss ich nicht, ob die von Dir genutzten Programme mit Anführungszeichen zurechtkommen. Weiterhin können auch Zeichen, wie % $ ~ usw. im Namen "Verwirrung" stiften. mfg Palgucker [ - Antworten - Zitieren - Direktlink - ] |
05.12.2005, 17:34 Uhr FischX Posts: 436 Nutzer |
@Palgucker: da fehlen ein paar Sachen^^ es geht hier um ogg -> mp3 [ - Antworten - Zitieren - Direktlink - ] |
05.12.2005, 17:50 Uhr Stefan Posts: 936 Nutzer |
Hallo, @FischX Habe das Wiki gelesen, demnach werden wohl wenig Scripte sauber funktionieren. Eine Umstellung des "do" bringt nichts. Es wird nur wirrer Buchstabensalat erzeugt bzw. stürzt die PPC-Version von "oggdec" sofort ab. Deine beiden Einzeiler scheitern jeweils an der Pipe, ich habe keine Ahnung warum. So sieht das aus, $ for i in *.ogg; do oggdec $i -o - | lame - $i.mp3; done OggDec 1.0 Decoding "Test-01.ogg" to "standard output" [ 0.0%]Could not open file. Could not open sound file "-". Broken pipe - oggdec OggDec 1.0 Decoding "Test-02.ogg" to "standard output" [ 0.0%]Could not open file. Could not open sound file "-". Broken pipe - oggdec OggDec 1.0 Decoding "Test-03.ogg" to "standard output" [ 0.0%]Could not open file. Could not open sound file "-". Broken pipe - oggdec $ for i in *.ogg; do oggdec $i -o - | lame - 'basename $i .ogg'.mp3; done OggDec 1.0 Decoding "Test-01.ogg" to "standard output" [ 0.0%]Could not open file. Could not open sound file "-". Broken pipe - oggdec Solch ein Testbeispiel wie z.B. Hier funktioniert aber. @Palgucker: Das ist wahrscheinlich nicht schlecht, was Du da getippt hast, macht aber nur "wav" nach "mp3" und dafür habe ich irgendwo schon ein Script auf der Platte welches "MultiEncode-lame" macht. Ich möchte aber gerne von "ogg" nach "mp3" und das in einem Rutsch mit mehreren Dateien hintereinander. Vielleicht geht das auch mit einem AmigaScript, welches oggdec (ist mir lieber da PPC Version) oder ogg123 und Lame enthalten muss. (ogg-->wav-->mp3) Gruß Stefan ![]() [ - Antworten - Zitieren - Direktlink - ] |
05.12.2005, 18:16 Uhr FischX Posts: 436 Nutzer |
@Stefan: *hmpf* was passiert wenn du code:probierst?oggdec test.ogg -o - | lame - test.mp3 nach der Fehlermeldung aus deinem Post zu urteilen kommt keine Pipe zustande da schon oggdec keine Daten bekommt, und eine Fehlermeldung an stderr ausgibt aber nichts an stdout... gibt es eine .ogg Datei in dem Verzeichniss? alternativ könnte man auch code:versuchen.for i in 'ls *.ogg'; do oggdec $i -o - | lame - $i.mp3; done [ - Antworten - Zitieren - Direktlink - ] |
05.12.2005, 18:34 Uhr Holger Posts: 8116 Nutzer |
@Stefan: Wenn Du tools benutzt, die die ixemul.library benutzen, muß zum Benutzen der Pipe auch IXPIPE: angemeldet sein. mfg -- Good coders do not comment. What was hard to write should be hard to read too. [ - Antworten - Zitieren - Direktlink - ] |
05.12.2005, 18:38 Uhr Robin Posts: 1056 Nutzer |
Ok, jetzt hab ich mir mal ein paar oggs gemacht zum spielen ![]() Irgendwo, wo viel Platz ist und Oggs rum oggsidieren ausfuehren ![]() makedir wav makedir mp3 list all pat=#?.ogg lformat="oggdec.mos *"%p%n*" -o *"wav/%m.wav*"" >out execute out list wav lformat="lame *"%p%n*" *"mp3/%m.mp3*"" >out execute out -- (Bild) http://my.morphosi.net/ [ - Antworten - Zitieren - Direktlink - ] |
06.12.2005, 10:40 Uhr Stefan Posts: 936 Nutzer |
@Robin: Habe es ausprobiert, es tut ![]() wenig anpassen, zwecks Bitrate usw. und dann könnte ich es über Nacht mal starten. Falls es mit den anderen Varianten nicht klappt, würde dieses mir vollkommen reichen. !DANKE! @FischX & @ Holger Ich habe ein Problem mit der Pipe ![]() Broken Pipe raus. Ixpipe ist angemeldet, sollte da etwas verkehrt sein? Der ixpipe-handler ist in "L:" Muss noch etwas definiert werden, also so wie "pchar", "mchar" unter der AmigaOS Pipe? Ausführen muss ich das ganze in der Kornshell (pdksh), wobei ich glaube gelesen zu haben, dass die Kornshell selbst eine interne Pipe hätte bzw. es selbst regelt. Kann das sein und muss da vielleicht eine Variable oder Conf definiert werden? Mir fällte nämlich gerade noch ein, dass ich z.B. mit "tar+Gzip" das selbe Problem habe, keine Funktionalität über Pipe. Ich finde keine Dok zur Ixpipe, welche mir etwas verraten könnte und die Treffer bei Google sind erbämlich, dort gibt es nur die Mountlist. Gruß Stefan ![]() [ Dieser Beitrag wurde von Stefan am 06.12.2005 um 10:43 Uhr editiert. ] [ - Antworten - Zitieren - Direktlink - ] |
06.12.2005, 11:44 Uhr gni Posts: 1106 Nutzer |
Zitat:Nein, das barucht es in der sh nicht. Hast Du die auch am laufe, wenn Du Dein Skript startest? Entweder Du startest das Skript vom sh Prompt oder mittels sh <skript>. Zitat:Mehr braucht es auch nicht. [ - Antworten - Zitieren - Direktlink - ] |
06.12.2005, 16:24 Uhr Stefan Posts: 936 Nutzer |
Hallo gni, >>pipe ist angemeldet, [...] >Nein, das barucht es in der sh nicht. Hast Du die auch am laufe, >wenn Du Dein Skript startest? Entweder Du startest das Skript vom >sh Prompt oder mittels sh <skript> Ich starte "sh" und sehe den "$" (Dollar) ![]() ![]() Gruß Stefan ![]() [ - Antworten - Zitieren - Direktlink - ] |
-1- | [ - Beitrag schreiben - ] |
amiga-news.de Forum > Amiga, AmigaOS 4 > Ogg2mp3 - Suche Script | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
![]() |
Impressum |
Datenschutzerklärung |
Netiquette |
Werbung |
Kontakt
Copyright © 1998-2025 by amiga-news.de - alle Rechte vorbehalten. |
![]() |