amiga-news 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

:boing:

[ - 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:
#!/bin/sh

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...
code:
# ------------------------------------
# ogg to mp3 converter script
# Author: Patrick 'patlkli' Geltinger
#
# Requirements:
# - ogg123 (the command!)
# - lame
# ------------------------------------
# step1: ogg to wav
#

Kommentare die dich darauf aufmerksam machen das du ogg123 und lame installiert haben musst
code:
for i in *.ogg; do

eine for Schleife (für jede Datei mit der Endung .ogg mache...)
code:
input=$(ls $i | sed -e 's/ /_/g')

ersetzt das Lehrzeichen durch einen Unterschrich und speichert das Ergebniss in die Variable $input
code:
out=$(ls $input | sed -e 's/.ogg//g')

entfernt die Endung .ogg und speichert das ergebniss in $out
code:
ogg123 -d wav -f - $input

übergibt die Variable $input an ogg123
code:
done

ende der for Schleife
code:
#
# step2: wav to mp3
#
for i in *.wav; do

wieder eine for Schleife diesmal mit der Endung .wav
code:
out=$(ls $i | sed -e 's/.wav//g')

entfernt die Endung .wav und übergibt die Daten der Variable $out
code:
lame -v -h -b 192 "$i" "$out.mp3"

lame bekommt die datei wie von der Schleife definiert als $i und definiert die Ausgabedatei $out mit der endung .mp3
code:
done

Ende der Schleife
code:
rm *.wav

löschen der wav dateien
code:
echo "Conversion done! :) "

Ausgabe 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:
Original von FischX:
@Stefan:
eine genaue Fehlermeldung würds schon bringen... *grumel*
ich kann dir das script schnell erklären:


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

:boing:

[ - 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:
Original von FischX:
!

entspricht die Zeile 12 bei dir der Zeile 12 von der Website?

Achte darauf das nach do nichts mehr in der Zeile 12 steht...


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:
Original von FischX:
mal eine blöde Frage:
du verwendest schon die Bash oder?


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

:boing:



[ - 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:
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

statt
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 auf
code:
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:
for i in *.ogg; do oggdec $i -o - | lame - 'basename $i .ogg'.mp3; done

aber da kann ich dir nicht garantieren das es bei dir funktioniert.

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

:boing:


[ - Antworten - Zitieren - Direktlink - ]

05.12.2005, 18:16 Uhr

FischX
Posts: 436
Nutzer
@Stefan:
*hmpf*
was passiert wenn du
code:
oggdec test.ogg -o - | lame - test.mp3

probierst?

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:
for i in 'ls *.ogg'; do oggdec $i -o - | lame - $i.mp3; done

versuchen.

[ - 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 :) , 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

:boing:



[ 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:
Stefan:
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?

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:
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.

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) ;) und dann geht es los. :)

Gruß Stefan

:boing:

[ - 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-2024 by amiga-news.de - alle Rechte vorbehalten.
.