コード例 #1
0
def chunk_dash(*args, **kwargs):
    '''
    create dash chunks for every video in the transcoded folder
    '''
    logger.info("chunking dash")
    logger.info(args)
    logger.info(kwargs)
    context = args[0]
    segtime = kwargs['segtime']
    if not os.path.exists(get_dash_folder(context)):
        os.makedirs(get_dash_folder(context))

    args = "MP4Box -dash " + str(segtime) + "000 -profile onDemand "
    files_in = [
        os.path.join(get_transcoded_folder(context), f)
        for f in os.listdir(get_transcoded_folder(context))
    ]
    for i in range(0, len(files_in)):
        args += files_in[i] + "#video:id=v" + str(i) + " "

    args += files_in[0] + "#audio:id=a0 "
    args += " -out " + get_dash_mpd_file_path(context)
    print args
    subprocess.call(args, shell=True)
    return context
コード例 #2
0
def transcode(*args):
    '''
    transcode the video to mp4 format
    '''
    # print args, kwargs
    context = args[0]
    for bitrate in context["bitrateList"]:
        parameters = compute_quantification_parameters(bitrate)
        if not os.path.exists(get_transcoded_folder(context)):
            os.makedirs(get_transcoded_folder(context))
        args = get_welsenc_path(context) + " -org " + get_yuv_file(
            context
        ) + " -bf " + get_transcoded_file(context, bitrate) + " -sw " + str(
            context["track_width"]) + " -sh " + str(
                context["track_height"]
            ) + " -tarb " + str(bitrate) + " -minqp " + str(
                parameters["min_qp"]) + " -maxqp " + str(
                    parameters["max_qp"]
                ) + " -ltarb " + get_layer_path(context) + " " + str(
                    bitrate) + " -lqp " + get_layer_path(context) + " " + str(
                        parameters["in_qp"]
                    ) + " -dw " + get_layer_path(context) + " " + str(
                        context["target_width"]) + " -dh " + get_layer_path(
                            context) + " " + str(context["target_height"])
        run_background(args)
        print args

    return context
コード例 #3
0
def create_yuv_file(*args, **kwargs):
    context = args[0]
    if not os.path.exists(get_transcoded_folder(context)):
        os.makedirs(get_transcoded_folder(context))
    run_background("ffmpeg -i " + context["original_file"] +
                   " -vcodec rawvideo -pix_fmt yuv420p " +
                   get_yuv_file(context))
    return context
コード例 #4
0
def clean_encoding_folder(*args, **kwargs):
    '''
    delete encoding folder
    '''
    # print args, kwargs
    context = args[0]
    shutil.rmtree(get_transcoded_folder(context))
コード例 #5
0
def transcode(*args, **kwargs):
    '''
    transcode the video to mp4 format
    '''
    # print args, kwargs
    context = args[0]
    context["bitrate"] = kwargs['bitrate']
    dimsp = str(context["target_width"]) + ":" + str(context["target_height"])
    if not os.path.exists(get_transcoded_folder(context)):
        os.makedirs(get_transcoded_folder(context))
    subprocess.call(
        "ffmpeg -i " + context[
            "original_file"] + " -c:v libx264 -profile:v main -level 3.1 -b:v 100k -vf scale=" + dimsp + " -c:a aac -strict -2 -force_key_frames expr:gte\(t,n_forced*4\) " + get_transcoded_file(
            context),
        shell=True)
    return context
コード例 #6
0
ファイル: commons.py プロジェクト: nherbaut/jdev2015T6A01
def deploy_original_file(*args, **kwargs):
    context = args[0]
    encoding_folder = get_transcoded_folder(context)
    if not os.path.exists(encoding_folder):
        os.makedirs(encoding_folder)
    shutil.copyfile(context["original_file"], os.path.join(encoding_folder, "original.mp4"))
    return context
コード例 #7
0
def clean_encoding_folder(*args, **kwargs):
    '''
    delete encoding folder
    '''
    # print args, kwargs
    context = args[0]
    shutil.rmtree(get_transcoded_folder(context))
コード例 #8
0
def deploy_original_file(*args, **kwargs):
    context = args[0]
    encoding_folder = get_transcoded_folder(context)
    if not os.path.exists(encoding_folder):
        os.makedirs(encoding_folder)
    shutil.copyfile(context["original_file"],
                    os.path.join(encoding_folder, "original.mp4"))
    return context
コード例 #9
0
def transcode(*args, **kwargs):
    '''
    transcode the video to mp4 format
    '''
    # print args, kwargs
    context = args[0]
    context["bitrate"] = kwargs['bitrate']
    context["segtime"] = kwargs['segtime']
    dimsp = str(context["target_width"]) + ":" + str(context["target_height"])
    if not os.path.exists(get_transcoded_folder(context)):
        os.makedirs(get_transcoded_folder(context))
    run_background(
        "ffmpeg -i " + context["original_file"] +
        " -c:v libx264 -profile:v main -level 3.1 -b:v " +
        str(context["bitrate"]) + "k -vf scale=" + dimsp +
        " -c:a aac -strict -2 -force_key_frames expr:gte\(t,n_forced*" +
        str(context["segtime"]) + "\) " + get_transcoded_file(context))
    return context
