Date created: Friday, April 28, 2017 10:01:28 AM. Last modified: Sunday, January 27, 2019 11:45:48 AM
Split MP3 by Seconds
A simple script to load timings (in seconds) from a text file and split a long MP3 into multiple smaller MP3 files:
#!/bin/bash set -eu ts_get_sec() { read -r h m s <<< $(echo $1 | tr ':' ' ' ) echo $(((60*60*$((10#$h)))+(60*$((10#$m)))+$((10#$s)))) } while IFS='' read -r line || [[ -n "$line" ]]; do NAME=$(echo "$line" | awk 'BEGIN {FS="\t"}; {print $1};') START=$(echo "$line" | awk 'BEGIN {FS="\t"}; {print $2};') END=$(echo "$line" | awk 'BEGIN {FS="\t"}; {print $3};') START=$(ts_get_sec $START) END=$(ts_get_sec $END) DIFF=$((END-START)) LENGTH="00:$((DIFF/60)):$((DIFF%60))" avconv -i "$1" -acodec copy -ss $START -t $LENGTH -y "$NAME.mp3" done < timings.txt
# Tab seperated file: # filename-TAB-start-TAB-end $ cat timings.txt 1. Track 1 00:00:00 00:04:43 2. Track 2 00:04:43 00:08:45 3. Track 3 00:08:45 00:13:01
Previous page: Rsync with Notification
Next page: Stuck In Time