Verketten Sie sequentielle Mehrspur-WAV-Dateien zu einem Satz von Einzelspur-WAV-Dateien

Ich habe arecordin einem größeren Skript verwendet, um jedes Mikrofon während eines Live-Sound-Gigs einzeln aufzunehmen:

# Start recording
echo Recording to "$REC_PATH"
arecord --device=hw:CARD=X18XR18,DEV=0 --channels=18 --file-type=wav --format=S32_LE --rate=48000 --buffer-time=20000000 --max-file-time 300 "$REC_PATH/all_tracks.wav" &

Das funktioniert, aber es gibt mir eine 18-Spur-WAV-Datei, die in regelmäßigen Abständen geteilt werden muss, um die Dateigröße innerhalb der Spezifikation zu halten. (5 Minuten pro oben, was 1 GB pro Datei ergibt)

Meine andere Frage lautet, wie man diesen Schritt in Zukunft vermeiden kann , aber da ich bereits die sequentiellen 18-Track-Dateien von diesem Gig habe, gibt es ein Tool, um jeden dieser 18 Tracks in einer eigenen Single-Track-WAV-Datei zu verketten? (Wenn es das wegen der Dateigröße aufteilen muss, ist das in Ordnung, aber wenn ein Track des gesamten Gigs in eine Datei passt, sollte es das tun.)

Technisch könnte ich Audacity verwenden, das ich bereits habe, aber das Verfahren ist vollständig manuell. Mit ~ 50 GB zum Sortieren möchte ich wirklich etwas, das gestartet und in Ruhe gelassen werden kann.

Antworten (2)

Die soxManpage enthält ein Beispielskript zum Extrahieren jedes Kanals aus einer Datei in eine eigene Datei. Im Grunde macht es (in umgekehrter Reihenfolge)

sox all_tracks.wav all_tracks-01.wav remix 01
sox all_tracks.wav all_tracks-02.wav remix 02
sox all_tracks.wav all_tracks-03.wav remix 03
...

Hier ist das Skript von der Manpage. Übergeben Sie ihm den Namen der Eingabedatei.

#!/bin/sh
chans=`soxi -c "$1"`
while [ $chans -ge 1 ]; do
   chans0=`printf %02i $chans`   # 2 digits hence up to 99 chans
   out=`echo "$1"|sed "s/\(.*\)\.\(.*\)/\1-$chans0.\2/"`
   sox "$1" "$out" remix $chans
   chans=`expr $chans - 1`
done

Sie können Ihre wav-Dateien auch in ein verlustfrei komprimiertes Format wie flac konvertieren und sie auf etwa die Hälfte ihrer Größe reduzieren.

Ich denke, dass das Skript aus der Manpage zu kompliziert ist für das, was es tut (eine andere Namenskonvention für die Single-Track-Dateien kann 2 Zeilen löschen und es viel besser lesbar machen), aber es funktioniert, um die 5-Minuten-18- Track-Dateien in einen Haufen 5-minütiger Single-Tracks. Von da an brachte mir das Lesen der Manpage den anderen Teil des Zusammenfügens von 18 Tracks in voller Länge. Ich habe jetzt also ein Skript, das all das erledigt, wenn ich das Arbeitsverzeichnis als Argument angebe. (Es war einfacher, ein cd "$1"an den Anfang des Skripts zu setzen, als zu erwarten, dass es bereits gesetzt ist.) Danke!

FFMPEG kann Audio- (und Video-)Spuren einschließlich Mehrspur-Audiodateien von der Befehlszeile oder einer Batch-/Skriptdatei aufteilen, zusammenführen (Downmix) und verketten.

Es kann auch zwischen den meisten Formaten konvertieren.

Es ist:

  • Kostenlos, kostenlos & Open Source
  • Plattformübergreifend
  • Kann mit großen Dateien umgehen

Beispiele

Es gibt einige sehr gute Beispiele zur Manipulation von Audiokanälen im ffmpeg-Wiki hier . Sie beinhalten:

So mischen Sie eine einzelne Datei in Stereo herunter:

ffmpeg -i multi_channels.wav -ac 2 stereo.wav

Ausgewählte Kanäle zu Stereo mischen, einige verwerfen:

ffmpeg -i input.wav -af "pan=stereo|c0<c0+c1+c3+c4+c5+c9|c1<c6+c7+c8+c11" output.mp3

Aufteilen der Kanäle einer 5.1-Surround-Sound-Wav-Datei:

ffmpeg -i in.wav-filter_complex 'channelsplit=channel_layout=5.1[FL][FR][FC][LFE][SL][SR]' -map '[FL]' front_left.wav -map '[FR]' front_right.wav -map '[FC]' front_center.wav -map '[LFE]' lfe.wav -map '[SL]' side_left.wav -map '[SR]' side_right.wav

Für Ihren speziellen Fall und unter der Annahme, dass alle Ihre Dateien fortlaufend nummeriert sind und Sie eine wav-Datei pro Kanal generieren möchten, kann Folgendes zu guten Ergebnissen führen (ich würde dringend empfehlen, einen einzelnen Dateinamen anstelle der %d-Notation für zu verwenden Ihre ersten Tests) :

ffmpeg -i yourfilename_%d.wav -map 0:1 1.wav -map 0:2 2.wav -map 0:3 3.wav -map 0:4 4.wav -map 0:5 5.wav -map 0:6 6.wav -map 0:7 7.wav -map 0:8 8.wav -map 0:9 9.wav -map 0:10 10.wav -map 0:11 11.wav -map 0:12 12.wav -map 0:13 13.wav -map 0:14 14.wav -map 0:15 15.wav -map 0:16 16.wav -map 0:17 17.wav -map 0:18 18.wav

Beachten Sie, dass ich die obigen Beispiele nicht testen konnte.