Fixed #8 Output file naming not working correctly

This commit is contained in:
David Tippett 2020-10-07 10:19:45 -04:00
parent ba150c3304
commit ee078031e0
1 changed files with 19 additions and 10 deletions

29
fvid.py
View File

@ -115,8 +115,15 @@ def save_bits_to_file(filepath, bits):
mime = Magic(mime=True) mime = Magic(mime=True)
mime_type = mime.from_buffer(bitstring.tobytes()) mime_type = mime.from_buffer(bitstring.tobytes())
# If filepath not passed in use defualt
# otherwise used passed in filepath
if file_path == None:
filepath = f"file{mimetypes.guess_extension(type=mime_type)}"
else:
filepath = file_path
with open( with open(
f"{filepath}/file{mimetypes.guess_extension(type=mime_type)}", "wb" filepath, "wb"
) as f: ) as f:
bitstring.tofile(f) bitstring.tofile(f)
@ -158,12 +165,18 @@ def make_image_sequence(bitstring, resolution=(1920, 1080)):
def make_video(output_filepath, image_sequence): def make_video(output_filepath, image_sequence):
if output_filepath == None:
outputfile = "file.mp4"
else:
outputfile = output_filepath
frames = glob.glob(f"{FRAMES_DIR}encoded_frames*.png") frames = glob.glob(f"{FRAMES_DIR}encoded_frames*.png")
# for one frame # for one frame
if len(frames) == 1: if len(frames) == 1:
ffmpeg.input(frames[0], loop=1, t=1).output( ffmpeg.input(frames[0], loop=1, t=1).output(
output_filepath, vcodec="libx264rgb" outputfile, vcodec="libx264rgb"
).run(quiet=True) ).run(quiet=True)
else: else:
@ -171,7 +184,7 @@ def make_video(output_filepath, image_sequence):
f"{FRAMES_DIR}encoded_frames*.png", f"{FRAMES_DIR}encoded_frames*.png",
pattern_type="glob", pattern_type="glob",
framerate="1/5", framerate="1/5",
).output(output_filepath, vcodec="libx264rgb").run(quiet=True) ).output(outputfile, vcodec="libx264rgb").run(quiet=True)
def cleanup(): def cleanup():
@ -208,14 +221,12 @@ if __name__ == "__main__":
if args.decode: if args.decode:
bits = get_bits_from_video(args.input) bits = get_bits_from_video(args.input)
file_path = "" file_path = None
if args.output: if args.output:
file_path = args.output file_path = args.output
else:
file_path = "./"
save_bits_to_file("./", bits) save_bits_to_file(file_path, bits)
elif args.encode: elif args.encode:
# get bits from file # get bits from file
@ -230,12 +241,10 @@ if __name__ == "__main__":
f"{FRAMES_DIR}encoded_frames_{index}.png" f"{FRAMES_DIR}encoded_frames_{index}.png"
) )
video_file_path = "" video_file_path = None
if args.output: if args.output:
video_file_path = args.output video_file_path = args.output
else:
video_file_path = "./file.mp4"
make_video(video_file_path, image_sequence) make_video(video_file_path, image_sequence)