  import cv2
  
  from lib.alignments import Alignments
  from lib.faces_detect import DetectedFace
  from lib.utils import _image_extensions, hash_image_file, hash_encode_image
  
  logger = logging.getLogger(__name__)  # pylint: disable=invalid-name
  
  
  class AlignmentData(Alignments):
 
</s> remove                        set_system_verbosity)
 </s> add                        set_system_verbosity, _video_extensions) </s> remove # TODO merge alignments
 </s> add  </s> remove         src = os.path.join(self.folder, filename)
        logger.trace("Loading image: '%s'", src)
        image = cv2.imread(src)  # pylint: disable=no-member
 </s> add         if self.vid_cap:
            image = self.load_video_frame(filename)
        else:
            src = os.path.join(self.folder, filename)
            logger.trace("Loading image: '%s'", src)
            image = cv2.imread(src)  # pylint: disable=no-member
        return image

    def load_video_frame(self, filename):
        """ Load a requested frame from video """
        frame = os.path.splitext(filename)[0]
        logger.trace("Loading video frame: '%s'", frame)
        frame_no = int(frame[frame.rfind("_") + 1:])
        self.vid_cap.set(cv2.CAP_PROP_POS_FRAMES, frame_no)  # pylint: disable=no-member
        _, image = self.vid_cap.read()
from lib.utils import _image_extensions, _video_extensions, hash_image_file, hash_encode_image
  import cv2
  
  from lib.alignments import Alignments
  from lib.faces_detect import DetectedFace
from lib.utils import _image_extensions, _video_extensions, hash_image_file, hash_encode_image
  
  logger = logging.getLogger(__name__)  # pylint: disable=invalid-name
  
  
  class AlignmentData(Alignments):
keep keep keep keep replace keep keep keep keep keep
 Add ability to extract from and convert from a video file (#559)

* Add ability to extract from and convert from a video file

* Update cli helptext. Add filebrowser button for GUI input

* Add video support to Alignments Tool 
tools/lib_alignments/media.py