示例#1
0
def _main():
    parser = optparse.OptionParser(
        "usage: %prog [options] input-dir output-dir")
    parser.add_option("--fps", dest="fps", help="set frames per second")
    parser.add_option("--yuv",
                      dest="yuv",
                      help="output raw yuv instead of encoding h264",
                      action='store_true',
                      default=False)
    options, args = parser.parse_args()
    if len(args) != 2:
        parser.error('one input and one output is required (-h for help)')
    input_dir = args[0]
    output_dir = args[1]
    for d in (input_dir, output_dir):
        if not os.path.isdir(d):
            parser.error('%s is not a directory!' % d)

    os.umask(2)

    class DecodeOptions(coding.OptionsBase):
        def error(self, returncode, output):
            print ''.join(output)

        # def status(self, format, info):
        #     print format, info
    class EncodeOptions(coding.OptionsBase):
        def error(self, returncode, output):
            print ''.join(output)

    decode_options = DecodeOptions()
    decode_options.options = {}
    if options.fps:
        decode_options.options['r'] = options.fps
    else:
        decode_options.options['r'] = 24

    encode_options = EncodeOptions()
    encode_options.options = {}
    encode_options.options['crf'] = 22
    encode_options.options['keyint'] = 24
    encode_options.options['preset'] = 'slower'

    sequences = sequence.sequences(os.listdir(input_dir))
    for (head, tail), names in sequences.iteritems():
        names = list(sequence.iterate_sequence(input_dir, head, tail, names))
        output_name = os.path.join(output_dir,
                                   os.path.splitext(head[:-1] + tail)[0])
        if options.yuv:
            coding.encode_yuv(names,
                              output_name + '_yuv.mov',
                              decode_options=decode_options)
        else:
            coding.encode_h264(names,
                               output_name + '.mp4',
                               decode_options=decode_options,
                               encode_options=encode_options)
示例#2
0
def _main():
    #w, h = calculate_format(sys.argv[1], sys.argv[2])
    #print w, h, float(w)/h
    #return
    parser = optparse.OptionParser("usage: %prog [options] input output")
    parser.add_option("-f", "--force", dest="force", action="store_true",
                      default=False, help="overwrite existing output file")
    parser.add_option("--vf", dest="video_filters", help="video filters passed to decoding process")
    parser.add_option("--width", dest="width", help="resize video to match WIDTH")
    parser.add_option("--aspect", dest="aspect", help="set aspect ratio")
    parser.add_option("--fps", dest="fps", help="set frames per second")
    parser.add_option("--bitrate", dest="bitrate", help="controls the encoding rate (high|medium|low)")
    parser.add_option("--tune", dest="tune", help="tune the encoding")
    parser.add_option("--preset", dest="preset", help="encoding preset (speed/quality tradeoff)")
    options, args = parser.parse_args()
    if len(args) != 2:
        parser.error('one input and one output is required (-h for help)')
    input_name = args[0]
    output_name = args[1]
    if not os.path.exists(input_name):
        parser.error('input "%s" does not exist' % input_name)
    if not options.force and os.path.exists(output_name):
        parser.error('output "%s" already exists (force with -f)' % output_name)

    x264_options = {}
    mplayer_options = {}
    if options.video_filters:
        mplayer_options['vf'] = options.video_filters
    if options.width and options.aspect:
        mplayer_options['vf'] = 'scale=%d:%d' % calculate_format(options.width, options.aspect)
    if options.fps:
        mplayer_options['r'] = options.fps
    if options.bitrate:
        try:
            crf = int(options.bitrate)
        except ValueError:
            crf = dict(high=21, medium=23, low=25).get(options.bitrate, 23)
        x264_options['crf'] = crf
    if options.tune:
        x264_options['tune'] = options.tune
    if options.preset:
        x264_options['preset'] = options.preset

    h264_options = coding.OptionsBase()
    def status(format, info):
        sys.stdout.write(repr(info) + '\r')
        sys.stdout.flush()
    h264_options.status = status
    h264_options.options = x264_options

    coding.encode_h264(get_input(input_name), output_name, encode_options=h264_options)
    print
