SLOWDOWN="0.96"
function mux_replace_audio {
- infile="$1"
- audiofile="$2"
- outfile="$3"
+ local infile="$1"
+ local audiofile="$2"
+ local outfile="$3"
- trackid="$(mkvmerge -i "$infile" | grep video | sed 's/^Track ID \(.\):.*$/\1/')"
+ local trackid="$(mkvmerge -i "$infile" | grep 'Track ID.*video' | sed 's/^Track ID \(.\):.*$/\1/')"
mkvmerge -o "${outfile}" --default-duration "${trackid}:${FORCEFPS}fps" --no-audio "$infile" "$audiofile"
}
function extract_audio {
- infile="$1"
+ local infile="$1"
+ local outfile="$2"
- exec mpv \
+ mpv \
--no-terminal \
--no-video \
- --ao pcm:waveheader:file=/dev/stdout \
+ --ao "pcm:waveheader:file=${outfile}" \
"$infile"
}
function slow_audio {
- exec sox \
+ local infile="$1"
+ local outfile="$2"
+
+ sox \
--temp "$tmpdir" \
- - \
- -t wav - \
+ "$infile" \
+ -t wav \
+ "$outfile" \
speed "${SLOWDOWN}" \
gain -n \
channels 2
}
function encode_audio {
- outfile="$1"
- exec lame \
+ local infile="$1"
+ local outfile="$2"
+
+ lame \
--preset standard \
- - \
- "${outfile}"
+ "${infile}" "${outfile}"
}
function convert_file {
- infile="$1"
- outfile="$2"
- tmpdir="$(mktemp -d "${TMPDIR:-/var/tmp}/pal-XXXXXXXX")"
- audiofile="${tmpdir}/audio.mp3"
-
- extract_audio "${infile}" | slow_audio | encode_audio "${audiofile}"
- mux_replace_audio "${infile}" "${audiofile}" "${outfile}"
-
- rm -rf "$tmpdir"
+ local infile="$1"
+ local outfile="$2"
+ local audio1="${tmpdir}/audio1.wav"
+ local audio2="${tmpdir}/audio2.wav"
+ local audio3="${tmpdir}/audio3.mp3"
+
+ extract_audio "${infile}" "${audio1}"
+ slow_audio "${audio1}" "${audio2}"
+ encode_audio "${audio2}" "${audio3}"
+ mux_replace_audio "${infile}" "${audio3}" "${outfile}"
}
continue
fi
+ tmpdir="$(mktemp -d "${TMPDIR:-/var/tmp}/pal-XXXXXXXX")"
convert_file "$infile" "$outfile"
+ rm -rf "$tmpdir"
done