#!/bin/bash # Directory containing your .wav files directory="$(dirname "$0")" # Create or empty the filelist.txt #> filelist.txt # Create or empty the filelist.txt > filelist.txt # Loop through .mp3 files and add to filelist.txt #for file in "$directory"/*.mp3; do # echo "$file" >> filelist.txt #done for file in $(ls "$directory"/*.mp3 | sort -V); do echo "$file" >> filelist.txt done CHUNK_SIZE=30000000 # 30MB in bytes OUTPUT_DIR="concat" mkdir -p $OUTPUT_DIR current_chunk_size=0 chunk_index=1 chunk_files="" while read -r file; do echo "Processing file: $file" if [[ ! -f "$file" ]]; then echo "File not found: $file" continue fi file_size=$(stat -c%s "$file") echo "File size: $file_size bytes" if (( current_chunk_size + file_size > CHUNK_SIZE )); then echo "Creating chunk $chunk_index" ffmpeg -y -i "concat:${chunk_files:1}" -c copy "$OUTPUT_DIR/chunk_$chunk_index.mp3" ((chunk_index++)) current_chunk_size=0 chunk_files="" fi current_chunk_size=$((current_chunk_size + file_size)) chunk_files="${chunk_files}|$file" done < filelist.txt if [[ -n $chunk_files ]]; then echo "Creating final chunk $chunk_index" ffmpeg -y -i "concat:${chunk_files:1}" -c copy "$OUTPUT_DIR/chunk_$chunk_index.mp3" fi