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,
|
"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)
|
||||||
|
|
Reference in a new issue