# Many DVDs released in Australia are sped up from 24fps to 25fps.
# This script reverses the procedure, correcting the audio pitch.
# The video framerate is adjusted without re-encoding. The audio is
-# slowed, volume normalised, down-mixed to stereo and encoded as mp3.
+# slowed, and encoded as AAC, preserving surround sound.
if [ -z "$1" -o -z "$2" ]; then
echo "Usage: $0 destdir infile [infile ...]"
set -xe
FORCEFPS="24"
-SLOWDOWN="0.96"
+SLOWFILTER="-filter asetrate=46080,aresample=48000"
function mux_replace_audio {
local infile="$1"
mplayer \
-noconfig all \
-novideo \
- -ao "pcm:waveheader:file=${outfile}" \
+ -channels 8 \
+ -dumpaudio \
+ -dumpfile "$outfile" \
"$infile"
}
-function slow_audio {
- local infile="$1"
- local outfile="$2"
-
- sox \
- --temp "$tmpdir" \
- "$infile" \
- -t wav \
- "$outfile" \
- speed "${SLOWDOWN}" \
- gain -n
-}
-
function encode_audio {
- local infile="$1"
- local outfile="$2"
-
- lame \
- --preset standard \
- "${infile}" "${outfile}"
+ ffmpeg \
+ -i "$1" \
+ $SLOWFILTER \
+ -strict experimental \
+ "$2"
}
function convert_file {
local infile="$1"
local outfile="$2"
- local audio1="${tmpdir}/audio1.wav"
- local audio2="${tmpdir}/audio2.wav"
- local audio3="${tmpdir}/audio3.mp3"
+ local audio1="${tmpdir}/audio1.ac3"
+ local audio2="${tmpdir}/audio2.m4a"
extract_audio "${infile}" "${audio1}"
- slow_audio "${audio1}" "${audio2}"
- encode_audio "${audio2}" "${audio3}"
- mux_replace_audio "${infile}" "${audio3}" "${outfile}"
+ encode_audio "${audio1}" "${audio2}"
+ mux_replace_audio "${infile}" "${audio2}" "${outfile}"
}