]> git.decadent.org.uk Git - lca-dvswitch.git/blob - index.html
b9123cc08bc153d41f47ef05bf10672768123729
[lca-dvswitch.git] / index.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
2         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
4 <html xmlns="http://www.w3.org/1999/xhtml">
5
6 <head>
7 <title>Making great conference videos on a budget - Ben Hutchings - LCA2011</title>
8 <!-- metadata -->
9 <meta name="generator" content="S5" />
10 <meta name="version" content="S5 1.1" />
11 <meta name="author" content="Ben Hutchings" />
12 <!-- configuration parameters -->
13 <meta name="defaultView" content="slideshow" />
14 <meta name="controlVis" content="hidden" />
15 <!-- style sheet links -->
16 <link rel="stylesheet" href="s5-blank/ui/default/slides.css" type="text/css" media="projection" id="slideProj" />
17 <link rel="stylesheet" href="s5-blank/ui/default/outline.css" type="text/css" media="screen" id="outlineStyle" />
18 <link rel="stylesheet" href="s5-blank/ui/default/print.css" type="text/css" media="print" id="slidePrint" />
19 <link rel="stylesheet" href="s5-blank/ui/default/opera.css" type="text/css" media="projection" id="operaFix" />
20 <style type="text/css">
21   .logo { position: absolute; right: 0; top: 0; height: 100% }
22   table { border-collapse: collapse }
23   th { border-bottom: 2pt solid black }
24   th, td { padding: 0 6pt }
25 </style>
26 <!-- S5 JS -->
27 <script src="s5-blank/ui/default/slides.js" type="text/javascript"></script>
28 </head>
29 <body>
30
31 <div class="layout">
32 <div id="controls"><!-- DO NOT EDIT --></div>
33 <div id="currentSlide"><!-- DO NOT EDIT --></div>
34 <div id="header">
35   <object class="logo" data="lca2011.svg"></object>
36 </div>
37 <div id="footer">
38 <h1>LCA2011</h1>
39 <h2>Making great conference videos on a budget</h2>
40 </div>
41
42 </div>
43
44
45 <div class="presentation">
46
47 <div class="slide">
48 <h1>Making great conference videos<br />on a budget</h1>
49 <h3>Ben Hutchings</h3>
50 </div>
51
52
53 <div class="slide">
54   <h1>The author</h1>
55   <ul class="incremental">
56     <li>
57       Professional software developer since 1998
58     </li>
59     <li>
60       Debian contributor since 2003
61     </li>
62     <li>
63       DebConf video team member since 2005
64     </li>
65     <li>
66       Started the VideoLink and DVswitch projects for use in DebConf
67       video production
68     </li>
69     <li>
70       Mostly working on kernel stuff
71     </li>
72   </ul>
73 </div>
74
75
76 <div class="slide">
77   <h1>What is DVswitch?</h1>
78   <ul class="incremental">
79     <li>
80       A software system that supports video mixing, recording and streaming
81     </li>
82     <li>
83       Primarily designed for free software conferences:
84       <ul class="incremental">
85         <li>
86           Record and stream for maximum community benefit
87         </li>
88         <li>
89           Budget is usually quite limited
90         </li>
91         <li>
92           We have eager volunteers but not much time to train them
93         </li>
94       </ul>
95     <li>
96       Now used more widely, often without streaming
97     </li>
98     <li>
99       Mixing is <em>live</em> - required for streaming, and avoids
100       extensive editing after the event
101     </li>
102     <li>
103       Mixing is <em>interactive</em> - required for good coverage of
104       presenters, audience and slides; very limited in other
105       streaming software
106     </li>
107   </ul>
108 </div>
109
110 <div class="slide">
111   <h1>What is DVswitch <em>not</em>?</h1>
112   <p>
113     There are limited developer resources and limited goals for
114     DVswitch.  It is never intended to be:
115   </p>
116   <ul class="incremental">
117     <li>
118       A general video editor
119     </li>
120     <li>
121       An audio mixer - audio functionality is limited to dubbing and
122       level monitoring
123     </li>
124     <li>
125       A complete recording and publishing system
126     </li>
127   </ul>
128   <p class="incremental">
129     These are all better handled by other software and
130     hardware.
131   </p>
132 </div>
133
134 <div class="slide">
135   <h1>The 'DV' in DVswitch</h1>
136   <p>
137     The name refers to the DV format used by many video cameras:
138   </p>
139   <table>
140     <tr>
141       <th>Profile</th><th>Specification</th><th>Video codec</th><th>Supported</th>
142     </tr>
143     <tr>
144       <td>Basic DV</td><td>IEC 61834</td><td>DV 25</td><td>yes</td>
145     </tr>
146     <tr>
147       <td>DVCAM</td><td>Sony proprietary</td><td>DV 25</td><td>probably</td>
148     </tr>
149     <tr>
150       <td>DVCPRO</td><td>SMPTE 314M</td><td>DV 25</td><td>probably</td>
151     </tr>
152     <tr>
153       <td>DVCPRO50</td><td>SMPTE 314M</td><td>DV 50</td><td>not yet</td>
154     </tr>
155     <tr>
156       <td>DVCPRO HD</td><td>SMPTE 370M</td><td>DV 100</td><td>not yet</td>
157     </tr>
158     <tr>
159       <td>HDV</td><td>IEC 61834</td><td>MPEG-2</td><td>no</td>
160     </tr>
161   </table>
162   <p>
163     DV video codecs compress each frame separately (unlike MPEG)
164   </p>
165   <div class="handout">
166     <p>
167       The lack of interframe compression means there is relatively
168       little delay between camera and mixer and we can cut between
169       sources without having to decode all sources all the time.
170       In fact, DVswitch doesn't need to decode even a single source at
171       full frame rate if you just cut between sources without using
172       mixing effects.
173     </p>
174     <p>
175       Unfortunately, most of today's consumer cameras don't have DV
176       output and may not provide live video output at all.
177     </p>
178   </div>
179 </div>
180
181 <div class="slide">
182   <h1>Overview of the system</h1>
183   <object data="dvswitch-simple.dia.svg" width="75%"></object>
184   <div class="handout">
185     <p>
186       This is a simplified view of the typical components.  The system
187       is completely flexible as to which sinks and sources are used.
188     </p>
189   </div>
190 </div>
191
192 <div class="slide">
193   <h1>Sources</h1>
194   <ul class="incremental">
195     <li>
196       Source types: firewire/USB DV device, ALSA capture device,
197       DIF file
198     </li>
199     <li>
200       Physical sources are spread around room and connected to the
201       mixer via TCP/IP networking
202     </li>
203     <li>
204       Original protocol: mixer runs a network server; sources run as
205       clients and send DIF over TCP
206       <ul class="incremental">
207         <li>
208           Requires a script to coordinate mixer and source startup -
209           an annoying complication
210         </li>
211       </ul>
212     <li>
213       Later enhancement: tally lights
214     </li>
215     <li>
216       Next release: sources run as RTP/RTSP servers and mixer
217       connects to them as a client
218       <ul class="incremental">
219         <li>
220           No custom scripts required; just configuration files
221         </li>
222       </ul>
223     </li>
224   </ul>
225   <div class="handout">
226     <p>
227       DIF is the DV Interchange Format, sometimes referred to as 'raw
228       DV' although it is a container format in its own right.
229     </p>
230   </div>
231 </div>
232
233 <div class="slide">
234   <h1>Sinks</h1>
235   <ul class="incremental">
236     <li>
237       Sink types: DIF files, pipe to arbitrary command
238     </li>
239     <li>
240       Also connected using TCP/IP networking, though this is not such
241       a good idea for recording
242     </li>
243     <li>
244       Original protocol: mixer runs a network server; sinks run
245       as clients and receive DIF over TCP
246     </li>
247     <li>
248       Later enhancement: sink reports whether it will record;
249       mixer can start, stop and cut recording
250     </li>
251     <li>
252       Next release: file and pipe sinks built into mixer along with an
253       RTP/RTSP server
254     </li>
255   </ul>
256 </div>
257
258 <div class="slide">
259   <h1>Mixer UI</h1>
260   <object data="screenshot-1.png" width="50%"></object>
261 </div>
262
263 <div class="slide">
264   <h1>Mixer UI, annotated</h1>
265   <object data="screenshot-1-annotated.xcf.png" width="50%"></object>
266 </div>
267
268 <div class="slide">
269   <h1>Mixer internals</h1>
270   <object data="dvswitch-internal.dia.svg" width="90%" height="90%"></object>
271   <div class="handout">
272     <p>
273       To simplify the diagram, I omitted connection setup, tally light
274       and recording control, and the internal sinks that haven't been
275       implemented yet.
276     </p>
277     <p>
278       All these interfaces have limited-length queues.  If a queue
279       fills up, frames have to be dropped - we must not block or use
280       unlimited memory!
281     </p>
282     <p>
283       The mixer clock thread maintains a frame clock at about 25 or
284       30&nbsp;Hz depending on the video system, constantly adjusted to
285       follow the audio source.
286     </p>
287   </div>
288 </div>
289
290 <div class="slide">
291   <h1>Icecast streaming server</h1>
292   <ul class="incremental">
293     <li>
294       Simple HTTP streaming server supporting MP3, Ogg Vorbis and
295       Ogg Theora streams
296     </li>
297     <li>
298       Each stream is provided by an authenticated source client or
299       relayed from another server
300     </li>
301     <li>
302       Relaying allows you to build a distribution network serving
303       viewers inside and outside the conference
304     </li>
305   </ul>
306 </div>
307
308 <div class="slide">
309   <h1>Icecast distribution network</h1>
310   <object data="streaming-network.dia.svg" width="50%"></object>
311   <ul>
312     <li>
313       Internal master serves internal viewers and external master
314     </li>
315     <li>
316       Public servers serve viewers anywhere
317     </li>
318     <li>
319       Relaying restricted by password and/or firewall
320     </li>
321   </ul>
322 </div>
323
324 <div class="slide">
325   <h1>Further information</h1>
326   <ul>
327     <li>
328       DVswitch
329       <ul>
330         <li>Web: <a href="http://dvswitch.alioth.debian.org">http://dvswitch.alioth.debian.org</a></li>
331         <li>Mail: <a href="mailto:dvswitch-devel@lists.alioth.debian.org">dvswitch-devel@lists.alioth.debian.org</a></li>
332         <li>IRC: #dvswitch on OFTC</li>
333       </ul>
334     </li>
335     <li>
336       Icecast: <a href="http://www.icecast.org/">http://www.icecast.org/</a>
337     </li>
338   </ul>
339 </div>
340
341 </body>
342 </html>