Welche Befehlszeilen-Tools benötige ich, um mehrere Audiodateien zu verknüpfen und als ein Ogg (und / oder MP3) auszugeben?
Wenn Sie den vollständigen Befehl zum Verketten und Ausgeben an ogg bereitstellen können, wäre das fantastisch.
Bearbeiten : Eingabedateien (in meinem Fall derzeit) sind wma
formatiert, sollten jedoch im Idealfall flexibel genug sein, um eine Vielzahl gängiger Formate zu unterstützen.
Edit2 : Nur zur Verdeutlichung, ich möchte nicht alle wma
s in einem bestimmten Verzeichnis zusammenführen, ich möchte nur 2 oder 3 Dateien zu einer verketten.
Vielen Dank für die vorgeschlagenen Lösungen, aber alle scheinen temporäre Dateien zu erstellen, wenn möglich, das möchte ich vermeiden.
linux
command-line
audio
hasen
quelle
quelle
mktemp -d /tmp/descriptive_name.XXXXXX
, ein temporäres Verzeichnis mit einem informativen Namen zu erstellen, dann alle meine temporären Dateien dort zu verarbeiten und anschließend das temporäre Verzeichnis zu rm -r.*.wma
in einer1.wma 2.wma 3.wma 4.wma
Befehlszeile angegeben wird, funktioniert mit Sicherheit für eine kleinere Liste wie (ohne 5.WMA, 6.WMA und 7.WMA), indem man sie einfach auflistet so (anstatt zu benutzen*.wma
).Antworten:
Hier ist mein Vorschlag: Verwende mplayer und oggenc, die mit einer Named Pipe verbunden sind.
Verwenden Sie
mplayer
diese Taste, um das Audio zu dekodieren. Es kann eine Vielzahl von Audio- (und Video-) Formaten wiedergeben und mehrere Dateien abspielen.Verwenden Sie
oggenc
diese Option, um das Audio in Ogg Vorbis zu kodieren.Verwenden Sie eine Named Pipe , um die Daten zwischen Encoder und Decoder zu übertragen.
Das in ein Skript schreiben:
Erklärt:
-really-quiet -slave -nolirc
zum Deaktivieren von Nachrichten und zum Verhindern des Lesens der Tastatur oder der Fernbedienung. Optionen-vc null -vo null
zum Deaktivieren der Videokodierung und -ausgabe. Die-ao
Option weist es an, das Audio im WAV-Format an die genannte Write-Pipe auszugeben.Zum Verbessern etwas nach links: Beende das Skript vorzeitig, wenn einer der Befehle fehlschlägt (benutze
set -e
), aber das FIFO trotzdem ordnungsgemäß aufräumt (fange die notwendigen Signale ein).quelle
SoX kann eine große Anzahl von Audioformaten verarbeiten, je nachdem, für welche Bibliotheken es kompiliert wurde, und Dateien mit einer einfachen Befehlszeile verketten
Ich glaube, das funktioniert nur, wenn die Quell-Audiodateien alle die gleiche Anzahl von Kanälen haben, aber ich habe dies nicht getestet.
Soweit mir bekannt ist, unterstützt SoX keine .wma-Dateien. Daher ist es wahrscheinlich unvermeidlich, zumindest diese Dateien mit so etwas wie ffmpeg zuerst zu konvertieren .
quelle
Ich würde ffmpeg verwenden . Um wma in ogg vorbis zu konvertieren, versuchen Sie:
oder mp3:
Für den MP3-Konverter muss LAME installiert sein.
sudo apt-get install lame libmp3lame0
Cat, dann scheint die Konvertierung nicht gut zu funktionieren, obwohl Sie im Web viele Referenzen finden, die besagen, dass Sie so etwas tun können
cat *.wma | ffmpeg -i - -acodec ...
- dies funktioniert auf meinem Computer nicht - nur die erste Datei wird verarbeitet. Es gibt einen 'Kopier'-Codec für ffmpeg, aber das macht keinen großen Unterschied.Zuerst mit ffmpeg konvertieren, dann mit cat * .ogg> output.ogg.
quelle
-acodec libvorbis
, um den eingebauten Encoder von ffmpeg zu umgehen.Gehen Sie wie folgt vor, um Audiodateien zu verketten und zu transkodieren:
Die Verarbeitung in diesen Schritten führt die Verkettung der WAV-Daten durch, die am einfachsten zu handhaben und am wenigsten verlustreich ist. Und da Sie sowieso transkodieren möchten, müssen Sie irgendwo im Prozess in WAV dekodieren. könnte es genauso gut ausnutzen.
Hier sind die Schritte, die ich empfehle. Wir werden
ffmpeg
für die Dekodierung,sox
für die Verkettung undoggenc
für die Kodierung verwenden. Sie könnten auch andere Werkzeuge für jeden Schritt ersetzen -mencoder
und andere funktionieren als Decoder, und jedes Werkzeug , das Ogg kodiert , kann als Encoder verwendet werden - obwohl ich glaube , Sie hart gedrückt werden , werden ein besseres Werkzeug zu finden , alssox
für die Verkettung.find *.wma -exec ffmpeg -i {} outfile.{}.wav \;
(Dies wird
ffmpeg -i infile.wma outfile.infile.wma
für jede WMA-Datei im aktuellen Verzeichnis ausgeführt.)sox outfile* all.wav
(Beachten Sie, dass dies
outfile
dasselbe Präfix ist, das wir in Schritt 1 für die Ausgabedateien angegeben haben.)oggenc all.wav all.ogg
Wahrscheinlich möchten Sie hier einige Qualitätseinstellungen vornehmen, dies führt jedoch zu anständigen Qualitätsstandards. Ich habe keine Ergebnisse erhalten, die mir gefallen habenffmpeg
, aber Sie können es vorziehen, deshalb habe ich unten ein Beispiel mit ffmpeg eingefügt.Beachten Sie, dass der
sox
Befehl nur dann ordnungsgemäß funktioniert, wenn alle WAV-Dateien dasselbe Format haben. Wenn einige 22 kHz und andere 44,1 kHz haben, müssen Sie sie beispielsweisesox
über Befehlszeilenschalter identifizieren und das gewünschte Format angeben Ausgabe in. Ich kenne keine Kommandozeilen-Tools, die so gut wiesox
der Verkettungsschritt sind. Möglicherweise könnten Sie in Schritt 1 eine Ausgabe in ein unformatiertes PCM-Format erstellen undcat
für Schritt 2 verwenden. Dies funktioniert jedoch nur, wenn die Formate identisch sind und Sie sowohl für Ihren Decoder als auch für den Encoder äußerst spezifische Anforderungen stellen Format, das sie erwarten sollten.Encoding mit ffmpeg: Viele Posts im Internet beklagen, dass der in ffmpeg integrierte Vorbis-Encoder nicht sehr gut ist. Wenn Ihre Version mit libvorbis-Unterstützung erstellt wurde, verwenden Sie
-acodec libvorbis
stattdessen. Beispielbefehlszeile:quelle
Funktioniert nicht für .ogg-Dateien, aber mp3wrap kann mehrere .mp3-Dateien zu einer einzigen Datei zusammenfügen. Von der Kommandozeile aus können Sie so etwas tun
Dies wird ffmpeg verwenden , um alle Ihre WMA-Dateien in MP3 zu konvertieren und dann alle MP3-Dateien in einer einzigen Datei zusammenzuführen.
quelle
Mencoder kann Videos ohne temporäre Dateien verketten und transkodieren (einfaches Beispiel hier ). Irgendwo schwebt ein Skript namens aconvert herum, das den Mencoder dazu verleitet, nur Audio zu verwenden (was normalerweise abgelehnt wird). Diese beiden Dinge zusammen scheinen Ihre Anforderungen zu erfüllen.
Edit: Ich habe aconvert.sh gefunden. Leider kann nur eine Audiodatei konvertiert werden. Aber hier ist der Code, falls jemand damit eine Befehlszeile erstellen möchte, die mehrere Audiodateien konvertiert.
quelle
Dies ist möglicherweise nicht genau das, was Sie benötigen, aber es sollte http://bitzenbytes.com/index.php?name=PNphpBB2&file=viewtopic&t=6538&postdays=0&postorder=asc&sid=f87b364ddbae3ddd9417f5d10fae870c helfen
quelle
Ich dachte, ich würde meine Antwort einwerfen. Dies ist wahrscheinlich nicht die eleganteste Art, aber es hat getan, was ich wollte.
Schritt 1: konvertiert in ogg (verwendet
mplayer
,pacpl
undruby
., Die alle von dem freien Debian repos I)Schritt 2: Ogg-Dateien verketten
quelle