DEUTSCHE VERSION |
|
Links | | | Forums | | | Comments | | | Report news |
Chat | | | Polls | | | Newsticker | | | Archive |
amiga-news.de Forum > Amiga, AmigaOS 4 > Ogg2mp3 - Suche Script | [ - Search - New posts - Register - Login - ] |
-1- | [ - Post reply - ] |
2005-12-04, 15:39 h Stefan Posts: 936 User |
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 [ - Answer - Quote - Direct link - ] |
2005-12-04, 16:20 h FischX Posts: 436 User |
@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. ] [ - Answer - Quote - Direct link - ] |
2005-12-04, 17:30 h Stefan Posts: 936 User |
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 [ - Answer - Quote - Direct link - ] |
2005-12-04, 17:45 h FischX Posts: 436 User |
! entspricht die Zeile 12 bei dir der Zeile 12 von der Website? Achte darauf das nach do nichts mehr in der Zeile 12 steht... [ - Answer - Quote - Direct link - ] |
2005-12-04, 18:10 h Stefan Posts: 936 User |
Zitat: Habe es noch einmal kontrolliert, sieht identisch aus. Ich tippe es mal einzeln ab. [ - Answer - Quote - Direct link - ] |
2005-12-04, 19:28 h FischX Posts: 436 User |
mal eine blöde Frage: du verwendest schon die Bash oder? [ - Answer - Quote - Direct link - ] |
2005-12-04, 20:10 h Stefan Posts: 936 User |
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 [ - Answer - Quote - Direct link - ] |
2005-12-04, 20:35 h FischX Posts: 436 User |
@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 [ - Answer - Quote - Direct link - ] |
2005-12-04, 20:54 h FischX Posts: 436 User |
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. [ - Answer - Quote - Direct link - ] |
2005-12-04, 23:18 h FischX Posts: 436 User |
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. ] [ - Answer - Quote - Direct link - ] |
2005-12-05, 13:10 h Palgucker Posts: 1342 User |
@ 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 [ - Answer - Quote - Direct link - ] |
2005-12-05, 17:34 h FischX Posts: 436 User |
@Palgucker: da fehlen ein paar Sachen^^ es geht hier um ogg -> mp3 [ - Answer - Quote - Direct link - ] |
2005-12-05, 17:50 h Stefan Posts: 936 User |
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 [ - Answer - Quote - Direct link - ] |
2005-12-05, 18:16 h FischX Posts: 436 User |
@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 [ - Answer - Quote - Direct link - ] |
2005-12-05, 18:34 h Holger Posts: 8116 User |
@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. [ - Answer - Quote - Direct link - ] |
2005-12-05, 18:38 h Robin Posts: 1056 User |
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/ [ - Answer - Quote - Direct link - ] |
2005-12-06, 10:40 h Stefan Posts: 936 User |
@Robin: Habe es ausprobiert, es tut , werde mir das jetzt noch ein 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 , es kommt immer nur 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. ] [ - Answer - Quote - Direct link - ] |
2005-12-06, 11:44 h gni Posts: 1106 User |
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. [ - Answer - Quote - Direct link - ] |
2005-12-06, 16:24 h Stefan Posts: 936 User |
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) und dann geht es los. Gruß Stefan [ - Answer - Quote - Direct link - ] |
-1- | [ - Post reply - ] |
amiga-news.de Forum > Amiga, AmigaOS 4 > Ogg2mp3 - Suche Script | [ - Search - New posts - Register - Login - ] |
Masthead |
Privacy policy |
Netiquette |
Advertising |
Contact
Copyright © 1998-2024 by amiga-news.de - all rights reserved. |