# AVSLib :: sample script # Copyright (c) 2007 George Zarkadas (gzarkadas@users.sourceforge.net) # This program is free software; you can redistribute it and/or modify it under the terms of # the GNU General Public License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; # without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR # PURPOSE. See the GNU General Public License for more details. # You should have received a copy of the GNU General Public License along with this program; # if not, write to the "Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA" # load required modules LoadModule("avslib", "base", "constants") LoadModule("avslib", "base", "conversion") LoadPackage("avslib", "array") LoadPackage("avslib", "clip") LoadModule("avslib", "numeric", "rounding") # load a text file containing dir /b output # surrounded by triple quotes at the start and end of file dir = Import("files.txt") # load two text files containing integers # (target width and height for the clips in dir) tw = Import("width.txt") th = Import("height.txt") Assert(tw.IsInt && th.IsInt, "Input Error: width or/and height files contain invalid data") # after that dir is an array of filenames! # but be careful if you hand-type arrays... ArrayDelimiterSet(CRLF) # cleanup dir from invalid files (CInt is used to convert true/false to 1/0) okflag = dir.ArrayOpFunc("Exist").ArrayOpFunc("CInt") dir = dir.ArrayReduce(okflag) Assert(dir.ArrayLen > 0, "Input Error: files.txt does not contain any valid filename") # read in clips clp = dir.ArrayOpFunc("DirectShowSource") # force clip parameters (dimensions, framerate, colorspace) to be the same # assume all clips are progressive b_same_fps = (clp.ArrayOpFunc("Framerate").ArrayDistinct().ArrayLen() == 1) pixel_type = clp.JointPixelType() fps = clp.JointFPS() # to assure that target width, height match any clip's colospace # restrictions we allow for the more restrictive type (yv12) tw = RoundBs(tw, 4) th = RoundBs(th, 4) # now convert clips (resize, convertto..., changefps) clp = clp.ArrayOpFunc("Spline36Resize", String(tw) + "," + String(th)) clp = clp.ArrayOpFunc("ConvertTo" + pixel_type) clp = b_same_fps \ ? clp \ : clp.ArrayOpFunc("ConvertFPS", String(fps)) # join clips together one after the other, applying Dissolve(c1, c2, 6) in each join return clp.ArraySum(sum_func="Dissolve", sum_args="6")