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 }
27 <script src="s5-blank/ui/default/slides.js" type="text/javascript"></script>
32 <div id="controls"><!-- DO NOT EDIT --></div>
33 <div id="currentSlide"><!-- DO NOT EDIT --></div>
35 <object class="logo" data="lca2011.svg"></object>
39 <h2>Making great conference videos on a budget</h2>
45 <div class="presentation">
48 <h1>Making great conference videos<br />on a budget</h1>
49 <h3>Ben Hutchings</h3>
55 <ul class="incremental">
57 Professional software developer since 1998
60 Debian contributor since 2003
63 DebConf video team member since 2005
66 Started the VideoLink and DVswitch projects for use in DebConf
70 Mostly working on kernel stuff
77 <h1>What is DVswitch?</h1>
78 <ul class="incremental">
80 A software system that supports video mixing, recording and streaming
83 Primarily designed for free software conferences:
84 <ul class="incremental">
86 Record and stream for maximum community benefit
89 Budget is usually quite limited
92 We have eager volunteers but not much time to train them
96 Now used more widely, often without streaming
99 Mixing is <em>live</em> - required for streaming, and avoids the
100 need for extensive editing after the event
103 Mixing is <em>interactive</em> - required for good coverage of
104 presenters, audience and slides; very limited in other
111 <h1>What is DVswitch <em>not</em>?</h1>
113 There are limited developer resources and limited goals for
114 DVswitch. It is never intended to be:
116 <ul class="incremental">
118 A general video editor
121 An audio mixer - audio functionality is limited to dubbing and
125 A complete recording and publishing system
128 <p class="incremental">
129 These are all better handled by other software and
135 <h1>The 'DV' in DVswitch</h1>
137 The name refers to the DV format used by many video cameras:
141 <th>Profile</th><th>Specification</th><th>Video codec</th><th>Supported</th>
144 <td>Basic DV</td><td>IEC 61834</td><td>DV 25</td><td>yes</td>
147 <td>DVCAM</td><td>Sony proprietary</td><td>DV 25</td><td>probably</td>
150 <td>DVCPRO</td><td>SMPTE 314M</td><td>DV 25</td><td>probably</td>
153 <td>DVCPRO50</td><td>SMPTE 314M</td><td>DV 50</td><td>not yet</td>
156 <td>DVCPRO HD</td><td>SMPTE 370M</td><td>DV 100</td><td>not yet</td>
159 <td>HDV</td><td>IEC 61834</td><td>MPEG-2</td><td>no</td>
163 DV video codecs compress each frame separately (unlike MPEG)
165 <div class="handout">
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
175 Unfortunately, most of today's consumer cameras don't have DV
176 output and may not provide live video output at all.
182 <h1>Overview of the system</h1>
183 <object data="dvswitch-simple.dia.svg" width="75%"></object>
184 <div class="handout">
186 This is a simplified view of the typical components. The system
187 is completely flexible as to which sinks and sources are used.
194 <ul class="incremental">
196 Source types: firewire/USB DV device, ALSA capture device,
200 Physical sources are spread around room and connected to the
201 mixer via TCP/IP networking
204 Original protocol: mixer runs a network server; sources run as
205 clients and send DIF over TCP
206 <ul class="incremental">
208 Requires a script to coordinate mixer and source startup -
209 an annoying complication
213 Later enhancement: tally lights
216 Next release: sources run as RTP/RTSP servers and mixer
217 connects to them as a client
218 <ul class="incremental">
220 No custom scripts required; just configuration files
225 <div class="handout">
227 DIF is the DV Interchange Format, sometimes referred to as 'raw
228 DV' although it is a container format in its own right.
235 <ul class="incremental">
237 Sink types: DIF files, pipe to arbitrary command
240 Also connected using TCP/IP networking, though this is not such
241 a good idea for recording
244 Original protocol: mixer runs a network server; sinks run
245 as clients and receive DIF over TCP
248 Later enhancement: sink reports whether it will record;
249 mixer can start, stop and cut recording
252 Next release: file and pipe sinks built into mixer along with an
260 <object data="screenshot-1.png" width="50%"></object>
264 <h1>Mixer UI, annotated</h1>
265 <object data="screenshot-1-annotated.xcf.png" width="50%"></object>
269 <h1>Mixer internals</h1>
270 <object data="dvswitch-internal.dia.svg" width="90%" height="90%"></object>
271 <div class="handout">
273 To simplify the diagram, I omitted connection setup, tally light
274 and recording control, and the internal sinks that haven't been
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
283 The mixer clock thread maintains a frame clock at about 25 or
284 30 Hz depending on the video system, constantly adjusted to
285 follow the audio source.
291 <h1>Icecast streaming server</h1>
292 <ul class="incremental">
294 Simple HTTP streaming server supporting MP3, Ogg Vorbis and
298 Each stream is provided by an authenticated source client or
299 relayed from another server
302 Relaying allows you to build a distribution network serving
303 viewers inside and outside the conference
309 <h1>Icecast distribution network</h1>
310 <object data="streaming-network.dia.svg" width="50%"></object>
313 Internal master serves internal viewers and external master
316 Public servers serve viewers anywhere
319 Relaying restricted by password and/or firewall
325 <h1>Further information</h1>
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>
336 Icecast: <a href="http://www.icecast.org/">http://www.icecast.org/</a>