Add jpeg extract functionnality (for cover image)

This commit is contained in:
Yorick Barbanneau 2015-12-13 21:15:21 +01:00
parent fe51e567ab
commit a14825c79a

View file

@ -42,7 +42,10 @@ params = {
"verbose": True, "verbose": True,
"pattern": "*", "pattern": "*",
"twopass": False, "twopass": False,
"recursive": False} "recursive": False,
"format": [],
"delay": ""
}
VERSION = "0.1dev" VERSION = "0.1dev"
@ -124,7 +127,7 @@ def process_arg(sysarg):
""" """
try: try:
opts, args = getopt.getopt( opts, args = getopt.getopt(
sysarg, "hi:o:dp:a:v:2", sysarg, "hi:o:dp:a:v:2f:t:",
[ [
"help", "help",
"input=", "input=",
@ -133,7 +136,9 @@ def process_arg(sysarg):
"pattern=", "pattern=",
"abitrate=", "abitrate=",
"vbitrate=", "vbitrate=",
"twopass" "twopass",
"format=",
"delay="
] ]
) )
except getopt.GetoptError: except getopt.GetoptError:
@ -161,6 +166,10 @@ def process_arg(sysarg):
params["twopass"] = True params["twopass"] = True
if opt in ("-r", "--recursive"): if opt in ("-r", "--recursive"):
params["recursive"] = True params["recursive"] = True
if opt in ("-f", "--format"):
params["format"] = arg
if opt in ("-t", "--delay"):
params["delay"] = arg
def encode_h264(src, dest): def encode_h264(src, dest):
@ -212,12 +221,36 @@ def encode_h264(src, dest):
execute(encode) 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__": if __name__ == "__main__":
EXEC_FFMPEG = find_executable("ffmpeg") EXEC_FFMPEG = find_executable("ffmpeg")
if not EXEC_FFMPEG: if not EXEC_FFMPEG:
print('ffmpeg not found, exiting') print('ffmpeg not found, exiting')
sys.exit(2) sys.exit(2)
process_arg(sys.argv[1:]) process_arg(sys.argv[1:])
if not params["format"]:
params["format"] = ["mp4", "jpg"]
if not params["file_input"]: if not params["file_input"]:
print("you must specify a file / directory input") print("you must specify a file / directory input")
sys.exit(2) sys.exit(2)
@ -233,9 +266,20 @@ if __name__ == "__main__":
) )
for f in video_files: for f in video_files:
logging.info('batch encode | file %s', f) logging.info('batch encode | file %s', f)
if "mp4" in params["format"]:
encode_h264(f, os.path.join( encode_h264(f, os.path.join(
params["file_output"], get_file_name(f) 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: else:
if os.path.isfile(params["file_input"]): if os.path.isfile(params["file_input"]):
if not params["file_output"]: if not params["file_output"]:
@ -247,7 +291,15 @@ if __name__ == "__main__":
get_file_name(params["file_input"]) get_file_name(params["file_input"])
) )
logging.info('%s is a file', params["file_input"]) logging.info('%s is a file', params["file_input"])
if "mp4" in params["format"]:
encode_h264(params["file_input"], params["file_output"]) encode_h264(params["file_input"], params["file_output"])
if "jpg" in params["format"]:
extract_jpg(
params["file_input"],
params["file_output"],
params["delay"]
)
else: else:
logging.info("input file desn't exist, bye bye") logging.info("input file desn't exist, bye bye")
sys.exit(2) sys.exit(2)