From ec1ef0838c0d05398032274fe3272fcfe50ea85c Mon Sep 17 00:00:00 2001 From: Clément Bœsch Date: Mon, 18 Mar 2013 04:02:51 +0100 Subject: tools: add audio normalize script example. --- tools/normalize.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100755 tools/normalize.py (limited to 'tools') diff --git a/tools/normalize.py b/tools/normalize.py new file mode 100755 index 0000000000..e0159133a6 --- /dev/null +++ b/tools/normalize.py @@ -0,0 +1,33 @@ +#!/usr/bin/env python2 + +import sys, subprocess + +if len(sys.argv) > 1: + ifile = sys.argv[1] + encopt = sys.argv[2:-1] + ofile = sys.argv[-1] +else: + print 'usage: %s [encode_options] ' % sys.argv[0] + sys.exit(1) + +analysis_cmd = 'ffprobe -v error -of compact=p=0:nk=1 ' +analysis_cmd += '-show_entries frame_tags=lavfi.r128.I -f lavfi ' +analysis_cmd += "amovie='%s',ebur128=metadata=1" % ifile +try: + probe_out = subprocess.check_output(analysis_cmd, shell=True) +except subprocess.CalledProcessError, e: + sys.exit(e.returncode) +loudness = ref = -23 +for line in probe_out.splitlines(): + sline = line.rstrip() + if sline: + loudness = sline +adjust = ref - float(loudness) +if abs(adjust) < 0.0001: + print 'No normalization needed for ' + ifile +else: + print "Adjust %s by %.1fdB" % (ifile, adjust) + norm_cmd = ['ffmpeg', '-i', ifile, '-af', 'volume=%fdB' % adjust] + norm_cmd += encopt + [ofile] + print ' => %s' % ' '.join(norm_cmd) + subprocess.call(norm_cmd) -- cgit v1.2.3