]> code.delx.au - transcoding/commitdiff
Script to fix videos from PAL DVDs which have been sped up by 4%
authorJames Bunton <jamesbunton@delx.net.au>
Sun, 11 Aug 2013 03:10:52 +0000 (13:10 +1000)
committerJames Bunton <jamesbunton@delx.net.au>
Sun, 11 Aug 2013 03:10:52 +0000 (13:10 +1000)
fix-pal-speedup [new file with mode: 0755]

diff --git a/fix-pal-speedup b/fix-pal-speedup
new file mode 100755 (executable)
index 0000000..edac664
--- /dev/null
@@ -0,0 +1,39 @@
+#!/bin/bash -e
+
+# Many DVDs released in Australia are sped up from 23.976fps to 25fps.
+# This script reverses the procedure, correcting the audio pitch.
+# Input files are assumed to be mkv files with track 2 audio.
+# The video framerate is adjusted without re-encoding. The audio is slowed and
+# normalised then re-encoded as mp3.
+
+if [ -z "$1" -o -z "$2" ]; then
+       echo "Usage: $0 destdir infile"
+       exit 1
+fi
+
+# FORCEFPS = 24000 / 1001
+# SLOWDOWN = FORCEFPS / 25
+FORCEFPS="23.976023976023978"
+SLOWDOWN="0.9590409590409591"
+
+destdir="$1"
+infile="$2"
+outfile="$destdir/$(basename "$infile")"
+tmpdir="$(tempfile -p 'pal-')"
+rm "$tmpdir"
+
+if [ -f "$outfile" ]; then
+       echo "Not overwriting $outfile"
+       exit 0
+fi
+
+set -x
+mkdir "$tmpdir"
+mkvextract tracks "$infile" 2:"${tmpdir}/audio"
+mplayer -ao pcm:file="${tmpdir}/audio.wav" -vo null "${tmpdir}/audio"
+sox "${tmpdir}/audio.wav" "${tmpdir}/audio-fixed.wav" speed "${SLOWDOWN}" gain -n
+lame --preset standard "${tmpdir}/audio-fixed.wav" "${tmpdir}/audio.mp3"
+mkvmerge -o "${outfile}" --default-duration "1:${FORCEFPS}fps" --no-audio "$infile" "${tmpdir}/audio.mp3"
+
+rm -rf "$tmpdir"
+