| CMIF video tools |
| ================ |
| |
| This directory contains Python and C programs to manipulate files |
| containing digitized video in the "CMIF video format". |
| |
| |
| History |
| ------- |
| |
| We started this in October 1991, when we had a large framegrabber |
| board on loan from SGI for a few weeks: we developed a movie recording |
| program (camcorder.py) and added numerous features, including still |
| frame capture and synchronous sound recording using a second machine |
| (the machine holding the framegrabber board didn't have audio). |
| |
| During the following months, when we started using and processing the |
| recorded film fragments, the "CMIF video format" was revised several |
| times, and we eventually created an object-oriented interface for |
| reading and writing various incarnations of these files, called VFile. |
| (This module is also used by our flagship application, the CMIF |
| editor, not in this directory but in /ufs/guido/mm/.) |
| |
| When we got our own Indigo entry-level video board (in June 1992) and |
| a version of the Irix video library that supported capturing PAL |
| format (in August 1992), Sjoerd added an interface to the video |
| library to Python (sv) and Guido wrote Vrec.py (based upon a still |
| frame grabber by Sjoerd, in turn based upon SGI demo code in C) to |
| record a movie using it. Vrec was soon followed by modernized |
| versions of the other programs (Vinfo, Vplay, Vtime) and an |
| interactive editor (Vedit). Finally, VFile was rewritten for more |
| modularity, functionality and robustness, and various other tools were |
| added as needed. |
| |
| Guido van Rossum |
| Jack Jansen |
| Sjoerd Mullender |
| |
| |
| Overview of files |
| ----------------- |
| |
| cmif-film.ms description of the CMIF video file format (a little |
| out of date) |
| |
| |
| These are programs with a command line interface: |
| |
| Vrec.py record video movies using the Indigo video library and |
| board |
| |
| Vplay.py play video movies |
| |
| Vinfo.py show statistics on movies |
| |
| Vtime.py (unrelated to vtime!!!) Copy a video file, |
| manipulating the time codes (e.g. faster/slower, or |
| regenerate time codes, or drop frames too close apart) |
| |
| Vmkjpeg.py compress an rgb or grey video file to jpeg[grey] format |
| |
| Vunjpeg.py expand a jpeg[grey] video file to rgb or grey format |
| |
| Vedit.py interactive video editing program |
| |
| Vsend.py unicast or multicast live video as UDP packets |
| |
| Vreceive.py receive transmissions from Vsend |
| |
| |
| These modules are used by the above programs: |
| |
| VFile.py classes that read and write CMIF video files |
| |
| Viewer.py two viewer classes used by Vedit |
| |
| LiveVideoIn.py live video input class, used by Vsend |
| |
| LiveVideoOut.py live video output class, used by Vsend and Vreceive |
| |
| |
| The following are C programs, either for efficiency or because they |
| need to link with a C library: |
| |
| squash.c make a movie smaller by averaging pixels |
| usage: squash factor [bits] <moviefile >newmoviefile |
| factor x and y compression factor |
| bits #bits left per sample in result (default 8) |
| |
| squash2.c make a movie smaller by dropping pixels |
| usage: squash2 factor <moviefile >newmoviefile |
| factor x and y compression factor |
| |
| tomono.c like squash2 but outputs a monochrome movie |
| |
| v2i.c convert the first frame of a movie file to SGI .rgb format |
| link with -limage |
| |
| i2v.c convert an rgb file to "lrectwrite" format (this was |
| used one time by the CMIF editor) |
| |
| |
| These programs are obsolete, but kept around for sentimental reasons. |
| Most either don't work any more because they don't use VFile and hence |
| haven't followed the frequent changes in the CMIF video file format; |
| or they are dependent upon hardware we don't have (SGI's previous |
| generation framegrabber). Except for cam.py / tv.py, their |
| functionality is present in the suite of programs whose name begins |
| with 'V' listed above. |
| |
| cam.py network real-time tv broadcast; see tv.py |
| usage: cam [packfactor [host]] |
| specifying 'all' for host broadcasts |
| |
| camcorder.py record video movies or make snapshots (in movie format) |
| usage: camcorder [-c] [-a audiohost [-s]] [-p pf] [moviefile] |
| -c color (equivalent to -p 0) |
| -a audiohost syncaudio is running on audiohost |
| -s start syncaudio (on audiohost) |
| -p packfactor packfactor (default 2; 0 records color) |
| moviefile (default film.video) |
| keyboard commands: |
| s stop grabbing (single step if already stopped) |
| c continuous grabbing |
| r start recording |
| p pause recording (record single frame if paused) |
| ESC quit |
| |
| statit.py various statistics operations on movie files |
| |
| syncaudio.py record audio synchronized with camcorder -a |
| usage: syncaudio videohost soundfile |
| soundfile format: 16 bits/sample, 16000 samples/sec, 1 channel |
| (actually, you'd better set the sampling rate to 16000 |
| with the audio panel) |
| |
| tv.py receiver for transmissions from cam.py |
| |
| vcopy.py selectively write frames from one movie file to another |
| usage: vcopy infile outfile |
| commands: 'n' gets next frame; 'w' writes current frame |
| |
| video.py player for movies recorded by camcorder.py |
| usage: video [-l] [-p pf] [-m mag] [-F] |
| [moviefile [soundfile [skipbytes]]] |
| -p pf override packfactor (to zoom) |
| -l looping -- restart movie when done |
| -m mag magnification |
| -F run at max speed |
| moviefile default is film.video |
| soundfile default is none (no sound) |
| skipbytes byte offset in soundfile where sound starts |
| |
| vinfo.py print summary of movie file(s) |
| usage: vinfo [-d] moviefile ... |
| -d print delta times (default: print abs times) |
| |
| vpregs.py definition of VP registers |
| |
| vtime.py virtual time module imported by syncaudio.py and camcorder.py |
| |
| colorsys.py color system conversions (now part of std python lib) |