-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathREADME
More file actions
149 lines (93 loc) · 3.68 KB
/
Copy pathREADME
File metadata and controls
149 lines (93 loc) · 3.68 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
CasTTY is a script for lecture recording and postprocessing. It was
written in the duress of 2020. When it breaks, you get to keep both
pieces.
WORKFLOW AND EXAMPLES
=====================
Workflow
--------
CasTTY includes commands to:
1. Record individual slides, or parts of slides.
2. Postprocess recorded files, including:
- Transcoding,
- Applying video overlays on a background slide,
- Concatenating slides/parts,
- And audio filtering.
Commands are run from the Common Lisp REPL, so it helps to have
multiple monitors. Most of the real work is done by FFmpeg.
Working Directory
-----------------
CasTTY operates relative to a working directory:
(setq castty:*workdir* "/PATH/TO/STORE/MY/VIDEO/FILES")
Record
------
Record screen and audio quickly with minimal / fast compression.
* To record audio and video for a slide:
(castty:record :number '(SLIDE-NUMBER SLIDE-PART) :video t :audio t)
* To record audio and take a screenshot:
(castty:record :number '(SLIDE-NUMBER SLIDE-PART) :video :screenshot :audio t)
* To take a screenshot and not record audio:
(castty:record :number '(SLIDE-NUMBER SLIDE-PART) :video :screenshot :audio nil)
* To record audio and no video or screenshot:
(castty:record :number '(SLIDE-NUMBER SLIDE-PART) :video nil :audio t)
To end the recording run the `casttykill` script; it helps configure a
key binding in your window manager to call this script.
Video Overlays
--------------
CasTTY can overlay a separate video (and audio) on a captured slide.
1. Take a screenshot for the overlay background:
(castty:record :number '(SLIDE-NUMBER SLIDE-PART) :video :background :audio nil)
2. Copy the video overlay into the `./src` directory.
The overlay will be constructed during postprocessing.
Postprocess
-----------
Postprocessing involves transcoding, overlay construction,
concatenation, and audio filtering. The following command will
postprocess the recordings:
(castty:post)
You can also postprocess from the shell with the following command, in
which case the current directory will be the working directory.
$ castty post
Cleanup
-------
Remove all temporary and output files in the working directory:
(castty:clean)
You can also clean from the shell with the following command, in
which case the current directory will be the working directory.
$ castty clean
Transcoding
-----------
You can transcode files from the shell with:
$ CASTTY_INPUT=file.mp4 castty transcode
If you want to modify options, you can override the default scene or
specific parameters:
$ CASTTY_PARAM_AUDIO_FILTER="highpass=f=100,lowpass=f=10000" \
CASTTY_INPUT=file.mp4 castty transcode
FILES
=====
Configuration
-------------
* `$HOME/.config/castty/scene-alist.lisp`: configuration file to set
recording and output options. See the `./lisp/scene-alist.lisp` in
the source tree for an example.
Directories
-----------
Directories are relative to the working directory set in
`castty:*workdir*`.
* `./rec/`: Directory containing initial recordings
* `./src/`: Directory containing (lossless) transcoded recordings
* `./out/`: Directory containing output files
* `./tmp/`: Directory for Temporary working files
Temporary Files
---------------
* `/var/run/user/$UID/castty.pid`: PIDs of currently running recording
processes. The `casttykill` script stops a recording by killing
each of these processes.
Output Files
------------
* `./out/hi-quality.mkv`: high-quality video file
* `./out/compressed.mp4`: compressed video file
ENVIRONMENT
===========
* `CASTTY_SCENE`: The scene to use when calling from the shell
* `CASTTY_PARAM_FOO`: Override scene parameter FOO
* `CASTTY_INPUT`: Input file