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
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
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
def clean_encoding_folder(*args, **kwargs): ''' delete encoding folder ''' # print args, kwargs context = args[0] shutil.rmtree(get_transcoded_folder(context))
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
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
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
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
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
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
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
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
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