def SPExtractVideo(context): args = context.args inputFile = get_all_files(args.inputData) VideoEd.extract_video(inputFile[0], args.outputData, args.outputExt, args.fps) return args.outputData
def prepare(workspace, detector="s3fd", manual_fix=False): import os import shutil from mainscripts import Extractor from mainscripts import VideoEd for f in os.listdir(workspace): ext = os.path.splitext(f)[-1] if ext not in ['.mp4', '.avi']: continue if f.startswith("result"): continue # 获取所有的data_dst文件 tmp_dir = os.path.join(workspace, "_tmp") tmp_aligned = os.path.join(tmp_dir, "aligned") tmp_video_dir = os.path.join(tmp_dir, "video") if os.path.exists(tmp_dir): shutil.rmtree(tmp_dir) if not os.path.exists(tmp_dir): os.mkdir(tmp_dir) os.mkdir(tmp_video_dir) video = os.path.join(workspace, f) # 提取帧 VideoEd.extract_video(video, tmp_dir, "png", 0) # 提取人脸 if detector == "manual": import winsound winsound.Beep(300, 500) Extractor.main(tmp_dir, tmp_aligned, detector=detector, manual_fix=manual_fix) # fanseg Extractor.extract_fanseg(tmp_aligned) if detector != "manual": # # 两组人脸匹配 # skip_by_pitch(os.path.join(workspace, "data_src", "aligned"), os.path.join(tmp_dir, "aligned")) # 排序 dfl.dfl_sort_by_hist(tmp_aligned) # 保存video shutil.copy(video, tmp_video_dir) # 重命名 fname = f.replace(ext, "") dst_dir = os.path.join(workspace, "data_dst_%s_%s" % (get_time_str(), fname)) shutil.move(tmp_dir, dst_dir) # 移动video data_trash = os.path.join(workspace, "../trash_workspace") if not os.path.exists(data_trash): os.mkdir(data_trash) shutil.move(video, data_trash) import winsound winsound.Beep(300, 500)
def process_videoed_extract_video(arguments): os_utils.set_process_lowest_prio() from mainscripts import VideoEd VideoEd.extract_video (arguments.input_file, arguments.output_dir, arguments.output_ext, arguments.fps)
def process_videoed_extract_video(arguments): from mainscripts import VideoEd VideoEd.extract_video (arguments.input_file, arguments.output_dir, arguments.output_ext, arguments.fps)
def extract(): import os import shutil from mainscripts import VideoEd from mainscripts import Extractor from interact import interact as io root_dir = get_root_path() extract_workspace = os.path.join(root_dir, "extract_workspace") target_dir = os.path.join(extract_workspace, "aligned_") valid_exts = [".mp4", ".avi", ".wmv", ".mkv"] fps = io.input_int( "Enter FPS ( ?:help skip:fullfps ) : ", 0, help_message= "How many frames of every second of the video will be extracted.") min_pixel = io.input_int("Enter Min Pixel ( ?:help skip: 512) : ", 512, help_message="Min Pixel") def file_filter(file): if os.path.isdir(os.path.join(extract_workspace, file)): return False ext = os.path.splitext(file)[-1] if ext not in valid_exts: return False return True files = list(filter(file_filter, os.listdir(extract_workspace))) files.sort() pos = 0 for file in files: pos += 1 io.log_info("@@@@@ Start Process %s, %d / %d" % (file, pos, len(files))) # 提取图片 input_file = os.path.join(extract_workspace, file) output_dir = os.path.join(extract_workspace, "extract_images") if not os.path.exists(output_dir): os.mkdir(output_dir) for f in os.listdir(output_dir): os.remove(os.path.join(output_dir, f)) VideoEd.extract_video(input_file, output_dir, output_ext="png", fps=fps) io.log_info("@@@@@ Start Extract %s, %d / %d" % (file, pos, len(files))) # 提取人脸 input_dir = output_dir output_dir = os.path.join(extract_workspace, "_current") debug_dir = os.path.join(extract_workspace, "debug") Extractor.main(input_dir, output_dir, debug_dir, "s3fd", min_pixel=min_pixel) # fanseg io.log_info("@@@@@ Start FanSeg %s, %d / %d" % (file, pos, len(files))) Extractor.extract_fanseg(output_dir) # 复制到结果集 io.log_info("@@@@@ Start Move %s, %d / %d" % (file, pos, len(files))) if not os.path.exists(target_dir): os.mkdir(target_dir) ts = get_time_str() for f in os.listdir(output_dir): src = os.path.join(output_dir, f) dst = os.path.join(target_dir, "%s_%s" % (ts, f)) shutil.move(src, dst) # 全部做完,删除该文件 io.log_info("@@@@@ Finish %s, %d / %d" % (file, pos, len(files))) os.remove(os.path.join(extract_workspace, file)) os.rmdir(output_dir)
def process_videoed_extract_video(arguments): osex.set_process_lowest_prio() from mainscripts import VideoEd VideoEd.extract_video(arguments.input_file, arguments.output_dir, arguments.output_ext, arguments.fps, arguments.start_frame, arguments.end_frame)