From eed9199f7b00cb6269cf063aa11084cdd7b3a904 Mon Sep 17 00:00:00 2001 From: Florian Pritz Date: Fri, 3 Jul 2009 15:46:33 +0200 Subject: remake convert2mp4 in python with new options --- convert2mp4 | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 72 insertions(+), 13 deletions(-) diff --git a/convert2mp4 b/convert2mp4 index 58c3268..23894b8 100755 --- a/convert2mp4 +++ b/convert2mp4 @@ -1,10 +1,10 @@ -#!/bin/bash +#!/usr/bin/python #---------------------------------------------------- -# Version: 0.1.2 -# Author: Florian "Bluewind" Pritz +# Version: 0.2.0 +# Author: Florian "Bluewind" Pritz # # Licensed under WTFPL v2 -# (see COPYING for full license text) +# (see COPYING for full license text) # #---------------------------------------------------- # Converts a file to an MP4 which can be played in a flash movie @@ -12,14 +12,73 @@ # Audio: MPEG-4 AAC #---------------------------------------------------- -for i in "$@"; do - pushd . &> /dev/null - cd "$(dirname "$i")" +import sys +import os +import subprocess +from optparse import OptionParser - file="$(basename "$i")" - file_mp4="$(echo ${file} | sed 's/\(.*\)\..*/\1/').mp4" +def main(): + usage = "usage: %prog [options] " + p = OptionParser(usage) + p.add_option("-s", "--size", dest="size", default=False, + help="use instead of input dimensions (e.g. 123x123)", metavar="") + p.add_option("--vb", dest="vbitrate", default="400000", + help="change the video bitrate", metavar="") + p.add_option("--ab", dest="abitrate", default="160000", + help="change the audio bitrate", metavar="") + p.add_option("--nd", action="store_false", dest="deinterlace", default=True, + help="don't deinterlace the video") - ffmpeg -i "$file" -b 400000 -deinterlace -vcodec libx264 -s 720x576 -r 25 -g 250 -keyint_min 25 -coder ac -me_range 16 -subq 5 -sc_threshold 40 -acodec libfaac -ab 160000 -ar 44100 -cmp +chroma -partitions +parti4x4+partp8x8+partb8x8 -i_qfactor 0.71 -b_strategy 1 -threads 2 -crf 30 -y "$file_mp4" - qt-faststart "$file_mp4" "done_$file_mp4" - popd &> /dev/null -done + (options, args) = p.parse_args() + + + if len(args) == 0: + p.print_help() + sys.exit() + + ffmpeg_args = [] + + if options.size: + ffmpeg_args.append("-s") + ffmpeg_args.append(options.size) + if options.vbitrate: + ffmpeg_args.append("-b") + ffmpeg_args.append(options.vbitrate) + if options.abitrate: + ffmpeg_args.append("-ab") + ffmpeg_args.append(options.abitrate) + if options.deinterlace: + ffmpeg_args.append("-deinterlace") + + for name in args: + p1 = subprocess.Popen(["echo", "-n", name], stdout=subprocess.PIPE) + p2 = subprocess.Popen(["sed", "s/\(.*\)\..*/\\1/"], stdin=p1.stdout, stdout=subprocess.PIPE) + name_mp4 = p2.communicate()[0] + ".mp4" + subprocess.Popen(merge( + [["ffmpeg", "-i", name, + "-vcodec", "libx264", "-r", "25", + "-g", "250", "-keyint_min", "25", + "-coder", "ac", "-me_range", "16", + "-subq", "5", "-sc_threshold", "40", + "-acodec", "libfaac", "-ar", "44100", + "-cmp", "+chroma", "-partitions", "+parti4x4+partp8x8+partb8x8", + "-i_qfactor", "0.71", "-b_strategy", + "1", "-threads", "0", "-crf", "30", "-y"], + ffmpeg_args, [name_mp4]] + )).communicate()[0] + subprocess.Popen(["qt-faststart", name_mp4, "done_"+name_mp4]).communicate()[0] + +def merge(seq): + merged = [] + for s in seq: + for x in s: + merged.append(x) + return merged + +def file_exists(filename, options): + if os.path.exists(filename) and not options.force: + sys.stderr.write('Target "'+filename+'" already exists. Use --force to overwrite.\n') + sys.exit(1) + +if __name__ == '__main__': + main() -- cgit v1.2.3-24-g4f1b