From a26bb26db85ce67b464182d8a5508561d3fadb90 Mon Sep 17 00:00:00 2001 From: magicse Date: Wed, 8 Nov 2023 13:46:54 +0200 Subject: [PATCH 1/3] Update video_mode.py Added support for video files in MTS format --- src/video_mode.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/video_mode.py b/src/video_mode.py index 69d593d..2e6418a 100644 --- a/src/video_mode.py +++ b/src/video_mode.py @@ -20,7 +20,22 @@ def open_path_as_images(path, maybe_depthvideo=False): img.seek(i) frames.append(img.convert('RGB')) return 1000 / img.info['duration'], frames - if suffix in ['.avi'] and maybe_depthvideo: + if suffix.lower() == '.mts': + import imageio_ffmpeg + import av + container = av.open(path) + frames = [] + for packet in container.demux(video=0): + for frame in packet.decode(): + # Convert the frame to a NumPy array + numpy_frame = frame.to_ndarray(format='rgb24') + # Convert the NumPy array to a Pillow Image + image = Image.fromarray(numpy_frame) + frames.append(image) + fps = container.streams.video[0].average_rate + container.close() + return fps, frames + if suffix.lower in ['.avi'] and maybe_depthvideo: try: import imageio_ffmpeg # Suppose there are in fact 16 bits per pixel @@ -40,7 +55,7 @@ def open_path_as_images(path, maybe_depthvideo=False): finally: if 'gen' in locals(): gen.close() - if suffix in ['.webm', '.mp4', '.avi']: + if suffix.lower in ['.webm', '.mp4', '.avi']: from moviepy.video.io.VideoFileClip import VideoFileClip clip = VideoFileClip(path) frames = [Image.fromarray(x) for x in list(clip.iter_frames())] From 5eda31a1092275333ace489e506a393e1cfff916 Mon Sep 17 00:00:00 2001 From: magicse Date: Wed, 8 Nov 2023 14:55:32 +0200 Subject: [PATCH 2/3] Update video_mode.py suffix.lower() --- src/video_mode.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/video_mode.py b/src/video_mode.py index 2e6418a..88489f4 100644 --- a/src/video_mode.py +++ b/src/video_mode.py @@ -13,7 +13,7 @@ def open_path_as_images(path, maybe_depthvideo=False): """Takes the filepath, returns (fps, frames). Every frame is a Pillow Image object""" suffix = pathlib.Path(path).suffix - if suffix == '.gif': + if suffix.lower() == '.gif': frames = [] img = Image.open(path) for i in range(img.n_frames): @@ -32,10 +32,10 @@ def open_path_as_images(path, maybe_depthvideo=False): # Convert the NumPy array to a Pillow Image image = Image.fromarray(numpy_frame) frames.append(image) - fps = container.streams.video[0].average_rate + fps = floa(container.streams.video[0].average_rate) container.close() return fps, frames - if suffix.lower in ['.avi'] and maybe_depthvideo: + if suffix.lower() in ['.avi'] and maybe_depthvideo: try: import imageio_ffmpeg # Suppose there are in fact 16 bits per pixel @@ -55,7 +55,7 @@ def open_path_as_images(path, maybe_depthvideo=False): finally: if 'gen' in locals(): gen.close() - if suffix.lower in ['.webm', '.mp4', '.avi']: + if suffix.lower() in ['.webm', '.mp4', '.avi']: from moviepy.video.io.VideoFileClip import VideoFileClip clip = VideoFileClip(path) frames = [Image.fromarray(x) for x in list(clip.iter_frames())] From 7a950b4b98b5de29158fb659120035090f7e7a5f Mon Sep 17 00:00:00 2001 From: magicse Date: Wed, 8 Nov 2023 15:08:50 +0200 Subject: [PATCH 3/3] Update video_mode.py some mistype --- src/video_mode.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/video_mode.py b/src/video_mode.py index 88489f4..b9bc519 100644 --- a/src/video_mode.py +++ b/src/video_mode.py @@ -32,7 +32,7 @@ def open_path_as_images(path, maybe_depthvideo=False): # Convert the NumPy array to a Pillow Image image = Image.fromarray(numpy_frame) frames.append(image) - fps = floa(container.streams.video[0].average_rate) + fps = float(container.streams.video[0].average_rate) container.close() return fps, frames if suffix.lower() in ['.avi'] and maybe_depthvideo: