blob: 5e14cff50aadf31fd95fe4160fdc4fd6e8f1692a [file] [log] [blame]
Guido van Rossum7268c931992-08-18 21:11:18 +00001CMIF video tools
2================
Guido van Rossume4bddea1991-10-30 11:52:48 +00003
Guido van Rossum7268c931992-08-18 21:11:18 +00004This directory contains Python and C programs to manipulate files
5containing digitized video in the "CMIF video format".
6
7
8History
9-------
Guido van Rossumb2e82281992-08-18 16:01:19 +000010
11We started this in October 1991, when we had a large framegrabber
Guido van Rossum7268c931992-08-18 21:11:18 +000012board on loan from SGI for a few weeks: we developed a movie recording
13program (camcorder.py) and added numerous features, including still
14frame capture and synchronous sound recording using a second machine
15(the machine holding the framegrabber board didn't have audio).
Guido van Rossumb2e82281992-08-18 16:01:19 +000016
Guido van Rossum7268c931992-08-18 21:11:18 +000017During the following months, when we started using and processing the
18recorded film fragments, the "CMIF video format" was revised several
19times, and we eventually created an object-oriented interface for
20reading and writing various incarnations of these files, called VFile.
21(This module is also used by our flagship application, the CMIF
22editor, not in this directory but in /ufs/guido/mm/.)
Guido van Rossumb2e82281992-08-18 16:01:19 +000023
Guido van Rossum7268c931992-08-18 21:11:18 +000024When we got our own Indigo entry-level video board (in June 1992) and
25a version of the Irix video library that supported capturing PAL
26format (in August 1992), Sjoerd added an interface to the video
Guido van Rossum815adc91992-08-20 11:54:00 +000027library to Python (sv) and Guido wrote Vrec.py (based upon a
Guido van Rossum7268c931992-08-18 21:11:18 +000028still frame grabber by Sjoerd, in turn based upon SGI demo code in C)
Guido van Rossume1783321992-09-07 09:35:23 +000029to record a movie using it. Vrec was soon followed by modernized
30versions of the other programs (Vinfo, Vplay, Vtime) and an
31interactive editor (Vedit). Finally, VFile was rewritten for more
32modularity, functionality and robustness.
Guido van Rossumb2e82281992-08-18 16:01:19 +000033
Guido van Rossum7268c931992-08-18 21:11:18 +000034 Guido van Rossum
35 Jack Jansen
36 Sjoerd Mullender
Guido van Rossume4bddea1991-10-30 11:52:48 +000037
Guido van Rossum96059b31991-11-04 14:31:31 +000038
Guido van Rossum7268c931992-08-18 21:11:18 +000039Overview of files
40-----------------
41
Guido van Rossume1783321992-09-07 09:35:23 +000042cmif-film.ms description of the CMIF video file format
43
44
45These are programs with a command line interface:
46
47Vrec.py record video movies using the Indigo video library and
48 board
49
50Vplay.py play video movies
51
52Vinfo.py show statistics on movies
53
54Vtime.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
58Vedit.py interactive video editing program
59
Guido van Rossum67b48951992-09-24 12:54:35 +000060Vsend.py unicast or multicast live video as UDP packets
61
62Vreceive.py receive transmissions from Vsend
63
Guido van Rossume1783321992-09-07 09:35:23 +000064
65These modules are used by the above programs:
66
67VFile.py classes that read and write CMIF video files
68
69Viewer.py two viewer classes used by Vedit
70
Guido van Rossum67b48951992-09-24 12:54:35 +000071LiveVideoIn.py live video input class, used by Vsend
72
73LiveVideoOut.py live video output class, used by Vsend and Vreceive
74
Guido van Rossume1783321992-09-07 09:35:23 +000075
76The following are C programs, either for efficiency or because they
77need to link with a C library:
78
79squash.c make a movie smaller by averaging pixels
80 usage: squash factor [bits] <moviefile >newmoviefile
81 factor x and y compression factor
82 bits #bits left per sample in result (default 8)
83
84squash2.c make a movie smaller by dropping pixels
85 usage: squash2 factor <moviefile >newmoviefile
86 factor x and y compression factor
87
88tomono.c like squash2 but outputs a monochrome movie
89
90v2i.c convert the first frame of a movie file to SGI .rgb format
91 link with -limage
92
93i2v.c convert an rgb file to "lrectwrite" format (this was
94 used one time by the CMIF editor)
95
96
97These programs are obsolete, but kept around for sentimental reasons.
98Most either don't work any more because they don't use VFile and hence
99haven't followed the frequent changes in the CMIF video file format;
100or they are dependent upon hardware we don't have (SGI's previous
101generation framegrabber). Except for cam.py / tv.py, their
102functionality is present in the suite of programs whose name begins
103with 'V' listed above.
104
Guido van Rossume4bddea1991-10-30 11:52:48 +0000105cam.py network real-time tv broadcast; see tv.py
106 usage: cam [packfactor [host]]
107 specifying 'all' for host broadcasts
108
109camcorder.py record video movies or make snapshots (in movie format)
Guido van Rossum96059b31991-11-04 14:31:31 +0000110 usage: camcorder [-c] [-a audiohost [-s]] [-p pf] [moviefile]
111 -c color (equivalent to -p 0)
Guido van Rossume4bddea1991-10-30 11:52:48 +0000112 -a audiohost syncaudio is running on audiohost
113 -s start syncaudio (on audiohost)
Guido van Rossum96059b31991-11-04 14:31:31 +0000114 -p packfactor packfactor (default 2; 0 records color)
Guido van Rossume4bddea1991-10-30 11:52:48 +0000115 moviefile (default film.video)
116 keyboard commands:
117 s stop grabbing (single step if already stopped)
118 c continuous grabbing
119 r start recording
120 p pause recording (record single frame if paused)
121 ESC quit
122
123statit.py various statistics operations on movie files
124
125syncaudio.py record audio synchronized with camcorder -a
126 usage: syncaudio videohost soundfile
Guido van Rossum96059b31991-11-04 14:31:31 +0000127 soundfile format: 16 bits/sample, 16000 samples/sec, 1 channel
128 (actually, you'd better set the sampling rate to 16000
129 with the audio panel)
Guido van Rossume4bddea1991-10-30 11:52:48 +0000130
131tv.py receiver for transmissions from cam.py
132
Guido van Rossum7caf6111991-11-04 15:55:01 +0000133vcopy.py selectively write frames from one movie file to another
134 usage: vcopy infile outfile
135 commands: 'n' gets next frame; 'w' writes current frame
136
Guido van Rossume4bddea1991-10-30 11:52:48 +0000137video.py player for movies recorded by camcorder.py
Guido van Rossum7385d581991-11-22 14:03:57 +0000138 usage: video [-l] [-p pf] [-m mag] [-F]
139 [moviefile [soundfile [skipbytes]]]
Guido van Rossum228381e1991-11-04 18:04:47 +0000140 -p pf override packfactor (to zoom)
141 -l looping -- restart movie when done
Guido van Rossum7385d581991-11-22 14:03:57 +0000142 -m mag magnification
143 -F run at max speed
Guido van Rossum228381e1991-11-04 18:04:47 +0000144 moviefile default is film.video
145 soundfile default is none (no sound)
146 skipbytes byte offset in soundfile where sound starts
Guido van Rossume4bddea1991-10-30 11:52:48 +0000147
Guido van Rossumeda5dfd1991-11-06 16:13:25 +0000148vinfo.py print summary of movie file(s)
149 usage: vinfo [-d] moviefile ...
150 -d print delta times (default: print abs times)
Guido van Rossume4bddea1991-10-30 11:52:48 +0000151
Guido van Rossum96059b31991-11-04 14:31:31 +0000152vpregs.py definition of VP registers
153
Guido van Rossume4bddea1991-10-30 11:52:48 +0000154vtime.py virtual time module imported by syncaudio.py and camcorder.py
155
Guido van Rossume1783321992-09-07 09:35:23 +0000156colorsys.py color system conversions (now part of std python lib)