def video_path(from_path: str, asset_path: str, content_type=None, asset_rel_path: str = None) -> V1EventVideo: copy_file_path(from_path, asset_path) return V1EventVideo(path=asset_rel_path or asset_path, content_type=content_type)
def make_video(asset_path: str, tensor, fps, content_type="gif", asset_rel_path: str = None): try: import moviepy # noqa: F401 except ImportError: logger.warning(MOVIEPY_ERROR_MESSAGE) return UNKNOWN try: from moviepy import editor as mpy except ImportError: logger.warning( "moviepy is installed, but can't import moviepy.editor.", "Some packages could be missing [imageio, requests]", ) return t, h, w, c = tensor.shape # encode sequence of images into gif string clip = mpy.ImageSequenceClip(list(tensor), fps=fps) check_or_create_path(asset_path, is_dir=False) try: # older version of moviepy if content_type == "gif": clip.write_gif(asset_path, verbose=False, progress_bar=False) else: clip.write_videofile(asset_path, verbose=False, progress_bar=False) except TypeError: if content_type == "gif": clip.write_gif(asset_path, verbose=False) else: clip.write_videofile(asset_path, verbose=False) return V1EventVideo( height=h, width=w, colorspace=c, path=asset_rel_path or asset_path, content_type=content_type, )
def video_path(from_path: str, asset_path: str, content_type=None) -> V1EventVideo: check_or_create_path(asset_path, is_dir=False) shutil.copy(from_path, asset_path) return V1EventVideo(path=asset_path, content_type=content_type)