Vidsz: Video's Wizard
Common Wrapper/Interface around various video reading/writing tools to make video reading stable, consistent and super easy around different systems and OS.
pip install vidsz
Backends
- OpenCV (in-development)
Features
- Easy and hassle free (read/write with
for-loop
,with-block
,while-loop
) - Batch Support. Read and write frames in batches.
Read Video
for-loop
Read with from vidsz.opencv import Reader
# open reader
reader = Reader("static/countdown.mp4")
# read frame with for loop
for frame in reader:
# use ndarry-frame however you like
pass
# release
reader.release()
with-block
Read with a with Reader("static/countdown.mp4") as reader:
frame = reader.read()
while-loop
Read with a # this follows similar behavior as opencv counterpart
while reader.is_open():
# returns ndarry-frame or None if nothing left to read
frame = reader.read()
if frame is None:
break
batch
Read frames in a with Reader("dummy.mp4", batch_size=8, dynamic_batch=True) as reader:
batch_frames = reader.read()
Get properties of the reader
# print info: width, height, fps etc.
print(reader)
# access specific things
print(reader.width, reader.height, reader.fps)
# access number-of-frames/seconds/minutes that have been read
print(reader.frame_count, reader.seconds, reader.minutes)
Write Video
Write a single frame
from vidsz.opencv import Reader, Writer
video_fname = "static/countdown.mp4"
# open reader
reader = Reader(video_fname)
# start writer with the Reader object
# by default it'll append _out in the name of the output video
writer = Writer(reader)
# start writer with your settings;
# you can also give any combinations of
# following settings with Reader object to
# overwrite default settings
writer = Writer(name="out.mp4", width=1920, height=1080, fps=15)
# print writer info
print(writer)
# write single frame
frame = reader.read()
writer.write(frame)
for-loop
Write with # read frame with for loop
for frame in reader:
# write the ndarry-frame
writer.write(frame)
batch
Write a # read batches and write
with Reader("dummy.mp4", batch_size=8, dynamic_batch=True) as reader:
batch_frames = reader.read()
# write list or ndarray of frames
writer.write_all(batch_frames)
# close off
reader.release()
writer.release()
with-block
Write with a # using "with" block, write "static/countdown_out.mp4" (clone of input)
with Reader(video_fname) as reader:
with Writer(reader, name="out_with.mp4") as writer:
writer.write_all(reader)
Logo-Attribution Designed by brgfx / Freepik