<html xmlns="http://www.w3.org/1999/xhtml">
<head>
-<title>DVswitch - Ben Hutchings - LCA2011</title>
+<title>Making great conference videos on a budget - Ben Hutchings - LCA2011</title>
<!-- metadata -->
<meta name="generator" content="S5" />
<meta name="version" content="S5 1.1" />
<link rel="stylesheet" href="s5-blank/ui/default/outline.css" type="text/css" media="screen" id="outlineStyle" />
<link rel="stylesheet" href="s5-blank/ui/default/print.css" type="text/css" media="print" id="slidePrint" />
<link rel="stylesheet" href="s5-blank/ui/default/opera.css" type="text/css" media="projection" id="operaFix" />
+<style type="text/css">
+ .logo { position: absolute; right: 0; top: 0; height: 100% }
+ table { border-collapse: collapse }
+ th { border-bottom: 2pt solid black }
+ th, td { padding: 0 6pt }
+</style>
+<style type="text/css" media="print">
+ .slide { page-break-after: always }
+</style>
<!-- S5 JS -->
<script src="s5-blank/ui/default/slides.js" type="text/javascript"></script>
</head>
<div class="layout">
<div id="controls"><!-- DO NOT EDIT --></div>
<div id="currentSlide"><!-- DO NOT EDIT --></div>
-<div id="header"></div>
+<div id="header">
+ <object class="logo" data="lca2011.svg"></object>
+</div>
<div id="footer">
<h1>LCA2011</h1>
-<h2>DVswitch</h2>
+<h2>Making great conference videos on a budget</h2>
</div>
</div>
<div class="presentation">
<div class="slide">
-<h1>DVswitch</h1>
+<h1>Making great conference videos<br />on a budget</h1>
<h3>Ben Hutchings</h3>
</div>
+<div class="slide">
+ <h1>The author</h1>
+ <ul class="incremental">
+ <li>
+ Professional software developer since 1998
+ </li>
+ <li>
+ Debian contributor since 2003
+ </li>
+ <li>
+ DebConf video team member since 2005
+ </li>
+ <li>
+ Started the VideoLink and DVswitch projects for use in DebConf
+ video production
+ </li>
+ <li>
+ Mostly working on kernel stuff
+ </li>
+ </ul>
+</div>
+
+
<div class="slide">
<h1>What is DVswitch?</h1>
<ul class="incremental">
A software system that supports video mixing, recording and streaming
</li>
<li>
- Designed particularly for the needs of technical conferences that
- want to record and stream on a limited budget. Now used more
- widely, often without streaming.
+ Primarily designed for free software conferences:
+ <ul class="incremental">
+ <li>
+ Record and stream for maximum community benefit
+ </li>
+ <li>
+ Budget is usually quite limited
+ </li>
+ <li>
+ We have eager volunteers but not much time to train them
+ </li>
+ </ul>
+ <li>
+ Now used more widely, often without streaming
</li>
<li>
- Mixing is <em>live</em> - a requirement for streaming, and a way to
- avoid the need for extensive editing after the event
+ Mixing is <em>live</em> - required for streaming, and avoids
+ extensive editing after the event
</li>
<li>
- Mixing is <em>interactive</em> - a requirement for good coverage of
- presenters, audience and slides, but very limited in other
+ Mixing is <em>interactive</em> - required for good coverage of
+ presenters, audience and slides; very limited in other
streaming software
</li>
</ul>
A general video editor
</li>
<li>
- An audio mixer (but it does implement audio dubbing and level monitoring)
+ An audio mixer - audio functionality is limited to dubbing and
+ level monitoring
</li>
<li>
A complete recording and publishing system
<div class="slide">
<h1>The 'DV' in DVswitch</h1>
<p>
- The name refers to the DV formats used by many video cameras:
+ The name refers to the DV format used by many video cameras:
</p>
<table>
<tr>
<div class="slide">
<h1>Overview of the system</h1>
- <p>
- A simplified view of the typical components:
- </p>
- <object data="dvswitch-simple.svg" width="60%" height="60%"></object>
+ <object data="dvswitch-simple.dia.svg" width="90%"></object>
+ <div class="handout">
+ <p>
+ This is a simplified view of the typical components. The system
+ is completely flexible as to which sinks and sources are used.
+ </p>
+ </div>
</div>
<div class="slide">
Requires a script to coordinate mixer and source startup -
an annoying complication
</li>
- <li>
- Improvement: tally lights
- </li>
</ul>
+ <li>
+ Later enhancement: tally lights
+ </li>
<li>
Next release: sources run as RTP/RTSP servers and mixer
connects to them as a client
</ul>
</li>
</ul>
+ <div class="handout">
+ <p>
+ DIF is the DV Interchange Format, sometimes referred to as 'raw
+ DV' although it is a container format in its own right.
+ </p>
+ </div>
</div>
<div class="slide">
<li>
Original protocol: mixer runs a network server; sinks run
as clients and receive DIF over TCP
- <ul class="incremental">
- <li>
- Improvement: sink reports whether it will record; mixer can
- start, stop and cut recording
- </li>
- </ul>
+ </li>
+ <li>
+ Later enhancement: sink reports whether it will record;
+ mixer can start, stop and cut recording
</li>
<li>
Next release: file and pipe sinks built into mixer along with an
</div>
<div class="slide">
- <h1>Mixer</h1>
- <object data="screenshot-1.png" width="50%"></object>
+ <h1>Mixer UI</h1>
+ <object data="screenshot-1.png" width="70%"></object>
+</div>
+
+<div class="slide">
+ <h1>Mixer UI, annotated</h1>
+ <object data="screenshot-1-annotated.xcf.png" width="70%"></object>
+</div>
+
+<div class="slide">
+ <h1>Mixer internals</h1>
+ <object data="dvswitch-internal.dia.svg" width="95%"></object>
+ <div class="handout">
+ <p>
+ To simplify the diagram, I omitted connection setup, tally light
+ and recording control, and the internal sinks that haven't been
+ implemented yet.
+ </p>
+ <p>
+ All these interfaces have limited-length queues. If a queue
+ fills up, frames have to be dropped - we must not block or use
+ unlimited memory!
+ </p>
+ <p>
+ The mixer clock thread maintains a frame clock at about 25 or
+ 30 Hz depending on the video system, constantly adjusted to
+ follow the audio source.
+ </p>
+ </div>
</div>
<div class="slide">
- <h1>Mixer</h1>
- <object data="screenshot-1-annotated.png" width="50%"></object>
+ <h1>Icecast streaming server</h1>
+ <ul class="incremental">
+ <li>
+ Simple HTTP streaming server supporting MP3, Ogg Vorbis and
+ Ogg Theora streams
+ </li>
+ <li>
+ Each stream is provided by an authenticated source client or
+ relayed from another server
+ </li>
+ <li>
+ Relaying allows you to build a distribution network serving
+ viewers inside and outside the conference
+ </li>
+ </ul>
+</div>
+
+<div class="slide">
+ <h1>Icecast distribution network</h1>
+ <object data="streaming-network.dia.svg" width="70%"></object>
+ <ul>
+ <li>
+ Internal master serves internal viewers and external master
+ </li>
+ <li>
+ Public servers serve viewers anywhere
+ </li>
+ <li>
+ Relaying restricted by password and/or firewall
+ </li>
+ </ul>
+</div>
+
+<div class="slide">
+ <h1>Further information</h1>
+ <ul>
+ <li>
+ DVswitch
+ <ul>
+ <li>Web: <a href="http://dvswitch.alioth.debian.org">http://dvswitch.alioth.debian.org</a></li>
+ <li>Mail: <a href="mailto:dvswitch-devel@lists.alioth.debian.org">dvswitch-devel@lists.alioth.debian.org</a></li>
+ <li>IRC: #dvswitch on OFTC</li>
+ </ul>
+ </li>
+ <li>
+ Icecast: <a href="http://www.icecast.org/">http://www.icecast.org/</a>
+ </li>
+ </ul>
</div>
</body>