コード例 #10
0
def chunk_dash(*args, **kwargs):
    '''
    create dash chunks for every video in the transcoded folder
    '''
    # print args, kwargs
    context = args[0]
    if not os.path.exists(get_dash_folder(context)):
        os.makedirs(get_dash_folder(context))

    args = "MP4Box -dash 4000 -profile onDemand "
    files_in = [os.path.join(get_transcoded_folder(context), f) for f in os.listdir(get_transcoded_folder(context))]
    for i in range(0, len(files_in)):
        args += files_in[i] + "#video:id=v" + str(i) + " "

    args += " -out " + get_dash_mpd_file_path(context)
    print args
    subprocess.call(args, shell=True)
    return context
コード例 #11
0
def chunk_dash(*args, **kwargs):
    '''
    create dash chunks for every video in the transcoded folder
    '''
    # print args, kwargs
    context = args[0]
    segtime = kwargs['segtime']
    if not os.path.exists(get_dash_folder(context)):
        os.makedirs(get_dash_folder(context))

    args = "MP4Box -dash " + str(segtime) + "000 -profile onDemand "
    files_in = [os.path.join(get_transcoded_folder(context), f) for f in os.listdir(get_transcoded_folder(context))]
    for i in range(0, len(files_in)):
        args += files_in[i] + "#video:id=v" + str(i) + " "

    args += files_in[0] + "#audio:id=a0 "
    args += " -out " + get_dash_mpd_file_path(context)
    print args
    run_background(args)
    return context
コード例 #12
0
def create_descriptions(*args):
    context = args[0]
    if not os.path.exists(get_description_folder(context)):
        os.makedirs(get_description_folder(context))

    #if not os.path.exists(get_plus_description_folder(context)):
    #	os.makedirs(get_plus_description_folder(context))

    args = get_postProcessor_path(context) + " 2 " + get_transcoded_folder(
        context) + "/" + str(
            context["lowBitrate"]
        ) + ".h264 " + get_transcoded_folder(context) + "/" + str(
            context["highBitrate"]) + ".h264 " + get_description_folder(
                context) + " " + str(context["changeFrameRate"]) + " " + str(
                    context["desNum"])
    #plus_args = get_postProcessor_path(context)+" 3 " + get_transcoded_folder(context) + "/" + str(context["midBitrate"])+".h264 " +  get_transcoded_folder(context) + "/" + str(context["midBitrate"])+".h264 " + get_transcoded_folder(context) + "/" + str(context["highBitrate"])+".h264 " + get_plus_description_folder(context) +" " + str(context["changeFrameRate"]) + " " + str(context["desNum"])

    run_background(args)
    #run_background(plus_args)
    print args
    #print(plus_args)
    return context
コード例 #13
0
def transcode(*args, **kwargs):
    '''
    transcode the video to mp4 format
    '''
    # print args, kwargs
    context = args[0]
    context["bitrate"] = kwargs['bitrate']
    context["segtime"] = kwargs['segtime']
    dimsp = str(context["target_width"]) + ":" + str(context["target_height"])
    if not os.path.exists(get_transcoded_folder(context)):
        try:
            os.makedirs(get_transcoded_folder(context))
        except OSError as e:
            pass

    command_line = "ffmpeg -i " + context[
        "original_file"] + " -c:v libx264 -profile:v main -level 3.1 -b:v " + str(
            context["bitrate"]
        ) + "k -vf scale=" + dimsp + " -c:a aac -strict -2 -force_key_frames expr:gte\(t,n_forced*" + str(
            context["segtime"]) + "\) " + get_transcoded_file(context)
    print("transcoding commandline %s" % command_line)
    subprocess.call(command_line, shell=True)
    return context
コード例 #14
0
ファイル: commons.py プロジェクト: nherbaut/jdev2015T6A01
def transcode(*args, **kwargs):
    '''
    transcode the video to mp4 format
    '''
    # print args, kwargs
    context = args[0]
    context["bitrate"] = kwargs['bitrate']
    context["segtime"] = kwargs['segtime']
    dimsp = str(context["target_width"]) + ":" + str(context["target_height"])
    if not os.path.exists(get_transcoded_folder(context)):
        try:
            os.makedirs(get_transcoded_folder(context))
        except OSError as e:
            pass

    command_line = "ffmpeg -i " + context[
        "original_file"] + " -c:v libx264 -profile:v main -level 3.1 -b:v " + str(context[
        "bitrate"]) + "k -vf scale=" + dimsp + " -c:a aac -strict -2 -force_key_frames expr:gte\(t,n_forced*" + str(
        context["segtime"]) + "\) " + get_transcoded_file(
        context)
    print("transcoding commandline %s" % command_line)
    subprocess.call(command_line,
                    shell=True)
    return context
コード例 #15
0
def clean_useless_folders(*args):
    '''
	delete encoding folder
	'''
    # print args, kwargs
    context = args[0]
    shutil.rmtree(get_transcoded_folder(context))
    shutil.rmtree(get_description_folder(context))
    shutil.rmtree(get_dash_mpd_file_folder(context))
    #shutil.rmtree(get_plus_description_folder(context))
    i = 1
    while i <= int(context["desNum"]):
        #shutil.rmtree(get_mp4_description_folder(context,i))
        shutil.rmtree(get_dash_folder(context, i))
        #shutil.rmtree(get_plus_mp4_description_folder(context,i))
        #shutil.rmtree(get_plus_dash_folder(context,i))
        i += 1