class_docstr: Format a video for logging to W&B.
  
  Arguments:
      data_or_path: (numpy array, string, io)
          Video can be initialized with a path to a file or an io object.
          The format must be "gif", "mp4", "webm" or "ogg".
          The format must be specified with the format argument.
          Video can be initialized with a numpy tensor.
          The numpy tensor must be either 4 dimensional or 5 dimensional.
          Channels should be (time, channel, height, width) or
          (batch, time, channel, height width)
      caption: (string) caption associated with the video for display
      fps: (int) frames per second for video. Default is 4.
      format: (string) format of video, necessary if initializing with path or io object.
  
  Examples:
      ### Log a numpy array as a video
      <!--yeadoc-test:log-video-numpy-->
      ```python
      import numpy as np
      import wandb
  
      wandb.init()
      # axes are (time, channel, height, width)
      frames = np.random.randint(low=0, high=256, size=(10, 3, 100, 100), dtype=np.uint8)
      wandb.log({"video": wandb.Video(frames, fps=4)})
      ```
class_docstr_tok: ["Format","a","video","for","logging","to","W","&","B",".","Arguments",":","data_or_path",":","(","numpy","array",",","string",",","io",")","Video","can","be","initialized","with","a","path","to","a","file","or","an","io","object",".","The","format","must","be","``","gif","''",",","``","mp4","''",",","``","webm","''","or","``","ogg","''",".","The","format","must","be","specified","with","the","format","argument",".","Video","can","be","initialized","with","a","numpy","tensor",".","The","numpy","tensor","must","be","either","4","dimensional","or","5","dimensional",".","Channels","should","be","(","time",",","channel",",","height",",","width",")","or","(","batch",",","time",",","channel",",","height","width",")","caption",":","(","string",")","caption","associated","with","the","video","for","display","fps",":","(","int",")","frames","per","second","for","video",".","Default","is","4.","format",":","(","string",")","format","of","video",",","necessary","if","initializing","with","path","or","io","object",".","Examples",":","#","#","#","Log","a","numpy","array","as","a","video","<","!","--","yeadoc-test",":","log-video-numpy","--",">","``","`","python","import","numpy","as","np","import","wandb","wandb.init","(",")","#","axes","are","(","time",",","channel",",","height",",","width",")","frames","=","np.random.randint","(","low=0",",","high=256",",","size=","(","10",",","3",",","100",",","100",")",",","dtype=np.uint8",")","wandb.log","(","{","``","video","''",":","wandb.Video","(","frames",",","fps=4",")","}",")","``","`"]
code: def seq_to_json(
      cls: Type["Video"],
      seq: Sequence["BatchableMedia"],
      run: "LocalRun",
      key: str,
      step: Union[int, str],
  ) -> dict:
      base_path = os.path.join(run.dir, cls.get_media_subdir())
      filesystem.mkdir_exists_ok(base_path)
  
      meta = {
          "_type": "videos",
          "count": len(seq),
          "videos": [v.to_json(run) for v in seq],
          "captions": Video.captions(seq),
      }
      return meta
  
file_path: wandb/wandb/sdk/data_types/video.py
imports: import logging
  import os
  from io import BytesIO
  from typing import TYPE_CHECKING, Any, Dict, Optional, Sequence, Type, Union
  from wandb import util
  from wandb.sdk.lib import filesystem, runid
  from .None import _dtypes
  from ._private import MEDIA_TMP
  from .base_types.media import BatchableMedia
label_desc: Use image node_id 6 for calling the Video obj's underlying member method code with example usage: obj.seq_to_json(cls, seq, run, key, step) and returns: meta