Ich habe arecord
in 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.
Die sox
Manpage 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.
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:
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.
AaronD
cd "$1"
an den Anfang des Skripts zu setzen, als zu erwarten, dass es bereits gesetzt ist.) Danke!