-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSplit
75 lines (69 loc) · 3.5 KB
/
Split
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#!/bin/bash
#
# The script requires ffmpeg be installed, and in your normal 'PATH'.
#
# To run, use script name, and the file you wish to process.
#
# i.e. 'Split 00000001.wav'
#
# This will process the file 00000001.wav and create 32 files, 1-32, prefixed by '01-', the last two digits of the source file name and a hyphen, in the sample rate of the source file.
#
# 01-01.wav
# 01-02.wav
# 01-03.wav
#
# Find the sample rate of the input file
SR=$(ffprobe -loglevel quiet -show_streams $1 | grep sample_rate | sed 's,.*\(.\{5\}\)$,\1,')
# Find two digits to use for the filename prefix
PF=$(echo $1 | awk '{print substr($0,7,2)}')
# Print some information about the process to the terminal for confidence/confirmation.
echo "Input File name is $1"
echo "Source Material Sample Rate is $SR"
echo "File Name Prefix is $PF"
# Print this message, so the user knows that this can take some time.
echo "Splitting $1 into multiple tracks. This can take a long time depending on the speed of your computer."
# Get the ffmpeg version
FFMPEG_VERSION=$(ffmpeg -version | head -n 1 | awk '{print $3}')
FFMPEG_MAJOR_VERSION=$(echo $FFMPEG_VERSION | cut -d. -f1)
# Split the file into individual tracks based on ffmpeg version
if [ "$FFMPEG_MAJOR_VERSION" -ge 7 ]; then
# For ffmpeg version 7 and newer
for i in {0..31}; do
OUTPUT_FILE=$(printf "%s-%02d.wav" "$PF" $((i + 1)))
ffmpeg -loglevel error -i $1 -ar $SR -acodec pcm_s32le -filter_complex "[0]pan=mono|c0=c$i[out]" -map "[out]" "$OUTPUT_FILE"
done
else
# For ffmpeg version 6 and older
ffmpeg -loglevel error -i $1 -ar $SR -acodec pcm_s32le -map_channel 0.0.0 $PF-01.wav \
-ar $SR -acodec pcm_s32le -map_channel 0.0.1 $PF-02.wav \
-ar $SR -acodec pcm_s32le -map_channel 0.0.2 $PF-03.wav \
-ar $SR -acodec pcm_s32le -map_channel 0.0.3 $PF-04.wav \
-ar $SR -acodec pcm_s32le -map_channel 0.0.4 $PF-05.wav \
-ar $SR -acodec pcm_s32le -map_channel 0.0.5 $PF-06.wav \
-ar $SR -acodec pcm_s32le -map_channel 0.0.6 $PF-07.wav \
-ar $SR -acodec pcm_s32le -map_channel 0.0.7 $PF-08.wav \
-ar $SR -acodec pcm_s32le -map_channel 0.0.8 $PF-09.wav \
-ar $SR -acodec pcm_s32le -map_channel 0.0.9 $PF-10.wav \
-ar $SR -acodec pcm_s32le -map_channel 0.0.10 $PF-11.wav \
-ar $SR -acodec pcm_s32le -map_channel 0.0.11 $PF-12.wav \
-ar $SR -acodec pcm_s32le -map_channel 0.0.12 $PF-13.wav \
-ar $SR -acodec pcm_s32le -map_channel 0.0.13 $PF-14.wav \
-ar $SR -acodec pcm_s32le -map_channel 0.0.14 $PF-15.wav \
-ar $SR -acodec pcm_s32le -map_channel 0.0.15 $PF-16.wav \
-ar $SR -acodec pcm_s32le -map_channel 0.0.16 $PF-17.wav \
-ar $SR -acodec pcm_s32le -map_channel 0.0.17 $PF-18.wav \
-ar $SR -acodec pcm_s32le -map_channel 0.0.18 $PF-19.wav \
-ar $SR -acodec pcm_s32le -map_channel 0.0.19 $PF-20.wav \
-ar $SR -acodec pcm_s32le -map_channel 0.0.20 $PF-21.wav \
-ar $SR -acodec pcm_s32le -map_channel 0.0.21 $PF-22.wav \
-ar $SR -acodec pcm_s32le -map_channel 0.0.22 $PF-23.wav \
-ar $SR -acodec pcm_s32le -map_channel 0.0.23 $PF-24.wav \
-ar $SR -acodec pcm_s32le -map_channel 0.0.24 $PF-25.wav \
-ar $SR -acodec pcm_s32le -map_channel 0.0.25 $PF-26.wav \
-ar $SR -acodec pcm_s32le -map_channel 0.0.26 $PF-27.wav \
-ar $SR -acodec pcm_s32le -map_channel 0.0.27 $PF-28.wav \
-ar $SR -acodec pcm_s32le -map_channel 0.0.28 $PF-29.wav \
-ar $SR -acodec pcm_s32le -map_channel 0.0.29 $PF-30.wav \
-ar $SR -acodec pcm_s32le -map_channel 0.0.30 $PF-31.wav \
-ar $SR -acodec pcm_s32le -map_channel 0.0.31 $PF-32.wav
fi