-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathburncd
More file actions
executable file
·60 lines (45 loc) · 1.45 KB
/
Copy pathburncd
File metadata and controls
executable file
·60 lines (45 loc) · 1.45 KB
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
#!/bin/bash
# Burn an audio CD from any ffmpeg-compatible files using cdrdao
# Usage: ./burn_audio_cd.sh file1.mp3 file2.flac file3.ogg ...
set -e
# Check for dependencies
command -v ffmpeg >/dev/null || { echo "ffmpeg not found. Install it first."; exit 1; }
command -v cdrdao >/dev/null || { echo "cdrdao not found. Install it first."; exit 1; }
# Ensure at least one input file
if [ "$#" -lt 1 ]; then
echo "Usage: $0 track1.mp3 track2.flac track3.ogg ..."
exit 1
fi
WORKDIR="./cd_burn_temp"
TOC_FILE="$WORKDIR/disc.toc"
DEVICE="/dev/sr0" # Change if your burner uses a different device
# Create working directory
mkdir -p "$WORKDIR"
#rm -f "$WORKDIR"/*.wav "$TOC_FILE"
echo "CD_DA" > "$TOC_FILE"
# Convert and build TOC
i=1
for input in "$@"; do
if [ ! -f "$input" ]; then
echo "File not found: $input"
else
base=`basename "$input"`%.ogg
base="${base%.*}" #sans file extension
wav="$WORKDIR/track$(printf %02d $i)_$base.wav"
set +x
echo "Converting: $input → $wav"
ffmpeg -loglevel 16 -y -i "$input" -ar 44100 -ac 2 -sample_fmt s16 "$wav"
echo "" >> "$TOC_FILE"
echo "TRACK AUDIO" >> "$TOC_FILE"
echo "FILE \"$(basename "$wav")\" 0" >> "$TOC_FILE"
i=$((i + 1))
fi
done
# Burn CD
echo "Burning CD using cdrdao..."
(
cd "$WORKDIR"
cdrdao write --device "$DEVICE" "disc.toc"
)
trash-put "$WORKDIR"
echo "✅ Done! Audio CD burned successfully."