示例#3
0
def _main():
    parser = optparse.OptionParser("usage: %prog [options] input-dir output-dir")
    parser.add_option("--fps", dest="fps", help="set frames per second")
    parser.add_option("--yuv", dest="yuv", help="output raw yuv instead of encoding h264",
                      action='store_true', default=False)
    options, args = parser.parse_args()
    if len(args) != 2:
        parser.error('one input and one output is required (-h for help)')
    input_dir = args[0]
    output_dir = args[1]
    for d in (input_dir, output_dir):
        if not os.path.isdir(d):
            parser.error('%s is not a directory!' % d)

    os.umask(2)

    class DecodeOptions(coding.OptionsBase):
        def error(self, returncode, output):
            print ''.join(output)
        # def status(self, format, info):
        #     print format, info
    class EncodeOptions(coding.OptionsBase):
        def error(self, returncode, output):
            print ''.join(output)

    decode_options = DecodeOptions()
    decode_options.options = {}
    if options.fps:
        decode_options.options['r'] = options.fps
    else:
        decode_options.options['r'] = 24

    encode_options = EncodeOptions()
    encode_options.options = {}
    encode_options.options['crf'] = 22
    encode_options.options['keyint'] = 24
    encode_options.options['preset'] = 'slower'

    sequences = sequence.sequences(os.listdir(input_dir))
    for (head, tail), names in sequences.iteritems():
        names = list(sequence.iterate_sequence(input_dir, head, tail, names))
        output_name = os.path.join(output_dir, os.path.splitext(head[:-1] + tail)[0])
        if options.yuv:
            coding.encode_yuv(names, output_name + '_yuv.mov', decode_options=decode_options)
        else:
            coding.encode_h264(names, output_name + '.mp4', decode_options=decode_options,
                               encode_options=encode_options)
示例#4
0
def _main():
    #w, h = calculate_format(sys.argv[1], sys.argv[2])
    #print w, h, float(w)/h
    #return
    parser = optparse.OptionParser("usage: %prog [options] input output")
    parser.add_option("-f",
                      "--force",
                      dest="force",
                      action="store_true",
                      default=False,
                      help="overwrite existing output file")
    parser.add_option("--vf",
                      dest="video_filters",
                      help="video filters passed to decoding process")
    parser.add_option("--width",
                      dest="width",
                      help="resize video to match WIDTH")
    parser.add_option("--aspect", dest="aspect", help="set aspect ratio")
    parser.add_option("--fps", dest="fps", help="set frames per second")
    parser.add_option("--bitrate",
                      dest="bitrate",
                      help="controls the encoding rate (high|medium|low)")
    parser.add_option("--tune", dest="tune", help="tune the encoding")
    parser.add_option("--preset",
                      dest="preset",
                      help="encoding preset (speed/quality tradeoff)")
    options, args = parser.parse_args()
    if len(args) != 2:
        parser.error('one input and one output is required (-h for help)')
    input_name = args[0]
    output_name = args[1]
    if not os.path.exists(input_name):
        parser.error('input "%s" does not exist' % input_name)
    if not options.force and os.path.exists(output_name):
        parser.error('output "%s" already exists (force with -f)' %
                     output_name)

    x264_options = {}
    mplayer_options = {}
    if options.video_filters:
        mplayer_options['vf'] = options.video_filters
    if options.width and options.aspect:
        mplayer_options['vf'] = 'scale=%d:%d' % calculate_format(
            options.width, options.aspect)
    if options.fps:
        mplayer_options['r'] = options.fps
    if options.bitrate:
        try:
            crf = int(options.bitrate)
        except ValueError:
            crf = dict(high=21, medium=23, low=25).get(options.bitrate, 23)
        x264_options['crf'] = crf
    if options.tune:
        x264_options['tune'] = options.tune
    if options.preset:
        x264_options['preset'] = options.preset

    h264_options = coding.OptionsBase()

    def status(format, info):
        sys.stdout.write(repr(info) + '\r')
        sys.stdout.flush()

    h264_options.status = status
    h264_options.options = x264_options

    coding.encode_h264(get_input(input_name),
                       output_name,
                       encode_options=h264_options)
    print