class_docstr: Class for storing metadata about video samples.
  
  Args:
      size_bytes (None): the size of the video on disk, in bytes
      mime_type (None): the MIME type of the video
      frame_width (None): the width of the video frames, in pixels
      frame_height (None): the height of the video frames, in pixels
      frame_rate (None): the frame rate of the video
      total_frame_count (None): the total number of frames in the video
      duration (None): the duration of the video, in seconds
      encoding_str (None): the encoding string for the video
docstr: Builds an :class:`VideoMetadata` object for the given video.
  
  Args:
      video_path_or_url: the path to a video on disk or a URL
      mime_type (None): the MIME type of the image. If not provided, it
          will be guessed
  
  Returns:
      a :class:`VideoMetadata`
docstr_tok: ["Builds","an",":","class",":","`","VideoMetadata","`","object","for","the","given","video",".","Args",":","video_path_or_url",":","the","path","to","a","video","on","disk","or","a","URL","mime_type","(","None",")",":","the","MIME","type","of","the","image",".","If","not","provided",",","it","will","be","guessed","Returns",":","a",":","class",":","`","VideoMetadata","`"]
code: def build_for(cls, video_path_or_url, mime_type=None):
      """Builds an :class:`VideoMetadata` object for the given video.
  
      Args:
          video_path_or_url: the path to a video on disk or a URL
          mime_type (None): the MIME type of the image. If not provided, it
              will be guessed
  
      Returns:
          a :class:`VideoMetadata`
      """
      stream_info = etav.VideoStreamInfo.build_for(
          video_path_or_url, mime_type=mime_type
      )
      return cls(
          size_bytes=stream_info.size_bytes,
          mime_type=stream_info.mime_type,
          frame_width=stream_info.frame_size[0],
          frame_height=stream_info.frame_size[1],
          frame_rate=stream_info.frame_rate,
          total_frame_count=stream_info.total_frame_count,
          duration=stream_info.duration,
          encoding_str=stream_info.encoding_str,
      )
  
imports: import itertools
  import logging
  import multiprocessing.dummy
  import os
  import requests
  from PIL import Image
  import eta.core.utils
  import eta.core.video
  import fiftyone
  from fiftyone.core.odm import DynamicEmbeddedDocument
  import fiftyone.core.fields
  import fiftyone.core.media
  import fiftyone.core.utils
label_desc: Use image node_id 1 for calling the VideoMetadata obj's underlying member method code with example usage: obj.build_for(cls, video_path_or_url, mime_type) and returns: cls