#!/usr/bin/env python3 import sys import os import argparse import numpy as np import time import json # If this example doesn't work, it's probably because this path is wrong... sys.path.append('../build/src') import pypangolin as pango def main(flags): vid_uri = flags.pango vout_uri = flags.pangoOut vid = pango.VideoInput(vid_uri) vout = pango.VideoOutput(vout_uri) if vout_uri else None device_properties = vid.DeviceProperties() # print metadata print("Opened video uri: '{}' with {} x {} dimensions".format( vid_uri,vid.Width(),vid.Height())) # user specified initial frame vid.Seek(flags.startFrame) # show each frame streamsBitDepth = vid.GetStreamsBitDepth() for frame in vid: if vout: vout.WriteStreams(frame, streamsBitDepth, vid.FrameProperties(), device_properties); # frame is a list of Images! One per stream # process(frame) # printing sys.stdout.write('\rframe: {} / {}'.format(vid.GetCurrentFrameId(), vid.GetTotalFrames())) print('\nDONE') if __name__ == "__main__": # input flags parser = argparse.ArgumentParser('Read a .pango file frame by frame. Optionally stream to another video output.') parser.add_argument( '--pango', type=str, help='path to the input pango file.') parser.add_argument( '--startFrame', type=int, default=0, help='index of the start frame (inclusive)') parser.add_argument( '--pangoOut', type=str, default=None, help='path to the output pango file.') # main function main(parser.parse_args())