From a14825c79a45dd9e948c8cee3f784262cfe49255 Mon Sep 17 00:00:00 2001 From: Yorick Date: Sun, 13 Dec 2015 21:15:21 +0100 Subject: [PATCH] Add jpeg extract functionnality (for cover image) --- export-video.py | 66 +++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 59 insertions(+), 7 deletions(-) diff --git a/export-video.py b/export-video.py index 0c81634..7050fe8 100755 --- a/export-video.py +++ b/export-video.py @@ -42,7 +42,10 @@ params = { "verbose": True, "pattern": "*", "twopass": False, - "recursive": False} + "recursive": False, + "format": [], + "delay": "" + } VERSION = "0.1dev" @@ -124,7 +127,7 @@ def process_arg(sysarg): """ try: opts, args = getopt.getopt( - sysarg, "hi:o:dp:a:v:2", + sysarg, "hi:o:dp:a:v:2f:t:", [ "help", "input=", @@ -133,7 +136,9 @@ def process_arg(sysarg): "pattern=", "abitrate=", "vbitrate=", - "twopass" + "twopass", + "format=", + "delay=" ] ) except getopt.GetoptError: @@ -161,6 +166,10 @@ def process_arg(sysarg): params["twopass"] = True if opt in ("-r", "--recursive"): params["recursive"] = True + if opt in ("-f", "--format"): + params["format"] = arg + if opt in ("-t", "--delay"): + params["delay"] = arg def encode_h264(src, dest): @@ -212,12 +221,36 @@ def encode_h264(src, dest): execute(encode) +def extract_jpg(src, dest, delay): + """ + Extract an image from a video file + """ + logging.info( + "extract_jpeg() started to %s from %s with %s s delay", + src, + dest, + delay + ) + encode = [ + EXEC_FFMPEG, + "-ss", delay, + "-i", src, + "-f", "image2", + "-vframes", "1", + dest+".jpg" + ] + logging.debug(encode) + execute(encode) + + if __name__ == "__main__": EXEC_FFMPEG = find_executable("ffmpeg") if not EXEC_FFMPEG: print('ffmpeg not found, exiting') sys.exit(2) process_arg(sys.argv[1:]) + if not params["format"]: + params["format"] = ["mp4", "jpg"] if not params["file_input"]: print("you must specify a file / directory input") sys.exit(2) @@ -233,9 +266,20 @@ if __name__ == "__main__": ) for f in video_files: logging.info('batch encode | file %s', f) - encode_h264(f, os.path.join( - params["file_output"], get_file_name(f) - )) + if "mp4" in params["format"]: + encode_h264(f, os.path.join( + params["file_output"], get_file_name(f) + )) + if "jpg" in params["format"]: + extract_jpg( + f, + os.path.join( + params["file_output"], + get_file_name(f) + ), + params["delay"] + ) + else: if os.path.isfile(params["file_input"]): if not params["file_output"]: @@ -247,7 +291,15 @@ if __name__ == "__main__": get_file_name(params["file_input"]) ) logging.info('%s is a file', params["file_input"]) - encode_h264(params["file_input"], params["file_output"]) + if "mp4" in params["format"]: + encode_h264(params["file_input"], params["file_output"]) + if "jpg" in params["format"]: + extract_jpg( + params["file_input"], + params["file_output"], + params["delay"] + ) + else: logging.info("input file desn't exist, bye bye") sys.exit(2)