Add jpeg extract functionnality (for cover image)
This commit is contained in:
parent
fe51e567ab
commit
a14825c79a
1 changed files with 59 additions and 7 deletions
|
@ -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)
|
||||
|
|
Reference in a new issue