1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4 <html xmlns="http://www.w3.org/1999/xhtml">
7 <title>Making great conference videos on a budget - Ben Hutchings - LCA2011</title>
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 }
26 <style type="text/css" media="print">
27 .slide { page-break-after: always }
30 <script src="s5-blank/ui/default/slides.js" type="text/javascript"></script>
35 <div id="controls"><!-- DO NOT EDIT --></div>
36 <div id="currentSlide"><!-- DO NOT EDIT --></div>
38 <object class="logo" data="lca2011.svg"></object>
42 <h2>Making great conference videos on a budget</h2>
48 <div class="presentation">
51 <h1>Making great conference videos<br />on a budget</h1>
52 <h3>Ben Hutchings</h3>
58 <ul class="incremental">
60 Professional software developer since 1998
63 Debian contributor since 2003
66 DebConf video team member since 2005
69 Started the VideoLink and DVswitch projects for use in DebConf
73 Mostly working on kernel stuff
80 <h1>What is DVswitch?</h1>
81 <ul class="incremental">
83 A software system that supports video mixing, recording and streaming
86 Primarily designed for free software conferences:
87 <ul class="incremental">
89 Record and stream for maximum community benefit
92 Budget is usually quite limited
95 We have eager volunteers but not much time to train them
99 Now used more widely, often without streaming
102 Mixing is <em>live</em> - required for streaming, and avoids
103 extensive editing after the event
106 Mixing is <em>interactive</em> - required for good coverage of
107 presenters, audience and slides; very limited in other
114 <h1>What is DVswitch <em>not</em>?</h1>
116 There are limited developer resources and limited goals for
117 DVswitch. It is never intended to be:
119 <ul class="incremental">
121 A general video editor
124 An audio mixer - audio functionality is limited to dubbing and
128 A complete recording and publishing system
131 <p class="incremental">
132 These are all better handled by other software and
138 <h1>The 'DV' in DVswitch</h1>
140 The name refers to the DV format used by many video cameras:
144 <th>Profile</th><th>Specification</th><th>Video codec</th><th>Supported</th>
147 <td>Basic DV</td><td>IEC 61834</td><td>DV 25</td><td>yes</td>
150 <td>DVCAM</td><td>Sony proprietary</td><td>DV 25</td><td>probably</td>
153 <td>DVCPRO</td><td>SMPTE 314M</td><td>DV 25</td><td>probably</td>
156 <td>DVCPRO50</td><td>SMPTE 314M</td><td>DV 50</td><td>not yet</td>
159 <td>DVCPRO HD</td><td>SMPTE 370M</td><td>DV 100</td><td>not yet</td>
162 <td>HDV</td><td>IEC 61834</td><td>MPEG-2</td><td>no</td>
166 DV video codecs compress each frame separately (unlike MPEG)
168 <div class="handout">
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
178 Unfortunately, most of today's consumer cameras don't have DV
179 output and may not provide live video output at all.
185 <h1>Overview of the system</h1>
186 <object data="dvswitch-simple.dia.svg" width="90%"></object>
187 <div class="handout">
189 This is a simplified view of the typical components. The system
190 is completely flexible as to which sinks and sources are used.
197 <ul class="incremental">
199 Source types: firewire/USB DV device, ALSA capture device,
203 Physical sources are spread around room and connected to the
204 mixer via TCP/IP networking
207 Original protocol: mixer runs a network server; sources run as
208 clients and send DIF over TCP
209 <ul class="incremental">
211 Requires a script to coordinate mixer and source startup -
212 an annoying complication
216 Later enhancement: tally lights
219 Next release: sources run as RTP/RTSP servers and mixer
220 connects to them as a client
221 <ul class="incremental">
223 No custom scripts required; just configuration files
228 <div class="handout">
230 DIF is the DV Interchange Format, sometimes referred to as 'raw
231 DV' although it is a container format in its own right.
238 <ul class="incremental">
240 Sink types: DIF files, pipe to arbitrary command
243 Also connected using TCP/IP networking, though this is not such
244 a good idea for recording
247 Original protocol: mixer runs a network server; sinks run
248 as clients and receive DIF over TCP
251 Later enhancement: sink reports whether it will record;
252 mixer can start, stop and cut recording
255 Next release: file and pipe sinks built into mixer along with an
263 <object data="screenshot-1.png" width="70%"></object>
267 <h1>Mixer UI, annotated</h1>
268 <object data="screenshot-1-annotated.xcf.png" width="70%"></object>
272 <h1>Mixer internals</h1>
273 <object data="dvswitch-internal.dia.svg" width="95%"></object>
274 <div class="handout">
276 To simplify the diagram, I omitted connection setup, tally light
277 and recording control, and the internal sinks that haven't been
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
286 The mixer clock thread maintains a frame clock at about 25 or
287 30 Hz depending on the video system, constantly adjusted to
288 follow the audio source.
294 <h1>Icecast streaming server</h1>
295 <ul class="incremental">
297 Simple HTTP streaming server supporting MP3, Ogg Vorbis and
301 Each stream is provided by an authenticated source client or
302 relayed from another server
305 Relaying allows you to build a distribution network serving
306 viewers inside and outside the conference
312 <h1>Icecast distribution network</h1>
313 <object data="streaming-network.dia.svg" width="70%"></object>
316 Internal master serves internal viewers and external master
319 Public servers serve viewers anywhere
322 Relaying restricted by password and/or firewall
328 <h1>Further information</h1>
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>
339 Icecast: <a href="http://www.icecast.org/">http://www.icecast.org/</a>