#!/usr/bin/python import struct import QTKit class QuickTimeError(Exception): @classmethod def from_nserror(cls, nserror): return cls(nserror.userInfo()['NSLocalizedDescription']) def long_from_string(s): return struct.unpack('>l', s)[0] def convert_for_iphone(infile, outfile): in_attrs = { 'QTMovieFileNameAttribute': unicode(infile), 'QTMovieOpenAsyncOKAttribute': False, 'QTMovieApertureModeAttribute': QTKit.QTMovieApertureModeClean, 'QTMovieIsActiveAttribute': True, } movie, error = QTKit.QTMovie.movieWithAttributes_error_(in_attrs, None) if movie is None: raise QuickTimeError.from_nserror(error) out_attrs = { 'QTMovieExport': True, 'QTMovieExportType': long_from_string('M4VP'), } status, error = movie.writeToFile_withAttributes_error_(unicode(outfile), out_attrs, None) if not status: raise QuickTimeError.from_nserror(error) if __name__ == '__main__': import sys infile = sys.argv[1] outfile = sys.argv[2] convert_for_iphone(infile, outfile)