Gehen Sie wie folgt vor, um Audiodateien zu verketten und zu transkodieren:
- Decodieren Sie die eingegebenen Audiodateien in WAV / PCM-Daten.
- WAV verketten,
- Codieren Sie WAV, um die Audio-Codec-Datei auszugeben.
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 ffmpegfür die Dekodierung, soxfür die Verkettung und oggencfür die Kodierung verwenden. Sie könnten auch andere Werkzeuge für jeden Schritt ersetzen - mencoderund 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 , als soxfür die Verkettung.
find *.wma -exec ffmpeg -i {} outfile.{}.wav \;
(Dies wird ffmpeg -i infile.wma outfile.infile.wmafür jede WMA-Datei im aktuellen Verzeichnis ausgeführt.)
sox outfile* all.wav
(Beachten Sie, dass dies outfiledasselbe 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 haben ffmpeg, aber Sie können es vorziehen, deshalb habe ich unten ein Beispiel mit ffmpeg eingefügt.
Beachten Sie, dass der soxBefehl 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 beispielsweise soxüber Befehlszeilenschalter identifizieren und das gewünschte Format angeben Ausgabe in. Ich kenne keine Kommandozeilen-Tools, die so gut wie soxder Verkettungsschritt sind. Möglicherweise könnten Sie in Schritt 1 eine Ausgabe in ein unformatiertes PCM-Format erstellen und catfü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 libvorbisstattdessen. Beispielbefehlszeile:
ffmpeg -i all.wav -acodec libvorbis -ac 2 -ab 128k all.ogg