Guido van Rossum | 7268c93 | 1992-08-18 21:11:18 +0000 | [diff] [blame] | 1 | CMIF video tools |
| 2 | ================ |
Guido van Rossum | e4bddea | 1991-10-30 11:52:48 +0000 | [diff] [blame] | 3 | |
Guido van Rossum | 7268c93 | 1992-08-18 21:11:18 +0000 | [diff] [blame] | 4 | This directory contains Python and C programs to manipulate files |
| 5 | containing digitized video in the "CMIF video format". |
| 6 | |
| 7 | |
| 8 | History |
| 9 | ------- |
Guido van Rossum | b2e8228 | 1992-08-18 16:01:19 +0000 | [diff] [blame] | 10 | |
| 11 | We started this in October 1991, when we had a large framegrabber |
Guido van Rossum | 7268c93 | 1992-08-18 21:11:18 +0000 | [diff] [blame] | 12 | board on loan from SGI for a few weeks: we developed a movie recording |
| 13 | program (camcorder.py) and added numerous features, including still |
| 14 | frame capture and synchronous sound recording using a second machine |
| 15 | (the machine holding the framegrabber board didn't have audio). |
Guido van Rossum | b2e8228 | 1992-08-18 16:01:19 +0000 | [diff] [blame] | 16 | |
Guido van Rossum | 7268c93 | 1992-08-18 21:11:18 +0000 | [diff] [blame] | 17 | During the following months, when we started using and processing the |
| 18 | recorded film fragments, the "CMIF video format" was revised several |
| 19 | times, and we eventually created an object-oriented interface for |
| 20 | reading and writing various incarnations of these files, called VFile. |
| 21 | (This module is also used by our flagship application, the CMIF |
| 22 | editor, not in this directory but in /ufs/guido/mm/.) |
Guido van Rossum | b2e8228 | 1992-08-18 16:01:19 +0000 | [diff] [blame] | 23 | |
Guido van Rossum | 7268c93 | 1992-08-18 21:11:18 +0000 | [diff] [blame] | 24 | When we got our own Indigo entry-level video board (in June 1992) and |
| 25 | a version of the Irix video library that supported capturing PAL |
| 26 | format (in August 1992), Sjoerd added an interface to the video |
Guido van Rossum | 815adc9 | 1992-08-20 11:54:00 +0000 | [diff] [blame] | 27 | library to Python (sv) and Guido wrote Vrec.py (based upon a |
Guido van Rossum | 7268c93 | 1992-08-18 21:11:18 +0000 | [diff] [blame] | 28 | still frame grabber by Sjoerd, in turn based upon SGI demo code in C) |
Guido van Rossum | e178332 | 1992-09-07 09:35:23 +0000 | [diff] [blame^] | 29 | to record a movie using it. Vrec was soon followed by modernized |
| 30 | versions of the other programs (Vinfo, Vplay, Vtime) and an |
| 31 | interactive editor (Vedit). Finally, VFile was rewritten for more |
| 32 | modularity, functionality and robustness. |
Guido van Rossum | b2e8228 | 1992-08-18 16:01:19 +0000 | [diff] [blame] | 33 | |
Guido van Rossum | 7268c93 | 1992-08-18 21:11:18 +0000 | [diff] [blame] | 34 | Guido van Rossum |
| 35 | Jack Jansen |
| 36 | Sjoerd Mullender |
Guido van Rossum | e4bddea | 1991-10-30 11:52:48 +0000 | [diff] [blame] | 37 | |
Guido van Rossum | 96059b3 | 1991-11-04 14:31:31 +0000 | [diff] [blame] | 38 | |
Guido van Rossum | 7268c93 | 1992-08-18 21:11:18 +0000 | [diff] [blame] | 39 | Overview of files |
| 40 | ----------------- |
| 41 | |
Guido van Rossum | e178332 | 1992-09-07 09:35:23 +0000 | [diff] [blame^] | 42 | cmif-film.ms description of the CMIF video file format |
| 43 | |
| 44 | |
| 45 | These are programs with a command line interface: |
| 46 | |
| 47 | Vrec.py record video movies using the Indigo video library and |
| 48 | board |
| 49 | |
| 50 | Vplay.py play video movies |
| 51 | |
| 52 | Vinfo.py show statistics on movies |
| 53 | |
| 54 | Vtime.py (unrelated to vtime!!!) Copy a video file, |
| 55 | manipulating the time codes (e.g. faster/slower, or |
| 56 | regenerate time codes, or drop frames too close apart) |
| 57 | |
| 58 | Vedit.py interactive video editing program |
| 59 | |
| 60 | |
| 61 | These modules are used by the above programs: |
| 62 | |
| 63 | VFile.py classes that read and write CMIF video files |
| 64 | |
| 65 | Viewer.py two viewer classes used by Vedit |
| 66 | |
| 67 | |
| 68 | The following are C programs, either for efficiency or because they |
| 69 | need to link with a C library: |
| 70 | |
| 71 | squash.c make a movie smaller by averaging pixels |
| 72 | usage: squash factor [bits] <moviefile >newmoviefile |
| 73 | factor x and y compression factor |
| 74 | bits #bits left per sample in result (default 8) |
| 75 | |
| 76 | squash2.c make a movie smaller by dropping pixels |
| 77 | usage: squash2 factor <moviefile >newmoviefile |
| 78 | factor x and y compression factor |
| 79 | |
| 80 | tomono.c like squash2 but outputs a monochrome movie |
| 81 | |
| 82 | v2i.c convert the first frame of a movie file to SGI .rgb format |
| 83 | link with -limage |
| 84 | |
| 85 | i2v.c convert an rgb file to "lrectwrite" format (this was |
| 86 | used one time by the CMIF editor) |
| 87 | |
| 88 | |
| 89 | These programs are obsolete, but kept around for sentimental reasons. |
| 90 | Most either don't work any more because they don't use VFile and hence |
| 91 | haven't followed the frequent changes in the CMIF video file format; |
| 92 | or they are dependent upon hardware we don't have (SGI's previous |
| 93 | generation framegrabber). Except for cam.py / tv.py, their |
| 94 | functionality is present in the suite of programs whose name begins |
| 95 | with 'V' listed above. |
| 96 | |
Guido van Rossum | e4bddea | 1991-10-30 11:52:48 +0000 | [diff] [blame] | 97 | cam.py network real-time tv broadcast; see tv.py |
| 98 | usage: cam [packfactor [host]] |
| 99 | specifying 'all' for host broadcasts |
| 100 | |
| 101 | camcorder.py record video movies or make snapshots (in movie format) |
Guido van Rossum | 96059b3 | 1991-11-04 14:31:31 +0000 | [diff] [blame] | 102 | usage: camcorder [-c] [-a audiohost [-s]] [-p pf] [moviefile] |
| 103 | -c color (equivalent to -p 0) |
Guido van Rossum | e4bddea | 1991-10-30 11:52:48 +0000 | [diff] [blame] | 104 | -a audiohost syncaudio is running on audiohost |
| 105 | -s start syncaudio (on audiohost) |
Guido van Rossum | 96059b3 | 1991-11-04 14:31:31 +0000 | [diff] [blame] | 106 | -p packfactor packfactor (default 2; 0 records color) |
Guido van Rossum | e4bddea | 1991-10-30 11:52:48 +0000 | [diff] [blame] | 107 | moviefile (default film.video) |
| 108 | keyboard commands: |
| 109 | s stop grabbing (single step if already stopped) |
| 110 | c continuous grabbing |
| 111 | r start recording |
| 112 | p pause recording (record single frame if paused) |
| 113 | ESC quit |
| 114 | |
| 115 | statit.py various statistics operations on movie files |
| 116 | |
| 117 | syncaudio.py record audio synchronized with camcorder -a |
| 118 | usage: syncaudio videohost soundfile |
Guido van Rossum | 96059b3 | 1991-11-04 14:31:31 +0000 | [diff] [blame] | 119 | soundfile format: 16 bits/sample, 16000 samples/sec, 1 channel |
| 120 | (actually, you'd better set the sampling rate to 16000 |
| 121 | with the audio panel) |
Guido van Rossum | e4bddea | 1991-10-30 11:52:48 +0000 | [diff] [blame] | 122 | |
| 123 | tv.py receiver for transmissions from cam.py |
| 124 | |
Guido van Rossum | 7caf611 | 1991-11-04 15:55:01 +0000 | [diff] [blame] | 125 | vcopy.py selectively write frames from one movie file to another |
| 126 | usage: vcopy infile outfile |
| 127 | commands: 'n' gets next frame; 'w' writes current frame |
| 128 | |
Guido van Rossum | e4bddea | 1991-10-30 11:52:48 +0000 | [diff] [blame] | 129 | video.py player for movies recorded by camcorder.py |
Guido van Rossum | 7385d58 | 1991-11-22 14:03:57 +0000 | [diff] [blame] | 130 | usage: video [-l] [-p pf] [-m mag] [-F] |
| 131 | [moviefile [soundfile [skipbytes]]] |
Guido van Rossum | 228381e | 1991-11-04 18:04:47 +0000 | [diff] [blame] | 132 | -p pf override packfactor (to zoom) |
| 133 | -l looping -- restart movie when done |
Guido van Rossum | 7385d58 | 1991-11-22 14:03:57 +0000 | [diff] [blame] | 134 | -m mag magnification |
| 135 | -F run at max speed |
Guido van Rossum | 228381e | 1991-11-04 18:04:47 +0000 | [diff] [blame] | 136 | moviefile default is film.video |
| 137 | soundfile default is none (no sound) |
| 138 | skipbytes byte offset in soundfile where sound starts |
Guido van Rossum | e4bddea | 1991-10-30 11:52:48 +0000 | [diff] [blame] | 139 | |
Guido van Rossum | eda5dfd | 1991-11-06 16:13:25 +0000 | [diff] [blame] | 140 | vinfo.py print summary of movie file(s) |
| 141 | usage: vinfo [-d] moviefile ... |
| 142 | -d print delta times (default: print abs times) |
Guido van Rossum | e4bddea | 1991-10-30 11:52:48 +0000 | [diff] [blame] | 143 | |
Guido van Rossum | 96059b3 | 1991-11-04 14:31:31 +0000 | [diff] [blame] | 144 | vpregs.py definition of VP registers |
| 145 | |
Guido van Rossum | e4bddea | 1991-10-30 11:52:48 +0000 | [diff] [blame] | 146 | vtime.py virtual time module imported by syncaudio.py and camcorder.py |
| 147 | |
Guido van Rossum | e178332 | 1992-09-07 09:35:23 +0000 | [diff] [blame^] | 148 | colorsys.py color system conversions (now part of std python lib) |