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