[FFmpeg-user] ffmpeg mangling heredoc lines in bash
Samuel Rakitničan
samuel.rakitnican at gmail.com
Mon Feb 13 23:42:53 EET 2017
Dear list,
I am trying to split a mp3 file into multiple tracks with a bash script
using ffmpeg. Somehow I can't achieve the desired effect due to some weird
behavior when ffmpeg is included. So the script is going line by line and
splitting one big mp3 file into multiple files (tracks) based on input from
heredoc data.
#!/bin/bash
if [ ! -f "$1" ]; then
echo "Invalid input file"
exit 1
fi
if [ ! -d "$2" ]; then
mkdir $2 || exit 1
fi
_count=0
while read -r _line; do
((_count++))
# printf " %s\n" $_line
echo $_line
_end=$(echo "$_line" | cut -f1)
_title=$(echo "$_line" | cut -f2)
_trackno=$(printf "%02d\n" $_count)
echo "Writting -ss "${_start-00:00:00}" -to "${_end}" $_trackno -
$_title.mp3"
# ffmpeg -y -i "$1" -vn -acodec copy -ss "${_start-00:00:00}" -to "$_end" \
# "$2/$_trackno - $_title.mp3" &> /dev/null
_start="${_end}"
sleep 1
done<<'TrackList'
00:01:56 Track 1
00:07:12 Track 2
00:12:15 Track 3
00:16:44 Track 4
TrackList
Script like this produces desired output:
Writting -ss 00:00:00 -to 00:01:56 01 - Track 1.mp3
00:07:12 Track 2
Writting -ss 00:01:56 -to 00:07:12 02 - Track 2.mp3
00:12:15 Track 3
Writting -ss 00:07:12 -to 00:12:15 03 - Track 3.mp3
00:16:44 Track 4
Writting -ss 00:12:15 -to 00:16:44 04 - Track 4.mp3
As soon as I uncomment ffmpeg line, output gets mangled:
00:01:56 Track 1
Writting -ss 00:00:00 -to 00:01:56 01 - Track 1.mp3
0:07:12 Track 2
Writting -ss 00:01:56 -to 0:07:12 02 - Track 2.mp3
:12:15 Track 3
Writting -ss 0:07:12 -to :12:15 03 - Track 3.mp3
00:16:44 Track 4
Writting -ss :12:15 -to 00:16:44 04 - Track 4.mp3
Anyone have an idea of what is happening?
P.S. I managed to achieve what I wanted with another loop, first loop
processes heredoc input into array, and then I process array into input for
ffmpeg.
More information about the ffmpeg-user
mailing list