Louis-Philippe Véronneau - debconfhttps://veronneau.org/2020-07-17T00:00:00-04:00DebConf Videoteam Sprint Report -- DebConf20@Home2020-07-17T00:00:00-04:002020-07-17T00:00:00-04:00Louis-Philippe Véronneautag:veronneau.org,2020-07-17:/debconf-videoteam-sprint-report-debconf20home.html<p><a href="https://debconf20.debconf.org/news/2020-07-12-registration-is-open/">DebConf20 starts in about 5 weeks</a>, and as always, the DebConf
Videoteam is working hard to make sure it'll be a success. As such, we held a
sprint from July 9th to 13th to work on our new infrastructure.</p>
<p>A remote sprint certainly ain't as fun as an in-person one …</p><p><a href="https://debconf20.debconf.org/news/2020-07-12-registration-is-open/">DebConf20 starts in about 5 weeks</a>, and as always, the DebConf
Videoteam is working hard to make sure it'll be a success. As such, we held a
sprint from July 9th to 13th to work on our new infrastructure.</p>
<p>A remote sprint certainly ain't as fun as an in-person one, but we nonetheless
managed to enjoy ourselves. Many thanks to those who participated, namely:</p>
<ul>
<li>Carl Karsten (CarlFK)</li>
<li>Ivo De Decker (ivodd)</li>
<li>Kyle Robbertze (paddatrapper)</li>
<li>Louis-Philippe Véronneau (pollo)</li>
<li>Nattie Mayer-Hutchings (nattie)</li>
<li>Nicolas Dandrimont (olasd)</li>
<li>Stefano Rivera (tumbleweed)</li>
<li>Wouter Verhelst (wouter)</li>
</ul>
<p>We also wish to extend our thanks to Thomas Goirand and <a href="https://www.infomaniak.com">Infomaniak</a> for
providing us with virtual machines to experiment on and host the video
infrastructure for DebConf20.</p>
<h2>Advice for presenters</h2>
<p>For DebConf20, we strongly encourage presenters to record their talks in
advance and send us the resulting video. We understand this is more work,
but we think it'll make for a more agreeable conference for everyone. Video
conferencing is still pretty wonky and there is nothing worse than a talk
ruined by a flaky internet connection or hardware failures.</p>
<p>As such, if you are giving a talk at DebConf this year, we are asking you to
read and follow our guide on <a href="https://debconf-video-team.pages.debian.net/docs/advice_for_recording.html">how to record your presentation</a>.</p>
<p>Fear not: we are not getting rid of the Q&A period at the end of talks.
Attendees will ask their questions — either on IRC or on a collaborative pad
— and the Talkmeister will relay them to the speaker once the pre-recorded
video has finished playing.</p>
<h2>New infrastructure, who dis?</h2>
<p>Organising a virtual DebConf implies migrating from our battle-tested
on-premise workflow to a completely new remote one.</p>
<p>One of the major changes this means for us is the addition of Jitsi Meet to our
infrastructure. We normally have 3 different video sources in a room: two
cameras and a slides grabber. With the new online workflow, directors will be
able to play pre-recorded videos as a source, will get a feed from a Jitsi room
and will see the audience questions as a third source.</p>
<p>This might seem simple at first, but is in fact a very major change to our
workflow and required a lot of work to implement.</p>
<pre>
== On-premise == || == Online ==
||
Camera 1 || Jitsi
| || |
v ---> Frontend || v ---> Frontend
| || |
Slides -> Voctomix -> Backend -+--> Frontend || Questions -> Voctomix -> Backend -+--> Frontend
| || |
^ ---> Frontend || ^ ---> Frontend
| || |
Camera 2 || Pre-recorded video
</pre>
<p>In our tests, playing back pre-recorded videos to voctomix worked well, but was
sometimes unreliable due to inconsistent encoding settings. Presenters will
thus upload their pre-recorded talks to <a href="https://salsa.debian.org/wouter/sreview/">SReview</a> so we can make sure there
aren't any obvious errors. Videos will then be re-encoded to ensure a
consistent encoding and to normalise audio levels.</p>
<p>This process will also let us stitch the Q&As at the end of the pre-recorded
videos more easily prior to publication.</p>
<h2>Reducing the stream latency</h2>
<p>One of the pitfalls of the streaming infrastructure we have been using since
2016 is high video latency. In a worst case scenario, remote attendees could
get up to 45 seconds of latency, making participation in events like BoFs
arduous.</p>
<p>In preparation for DebConf20, we added a new way to stream our talks: RTMP.
Attendees will thus have the option of using either an HLS stream with higher
latency or an RTMP stream with lower latency.</p>
<p>Here is a comparative table that can help you decide between the two protocols:</p>
<!-- Used pandoc, since python3-markdown doesn't support this
+----------+---------------------------------------------+---------------------------------------------------+
| | HLS | RTMP |
+==========+=============================================+===================================================+
| **Pros** | * Can be watched from a browser | * Lower latency (~5s) |
| | * Auto-selects a stream encoding | |
| | * Single URL to remember | |
+----------+---------------------------------------------+---------------------------------------------------+
| **Cons** | * Higher latency (up to 45s) | * Requires a dedicated video player (VLC, mpv) |
| | | * Specific URLs for each encoding setting |
+----------+---------------------------------------------+---------------------------------------------------+
-->
<table>
<colgroup>
<col style="width: 10%" />
<col style="width: 42%" />
<col style="width: 47%" />
</colgroup>
<thead>
<tr class="header">
<th></th>
<th>HLS</th>
<th>RTMP</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><strong>Pros</strong></td>
<td style="text-align:left"><ul>
<li>Can be watched from a browser</li>
<li>Auto-selects a stream encoding</li>
<li>Single URL to remember</li>
</ul></td>
<td style="text-align:left"><ul>
<li>Lower latency (~5s)</li>
</ul></td>
</tr>
<tr class="even">
<td><strong>Cons</strong></td>
<td style="text-align:left"><ul>
<li>Higher latency (up to 45s)</li>
</ul></td>
<td style="text-align:left"><ul>
<li>Requires a dedicated video player (VLC, mpv)</li>
<li>Specific URLs for each encoding setting</li>
</ul></td>
</tr>
</tbody>
</table>
<h2>Live mixing from home with VoctoWeb</h2>
<p>Since DebConf16, we have been using <a href="https://github.com/voc/voctomix">voctomix</a>, a live video mixer developed
by the CCC VOC. voctomix is conveniently divided in two: voctocore is the
backend server while voctogui is a GTK+ UI frontend directors can use to
live-mix.</p>
<p>Although voctogui can connect to a remote server, it was primarily designed to
run either on the same machine as voctocore or on the same LAN. Trying to use
voctogui from a machine at home to connect to a voctocore running in a
datacenter proved unreliable, especially for high-latency and low bandwidth
connections.</p>
<p>Inspired by the setup FOSDEM uses, we instead decided to go with a web frontend
for voctocore. We initially used <a href="https://github.com/FOSDEM/infrastructure/tree/master/ansible/playbooks/roles/video-control-server">FOSDEM's code</a> as a proof of
concept, but quickly reimplemented it in Python, a language we are more
familiar with as a team.</p>
<p>Compared to the FOSDEM PHP implementation, voctoweb implements A / B source
selection (akin to voctogui) as well as audio control, two very useful
features. In the following screen captures, you can see the old PHP UI on the
left and the new shiny Python one on the right.</p>
<p><img src="/media/blog/2020-07-17/voctoweb_php.png" title="The old PHP voctoweb" alt="The old PHP voctoweb" height="50%" width="50%" style="float:left"><img src="/media/blog/2020-07-17/voctoweb_py.png" title="The new Python3 voctoweb" alt="The new Python3 voctoweb" height="50%" width="50%" style="float:left"></p>
<p><a href="https://salsa.debian.org/debconf-video-team/voctoweb">Voctoweb</a> is still under development and is likely to change quite a bit
until DebConf20. Still, the current version seems to works well enough to be
used in production if you ever need to.</p>
<h2>Python GeoIP redirector</h2>
<p>We run multiple geographically-distributed streaming frontend servers to
minimize the load on our streaming backend and to reduce overall latency.
Although users can connect to the frontends directly, we typically point them
to <code>live.debconf.org</code> and redirect connections to the nearest server.</p>
<p>Sadly, <a href="https://blog.maxmind.com/2019/12/18/significant-changes-to-accessing-and-using-geolite2-databases/">6 months ago</a> MaxMind decided to change the licence on their
GeoLite2 database and left us scrambling. To fix this annoying issue, Stefano
Rivera wrote a Python program that uses the new database and reworked <a href="https://salsa.debian.org/debconf-video-team/ansible/-/tree/master/roles/streaming/frontend">our
ansible frontend server role</a>. Since the new database cannot be
redistributed freely, you'll have to get a (free) license key from MaxMind if
you to use this role.</p>
<h2>Ansible & CI improvements</h2>
<p>Infrastructure as code is a living process and needs constant care to fix bugs,
follow changes in DSL and to implement new features. All that to say a large
part of the sprint was spent making our ansible roles and continuous
integration setup more reliable, less buggy and more featureful.</p>
<p>All in all, we merged 26 separate ansible-related merge request during the
sprint! As always, if you are good with ansible and wish to help, we accept
merge requests on our <a href="https://salsa.debian.org/debconf-video-team/ansible">ansible repository</a> :)</p>Announcing miniDebConf Montreal 2020 -- August 6th to August 9th 20202020-02-12T00:00:00-05:002020-02-12T00:00:00-05:00The miniDebConf Montreal 2020 orga teamtag:veronneau.org,2020-02-12:/announcing-minidebconf-montreal-2020-august-6th-to-august-9th-2020.html<p><em>This is a guest post by the miniDebConf Montreal 2020 orga team on pollo's
blog.</em></p>
<p>Dear Debianites,</p>
<p>We are happy to announce miniDebConf Montreal 2020! The event will take place
in Montreal, at Concordia University's John Molson School of Business from
August 6th to August 9th 2020. Anybody interested in …</p><p><em>This is a guest post by the miniDebConf Montreal 2020 orga team on pollo's
blog.</em></p>
<p>Dear Debianites,</p>
<p>We are happy to announce miniDebConf Montreal 2020! The event will take place
in Montreal, at Concordia University's John Molson School of Business from
August 6th to August 9th 2020. Anybody interested in Debian development is
welcome.</p>
<p>Following the announcement of the DebConf20 location, our desire to participate
became incompatible with our commitment toward the Boycott, Divestment and
Sanctions (BDS) campaign launched by Palestinian civil society in 2005. Hence,
many active Montreal-based Debian developpers, along with a number of other
Debian developpers, have decided not to travel to Israel in August 2020 for
DebConf20.</p>
<p>Nevertheless, recognizing the importance of DebConf for the health of both the
developper community and the project as a whole, we decided to organize a
miniDebConf just prior to DebConf20 in the hope that fellow developpers who may
have otherwise skipped DebConf entirely this year might join us instead. Fellow
developpers who decide to travel to both events are of course most welcome.</p>
<h2>Registration is open</h2>
<p>Registration is open now, and free, so go add your name and details on the
<a href="https://wiki.debian.org/DebianEvents/ca/2020/MiniDebConfMontreal/Registration">Debian wiki</a>.</p>
<p>We'll accept registrations until July 25th, but don't wait too much before
making your travel plans! Finding reasonnable accommodation in Montreal during
the summer can be hard if you don't make plans in advance.</p>
<p><a href="https://wiki.debian.org/DebianEvents/ca/2020/MiniDebConfMontreal">We have you covered</a> with lots of attendee information already.</p>
<h2>Sponsors wanted</h2>
<p>We're looking for sponsors willing to help making this event possible.
Information on sponsorship tiers <a href="https://wiki.debian.org/DebianEvents/ca/2020/MiniDebConfMontreal#Sponsors">can be found here</a>.</p>
<h2>Get in touch</h2>
<p>We gather on the #debian-quebec on irc.debian.org and the
debian-dug-quebec@lists.debian.org list.</p>mini-DebConf Marseille 20192019-06-02T00:00:00-04:002019-06-02T00:00:00-04:00Louis-Philippe Véronneautag:veronneau.org,2019-06-02:/mini-debconf-marseille-2019.html<p>I was in Marseille last week for the <a href="https://minidebconf-mrs.debian.net/">mini-DebConf</a> the fine folks at
Debian France organised and it was great! It was my first time there and I
really enjoyed the city.</p>
<p>The venue was lovely and perfectly adapted to the size of the conference. The
main auditorium was joy …</p><p>I was in Marseille last week for the <a href="https://minidebconf-mrs.debian.net/">mini-DebConf</a> the fine folks at
Debian France organised and it was great! It was my first time there and I
really enjoyed the city.</p>
<p>The venue was lovely and perfectly adapted to the size of the conference. The
main auditorium was joy to work in: blinds on the windows to minimize the sun
glare, a complete set of stage lighting and plenty of space to set up our gear.</p>
<p>If you couldn't attend the conference, you can always watch the talks on our
<a href="https://meetings-archive.debian.net/pub/debian-meetings/2019/miniconf-marseille/">video archive</a>.</p>
<p>The highlight of my trip was the daytrip to the nearby <a href="https://www.openstreetmap.org/relation/6598068">Frioul
archipelago</a>. Although we repeatedly got attacked by angry seagulls
(they were protecting their chicks), the view from the south shore of the
Pomègues Island was amazing. It was also the first time I went on a daytrip
during a mini-DebConf and I think it should happen more often!</p>
<p><img src="/media/blog/2019-06-02/beware.jpg" title="A grafiti in Frioul saying 'Beware of Seagulls'" alt="A grafiti in Frioul saying 'Beware of Seagulls'" height="30%" width="30%" style="float:left"></p>
<p>If you ever are in Marseille and are looking to have a good time culinary-wise,
I really recommend booking a table at <a href="http://www.laboiteasardine.com/"><em>La Boîte à sardine</em></a>, a local
fish restaurant. It's a little expensive, but the fish and shellfish we ate was
definitely worth paying for.</p>
<p>For something a little less hard on your wallet, <a href="https://le-resto-provencal.business.site/"><em>Le Resto
Provençal</em></a> serves amazing local Provençal cuisine at very
reasonable prices. We went there with a large group and everyone really enjoyed
their meal.</p>
<p>Finally, if you want to have a beer afterwards, <a href="https://www.openstreetmap.org/node/5810436822"><em>La Cane Bière</em></a> is one
(if not the best) place in Marseille to drink craft beer. They have a wide
selection of local beers on tap and also sell many bottles from all over
Europe. Note that they close at 22:00 though, even during weekends.</p>
<p><img src="/media/blog/2019-06-02/frioul.jpg" title="View from the south shore of the Pomègues Island" alt="View from the south shore of the Pomègues Island" height="80%" width="80%" style="margin-left: 10%;"></p>
<p>Thanks again to the local team for hosting us, I really had a good time!</p>DebConf Videoteam sprint @ FOSDEM report2019-02-01T00:00:00-05:002019-02-01T00:00:00-05:00Louis-Philippe Véronneautag:veronneau.org,2019-02-01:/debconf-videoteam-sprint-fosdem-report.html<p>For the past week, the DebConf Videoteam has been hard at work, sprinting in
Diegem, Belgium. We've had a lot of fun, but were also able to improve a lot of
things.</p>
<h2>Raspberry Pi Hacking</h2>
<p><img src="/media/blog/2019-02-01/tally_cards.jpg" title="Cards generated with Toetally" alt="Cards generated with Toetally" height="30%" width="30%" style="float:left"></p>
<p>Jonathan and Andy eventually want to set up Raspberry Pi 3B+ with screens on the …</p><p>For the past week, the DebConf Videoteam has been hard at work, sprinting in
Diegem, Belgium. We've had a lot of fun, but were also able to improve a lot of
things.</p>
<h2>Raspberry Pi Hacking</h2>
<p><img src="/media/blog/2019-02-01/tally_cards.jpg" title="Cards generated with Toetally" alt="Cards generated with Toetally" height="30%" width="30%" style="float:left"></p>
<p>Jonathan and Andy eventually want to set up Raspberry Pi 3B+ with screens on the
top of our cameras to act as tally lights and enable the video directors to send
messages to the camera operators that way. No more sleeping on the switch! To
make this possible, Jonathan has been working on adding a custom drop-down menu
near the camera preview in <a href="https://github.com/voc/voctomix/tree/master/voctogui">voctogui</a>.</p>
<p>Since we don't want to have to jump through hoops to image those boards,
Jonathan worked on booting a pure Debian image on the Pi 3B+. He's been able to
load an Initramfs and a full mainline kernel on it, but ran into trouble getting
the network up because of USB driver problems.</p>
<p>The program Jonathan has been writing to display messages on the Raspberry Pi
screens is called <a href="https://salsa.debian.org/debconf-video-team/toetally">toetally</a>. It's still in pre-alpha, but check it out
nonetheless!</p>
<h2>Opsis</h2>
<p>Tzafrir worked on getting his Opsis board up to date with the latest version of
<a href="https://hdmi2usb.tv/home/">HDMI2USB</a>, the firmware we are using on those boards to capture HDMI inputs.</p>
<p>He's been mostly successful in getting it to work, but has been having hardware
problems with his <a href="https://minnowboard.org/minnowboard-turbot/">Minnowboard Turbot</a>, the SBC we are using to control
the Opsis.</p>
<h2>Documenting our streaming setup</h2>
<p>Nicolas completely rebuilt our streaming setup for DebConf17, migrating from
<code>icecast2</code> to something based on <code>libnginx-mod-rtmp</code>, as <code>icecast2</code> kept
crashing.</p>
<p>It has been working very well since then, but sadly Nicolas hadn't had time to
document how it works properly.</p>
<p>This is not the case anymore! You can now check out
<a href="https://debconf-video-team.pages.debian.net/docs/streaming.html">our streaming documentation</a>.</p>
<p>Nicolas also <a href="https://debconf-video-team.pages.debian.net/ansible/ansible_roles.html">included our ansible role documentation</a> to the
main ansible documentation generated in <code>sphinx</code>.</p>
<h2>Hardware Hacking</h2>
<p><img src="/media/blog/2019-02-01/audio.jpg" title="A Numato Osis, a Minnowboard Turbot and an networking switch in the same 1U case" alt="A Numato Osis, a Minnowboard Turbot and an networking switch in the same 1U case" height="80%" width="80%" style="margin-left: 10%;"></p>
<p>We recently bought a new audio kit to replace the one we had. It was getting
pretty old and was basically crumbling away. At the last mini-DebConf we did in
Hamburg, we even had to borrow a kit from the CCC VOC.</p>
<p>Before the sprint, Andy and Kyle worked on listing what hardware we needed to
buy and Nicolas had the gear shipped to Paris. Sadly, we only got one of the
four wireless receivers we bought, as the other ones were backorder.</p>
<p>During the sprint, Nicolas and Andy worked hard on racking the gear in our new
front of stage rack and Andy did a soldering job in our Opsis case to be able to
power the Opsis, the turbot and the network switch all at once.</p>
<p>You can find more in depths details about our new audio system and the racking
process on <a href="http://blog.koipond.org.uk/archives/54">Andy's blog</a>.</p>
<p>Thanks to <a href="https://hsbxl.be/">HSBXL</a> for lending us tools to hack sheet metal!</p>
<h2>Git LFS</h2>
<p>With the phasing out of Alioth, our old git-annex repository was not accessible
anymore (Salsa doesn't support git-annex). Judit, Tzafir & Stefano thus worked
on migrating it to git LFS.</p>
<p>The plan is to use this new <a href="https://salsa.debian.org/debconf-team/public/share">DebConf share</a> repository to host pictures
taken by attendees.</p>
<p>As we are trying to migrate away from DebConf hardware, Stefano also wrote a
scraper for <a href="https://gallery.debconf.org">DebConf Gallery</a> and plans to move the pictures hosted
there to <a href="https://salsa.debian.org/debconf-team/public/share">DebConf share</a>.</p>
<p>He still plans to modify <a href="https://github.com/CTPUG/wafer">Wafer</a> to make it easy for speakers to publish
their slides on the DebConf website, but if it comes to it, we'll also be able
to use that git LFS repository to host slides too.</p>
<video src="https://veronneau.org/media/blog/2019-02-01/fomu.webm" title="A blinking Fomu" alt="A blinking Fomu" preload autoplay loop style="float:right"></video>
<h2>Playing with the Fomu</h2>
<p>Giovanni Mascellani came-by during the week to learn more about the way our
setup works. He helped with a bunch of small fixes left and right and we had a
very good time!</p>
<p>By pure chance, Stefano came back from LCA with a bunch of <a href="https://www.crowdsupply.com/sutajio-kosagi/fomu">Fomu boards</a>
(tiny open hardware, open toolchain FPGA boards that fits in your USB port) to
give out for FOSDEM and Giovanni managed to flash one of them with a Raspberry
Pi. Very neat!</p>
<h2>USB installer for our ansible playbooks</h2>
<p>Although we mainly install new machines using PXE boot from our network gateway,
we sometime need to bootstrap other machines without it. We normally did that
by installing Debian manually on a machine and then running ansible on it.</p>
<p>We now have an easy to use <a href="https://debconf-video-team.pages.debian.net/docs/usb.html">USB installer</a>! You can run a simple script
that builds a preseeded Debian image and flashes it on a USB key. Once Debian is
installed, the machine reboots and runs ansible automatically.</p>
<p>We previously had something similar, but Carl Karsten rebuilt the whole thing
and made it easier to use. Louis-Philippe updated the documentation.</p>
<h2>Soldering USB ports</h2>
<p><img src="/media/blog/2019-02-01/soldering.jpg" title="Nicolas solering a USB port" alt="Nicolas soldering a USB port"height="30%" width="30%" style="float:right"></p>
<p>When we packed one of our Opsis boards after DebConf18 in Taiwan, one of the USB
ports got mangled. Nicolas spent a whole day trying to resolder it back, but
finally ended up cutting it from the board and replaced it by a cable attached
to a USB header.</p>
<h2>systemd in Docker in Gitlab CI</h2>
<p>Louis-Philippe worked a large part of the week trying to get <code>systemd</code> to run in
Docker in Gitlab CI. We need that to test our ansible modules properly.</p>
<p><a href="https://veronneau.org/running-systemd-in-the-gitlab-docker-runner-ci.html">Having worked on this previously</a>, this week he tried to build a
docker container that ran both <code>systemd</code> as PID 1 and an OpenSSH Server and
tried to run this image as a service.</p>
<p>The idea behind this is that since there is no way to run <code>systemd</code> as PID 1 in
Gitlab CI, maybe it could be achieved in a service. Ansible roles could then
be tested by connecting via ssh.</p>
<p>Sadly, this also proved impossible. Even when using a privileged runner, docker
containers need to have volumes like <code>/sys/fs/cgroup</code> explicitly mounted for
systemd to run and there is no way to achieve this with a service.</p>
<p>To better test our ansible roles, he added more unit tests that skip the
systemd handlers.</p>
<h2>DebConf19 preparations</h2>
<p>Paulo and Adriana flew in from Brazil to attend the video sprint. With the help
of other DebConf people present, they ironed out a few problems and worked some
more on planning for DebConf19.</p>
<h2>Fixing our example inventory in ansible</h2>
<p>Stefano fixed the default ansible inventory that ships with
<a href="https://salsa.debian.org/debconf-video-team/ansible">our playbooks</a>. We don't use that inventory very often, as we have a
more complete one for our production setup.</p>
<p>It is used by people that want to test our setup though, so that means others
will be able to replicate our work more easily.</p>
<h2>Thank you!</h2>
<p>This sprint would not have been possible without the support of the amazing
Jasper Nuyens of <a href="http://linuxbe.com/">Linux Belgium</a>, who very graciously lent us a place
to hack and sleep for the week. Jasper also bought us delicious pizza on
Thursday night, a gesture everyone highly appreciated.</p>
<p>We also extend our thanks to the Debian Project for giving us a budget for the
sprint.</p>
<p>Thank you!</p>Join us in Hamburg for the Hamburg Mini-DebConf!2018-05-18T00:00:00-04:002018-05-18T00:00:00-04:00Louis-Philippe Véronneautag:veronneau.org,2018-05-18:/join-us-in-hamburg-for-the-hamburg-mini-debconf.html<p>Thanks to Debian, I have the chance to be able to attend the
<a href="https://wiki.debian.org/DebianEvents/de/2018/MiniDebConfHamburg">Hamburg Mini-DebConf</a>, taking place in Hamburg from May 16th to May
20th. We are hosted by Dock Europe in the amazing Viktoria Kaserne building.</p>
<p><img src="/media/blog/2018-05-18/viktoria-kaserne.jpg" title="Viktoria Kaserne" alt="Viktoria Kaserne" height="30%" width="30%" style="float:right"></p>
<p>As always, the DebConf videoteam has been hard at work! Our setup is …</p><p>Thanks to Debian, I have the chance to be able to attend the
<a href="https://wiki.debian.org/DebianEvents/de/2018/MiniDebConfHamburg">Hamburg Mini-DebConf</a>, taking place in Hamburg from May 16th to May
20th. We are hosted by Dock Europe in the amazing Viktoria Kaserne building.</p>
<p><img src="/media/blog/2018-05-18/viktoria-kaserne.jpg" title="Viktoria Kaserne" alt="Viktoria Kaserne" height="30%" width="30%" style="float:right"></p>
<p>As always, the DebConf videoteam has been hard at work! Our setup is working
pretty well and we only have minor fixes to implement before the conference
starts.</p>
<p>For those of you who couldn't attend the mini-conf, you can watch the live
stream <a href="https://video.debconf.org">here</a>. Videos will be uploaded shortly after to the <a href="https://video.debian.net">DebConf
video archive</a>.</p>
<p><img src="/media/blog/2018-05-18/cubes.jpg" title="Olasd resting on our makeshift cubes podium" alt="Olasd resting on our makeshift cubes podium" height="60%" width="60%"></p>DebConf Videoteam sprint report - day 52017-11-24T00:00:00-05:002017-11-24T00:00:00-05:00Louis-Philippe Véronneautag:veronneau.org,2017-11-24:/debconf-videoteam-sprint-report-day-5.html<p>This is the last report of the videoteam sprint in Cambridge. Here are the links
to the previous reports:</p>
<ul>
<li><a href="/debconf-videoteam-sprint-report-day-0.html">day 0</a></li>
<li><a href="/debconf-videoteam-sprint-report-day-1.html">day 1</a></li>
<li><a href="/debconf-videoteam-sprint-report-day-2.html">day 2</a></li>
<li><a href="/debconf-videoteam-sprint-report-day-3.html">day 3</a></li>
<li><a href="/debconf-videoteam-sprint-report-day-4.html">day 4</a></li>
</ul>
<h2>Cambridge Mini-DebConf livestream</h2>
<p>You can find all the instructions on how to watch the livestream for the
Cambridge Mini-DebConf <a href="https://debconf-video.alioth.debian.org/">here</a>.</p>
<h2>Report …</h2><p>This is the last report of the videoteam sprint in Cambridge. Here are the links
to the previous reports:</p>
<ul>
<li><a href="/debconf-videoteam-sprint-report-day-0.html">day 0</a></li>
<li><a href="/debconf-videoteam-sprint-report-day-1.html">day 1</a></li>
<li><a href="/debconf-videoteam-sprint-report-day-2.html">day 2</a></li>
<li><a href="/debconf-videoteam-sprint-report-day-3.html">day 3</a></li>
<li><a href="/debconf-videoteam-sprint-report-day-4.html">day 4</a></li>
</ul>
<h2>Cambridge Mini-DebConf livestream</h2>
<p>You can find all the instructions on how to watch the livestream for the
Cambridge Mini-DebConf <a href="https://debconf-video.alioth.debian.org/">here</a>.</p>
<h2>Report</h2>
<p>We did not have as much time as the previous days to sprint today since we had
to move our gear to ARM during the afternoon and prepare the room.</p>
<h3>tumbleweed</h3>
<p>Stefano scraped metadata for two new DebConfs today! More on the way.</p>
<p>He also worked on tuning and licensing the <a href="https://anonscm.debian.org/cgit/debconf-video/archive-meta.git/">metadata scraping tools</a>
and the <a href="https://anonscm.debian.org/cgit/debconf-video/youtube.git/">automated YouTube upload scripts</a> we are using.</p>
<p>After some tinkering tumbleweed was also able to fix a problem we've been having
with our sponsor loop since DC16. The only thing we were able to loop was a
bunch of PNG files, but <a href="https://debconf-video.alioth.debian.org/sponsor_loop.html">we now can loop a MPEG-2 video</a>. Hurray!</p>
<h3>RattusRattus</h3>
<p>Andy finished the sponsor loop and wrote documentation on how to make one today.</p>
<h3>wouter</h3>
<p>Wouter has worked all week long on <a href="https://github.com/yoe/sreview">SReview</a>, the video reviewing
software he wrote. The documentation should now be much more complete. A Debian
package for SReview is also under way!</p>
<h3>olasd</h3>
<p>Nicolas started his day by building us working Cat6 to Serial adapters for our
tally lights. We should now have enough for all of our cameras.</p>
<p>He also worked on displaying a background with the Cambridge Mini-DebConf logo
and fixed the Mini-DebConf livestream webviewer on our documentation page.</p>
<h3>pollo</h3>
<p>I worked a bit on our <a href="https://debconf-video.alioth.debian.org/">documentation website</a> to modify the default
template and add a webviewer for our livestream. The idea was that we can have a
permanent webviewer for our streams for the mini-debconfs.</p>
<p>My thing wasn't working, mainly because I'm not very good with JS and I had to
cook us some lunch, so olasd fixed it for me.</p>
<h2>Thank you!</h2>
<p>This sprint would not have been possible without the support of Debian, the
folks at the Cambridge mini-DebConf and <a href="https://wiki.debian.org/DebianEvents/gb/2017/MiniDebConfCambridge#Sponsors">their sponsors</a>.</p>
<p>Thank you!</p>DebConf Videoteam sprint report - day 42017-11-23T00:00:00-05:002017-11-23T00:00:00-05:00Louis-Philippe Véronneautag:veronneau.org,2017-11-23:/debconf-videoteam-sprint-report-day-4.html<p>Day 4 of the videoteam sprint!</p>
<h2><a href="https://youtu.be/tdtdDTOJBr4?t=29">Pictures of Our Lives</a></h2>
<p>"Countless" people wrote to me asking for more pictures of our marvelous sprint,
especially of our feline friend. How could I resist?</p>
<p><img src="/media/blog/2017-11-23/cat.jpg" height="100%" width="100%" title="Giving the cat scritches" alt="Giving the cat scritches"></p>
<p><img src="/media/blog/2017-11-23/garden.jpg" height="100%" width="100%" title="View on the garden behind the house" alt="View on the garden behing the house"></p>
<p><img src="/media/blog/2017-11-23/tripod.jpg" height="100%" width="100%" title="Our voctomix setup" alt="Our voctomix setup"></p>
<p>Now that we've got this covered, here's what we did today.</p>
<h2>Report</h2>
<h3>tumbleweed</h3>
<p>Stefano had to do some …</p><p>Day 4 of the videoteam sprint!</p>
<h2><a href="https://youtu.be/tdtdDTOJBr4?t=29">Pictures of Our Lives</a></h2>
<p>"Countless" people wrote to me asking for more pictures of our marvelous sprint,
especially of our feline friend. How could I resist?</p>
<p><img src="/media/blog/2017-11-23/cat.jpg" height="100%" width="100%" title="Giving the cat scritches" alt="Giving the cat scritches"></p>
<p><img src="/media/blog/2017-11-23/garden.jpg" height="100%" width="100%" title="View on the garden behind the house" alt="View on the garden behing the house"></p>
<p><img src="/media/blog/2017-11-23/tripod.jpg" height="100%" width="100%" title="Our voctomix setup" alt="Our voctomix setup"></p>
<p>Now that we've got this covered, here's what we did today.</p>
<h2>Report</h2>
<h3>tumbleweed</h3>
<p>Stefano had to do some office work today and had very little time to hack on the
videoteam stuff.</p>
<p>He did get access to the pentabarf XML of DebConf 7 to 13. This should help a
great lot generating the video metadata for our archive.</p>
<p>He also played around with YouTube a little. It seems we already got our first
copyright strike! Gotta love remixes of The Lion King hidden in DebConf videos.</p>
<h3>ivodd</h3>
<p>Ivo left us to work with the Debian Release Team today. <a href="/media/blog/2017-11-23/sad.webm">Sad!</a></p>
<h3>RattusRattus</h3>
<p>Andy and Kyle got together today and worked on making a list of the audio
hardware we should buy to replace our old kit.</p>
<p>He also finished the video loop we are going to use at the mini-conf.</p>
<h3>paddatrapper</h3>
<p>Kyle has some time today and gave Andy a call to work on our audio gear
wishlist. He also worked on <a href="https://wiki.debian.org/Teams/DebConf/Video/VideoTeamDocs/NewVideoTeamHardware#Front_of_House_Rack">designing a flight case</a> for it.</p>
<p>We will eventually submit a budget request to buy said kit.</p>
<h3>olasd</h3>
<p>Nicolas mainly worked on refactoring the ansible module that generates the TLS
certificates for our streaming network.</p>
<h3>pollo</h3>
<p>Our <a href="https://anonscm.debian.org/cgit/debconf-video/ansible.git/">ansible roles</a> are now all documented! I'm happy this is all done. Next,
I'll try to remove some of the ugly hacks in our ansible repository.</p>
<p>We finished the day by going to the Polish Club. Here's a picture of the team!</p>
<p><img src="/media/blog/2017-11-23/polish-club.jpg" height="100%" width="100%" title="Dinner at the Cambridge Polish Club" alt="Dinner at the Cambridge Polish Club"></p>DebConf Videoteam sprint report - day 32017-11-22T00:00:00-05:002017-11-22T00:00:00-05:00Louis-Philippe Véronneautag:veronneau.org,2017-11-22:/debconf-videoteam-sprint-report-day-3.html<p>Erf, I'm tired and it is late so this report will be short and won't include
dank memes or funny cat pictures. Come back tomorrow for that.</p>
<h3>tumbleweed</h3>
<p>Stefano worked all day long on the metadata project and on YouTube uploads. I
think the DebConf7 videos have just finished being …</p><p>Erf, I'm tired and it is late so this report will be short and won't include
dank memes or funny cat pictures. Come back tomorrow for that.</p>
<h3>tumbleweed</h3>
<p>Stefano worked all day long on the metadata project and on YouTube uploads. I
think the DebConf7 videos have just finished being uploaded, <a href="https://www.youtube.com/channel/UC7SbfAPZf8SMvAxp8t51qtQ">check them out</a>!</p>
<h3>RattusRattus</h3>
<p>Apart from the wonderful lasagna he baked for us, Andy continued working on the
scraping scheme, helping tumbleweed.</p>
<h3>nattie</h3>
<p>Nattie has been with us for a few days now, but today she did some great QA work
on our metadata scraping of the video archive.</p>
<h3>ivodd</h3>
<p>More tests, more bugs! Ivo worked quite a bit on the Opsis board today and it
seems everything is ready for the mini-conf. \0/</p>
<h3>olasd</h3>
<p>Nicolas built the streaming network today and wrote some Ansible roles to manage
TLS cert creation through Let's Encrypt. He also talked with DSA some more about
our long term requirements.</p>
<h3>wouter</h3>
<p>I forgot to mention it yesterday because he could not come to Cambridge, but
Wouter has been sprinting remotely, working on the reviewing system. Everything
with regards to reviewing should be in place for the mini-conf.</p>
<p>He also generated the intro and outro slides for the videos for us.</p>
<h3>KiBi and Julien</h3>
<p>KiBi and Julien arrived late in the evening, but were nonetheless of great
assistance.</p>
<p>Neither are technically part of the videoteam, but their respective experience
with Debian-Installer and general DSA systems helped us a great deal.</p>
<h3>pollo</h3>
<p>I'm about 3/4 done documenting our ansible roles. Once I'm done, I'll try to
polish some obvious hacks I've seen while documenting.</p>DebConf Videoteam sprint report - day 22017-11-21T00:00:00-05:002017-11-21T00:00:00-05:00Louis-Philippe Véronneautag:veronneau.org,2017-11-21:/debconf-videoteam-sprint-report-day-2.html<p>Another day, another videoteam report! It feels like we did a lot of work today,
so let's jump right in:</p>
<h3>tumbleweed</h3>
<p>Stefano worked most of the day on the DebConf video archive metadata project. A
bunch of videos already have been uploaded to YouTube. </p>
<p><a href="https://www.youtube.com/watch?v=4T1Yczwk1Dw">Here's some gold</a> you might want …</p><p>Another day, another videoteam report! It feels like we did a lot of work today,
so let's jump right in:</p>
<h3>tumbleweed</h3>
<p>Stefano worked most of the day on the DebConf video archive metadata project. A
bunch of videos already have been uploaded to YouTube. </p>
<p><a href="https://www.youtube.com/watch?v=4T1Yczwk1Dw">Here's some gold</a> you might want
to watch.</p>
<p>By the end of our sprint, we should have generated metadata for most of our
archive and uploaded a bunch of videos to YouTube. Don't worry though, YouTube
is only a mirror and we'll keep our current archive as a video master.</p>
<h3>RattusRattus</h3>
<p>Andy joined us today! He hacked away with Stefano for most of the day, working
on the metadata format for our videos and making schemes for our scraping tools.</p>
<h3>ivodd</h3>
<p>Ivo built and tested a good part of our video setup today, fixing bugs left and
right in Ansible. We are prepared for the <a href="https://wiki.debian.org/DebianEvents/gb/2017/MiniDebConfCambridge">Cambridge Mini-DebConf</a>!</p>
<h3>olasd</h3>
<p>Nicolas finished his scripts to automatically spool up and down our streaming
mirrors via the DigitalOcean API today and ran our Ansible config against those
machines to test our setup.</p>
<h3>pollo</h3>
<p>For my part, I completed a huge chunk of my sprint goals: we now have <a href="https://debconf-video.alioth.debian.org/">a website
documenting our setup</a>! It is currently hosted on Alioth pages, but
olasd plans to make a request to DSA to have it hosted on the static.debian.org
machine. The final URL will most likely be something like:
https://video.debconf.org</p>
<p>The documentation is still missing the streaming section (our streaming setup is
not final yet, so not point in documenting that) and a section hosting guides
for the volunteers. With some luck I might write those later this week.</p>
<p>I've now moved on documentation our various Ansible roles.</p>
<p>Oh, and we also ate some cheese fondue:</p>
<p><img src="/media/blog/2017-11-21/fondue.jpg" height="100%" width="100%" title="Our fondue dinner" alt="Our fondue dinner"></p>DebConf Videoteam sprint report - day 12017-11-20T00:00:00-05:002017-11-20T00:00:00-05:00Louis-Philippe Véronneautag:veronneau.org,2017-11-20:/debconf-videoteam-sprint-report-day-1.html<p>Another videoteam report! We've now been hacking for a full day and we are
slowly starting to be productive. It's always hard to get back in a project when
you haven't touched it in a while...</p>
<p>Anyway, let's start this report with some important announcement: we finally
have been able …</p><p>Another videoteam report! We've now been hacking for a full day and we are
slowly starting to be productive. It's always hard to get back in a project when
you haven't touched it in a while...</p>
<p>Anyway, let's start this report with some important announcement: we finally
have been able to snap a good picture of the airbnb's cat!</p>
<p><img src="/media/blog/2017-11-20/cat.jpg" height="100%" width="100%" title="The airbnb's cat" alt="The airbnb's cat"></p>
<p>No more nagging me about the placeholder image from Wikipedia I used in
<a href="https://veronneau.org/debconf-videoteam-sprint-report-day-0.html">yesterday's report</a>!</p>
<h2><a href="/media/blog/2017-11-20/table.mp4">Set up</a></h2>
<p><img src="/media/blog/2017-11-20/table.jpg" height="100%" width="100%" title="Our hacking space" alt="Our hacking space"></p>
<p>Here's what the team did today:</p>
<h3>tumbleweed</h3>
<p>Stefano started the day by hacking away on our video archive. We eventually want
to upload all our videos to YouTube to give them exposure, but sadly our archive
metadata is in a pretty poor shape.</p>
<p>With the script tumbleweed wrote, we can scrape the archive for matches against
the old DebConf's pentabarf XML we have.</p>
<p>tumbleweed also helped Ivo with the ansible PXE setup he's working on. Some
recent contributions from a collaborator implemented new features (like a nice
menu to choose from) but also came with a few annoying bugs.</p>
<h3>ivodd</h3>
<p>Ivo continued working on the PXE setup today. He also tried to break our ansible
setup by using fresh installs with different user cases (locales, interfaces,
etc.), with some success.</p>
<p>The reason he and Stefano are working so hard on the PXE boot is that we had a
discussion about the future of our USB install method. The general consensus on
this was although we would not remove it, we would not actively maintain it
anymore.</p>
<p>PXE is less trouble for multiple machines. For single machines or if you don't
control the DHCP server, using ansible manually on a fresh Debian install will
be the recommended way.</p>
<h3>olasd</h3>
<p>After a very long drive, olasd arrived late in the evening with all our gear.
Hurray! We were thus able to set up some test boxes and start wiring the airbnb
properly. Tomorrow will certainly be more productive with all this stuff at our
disposition.</p>
<h3>pollo</h3>
<p>Today I mainly worked on setting up our documentation website. After some
debate, we decided that <a href="http://www.sphinx-doc.org/en/stable/">sphinx</a> was the right tool for the job.</p>
<p>I am a few pages in and if I work well I think we'll have something to show for
at the end of the sprint!</p>
<p>I also was thrown back into ansible after witnessing a bug in the locale
management. I'm still rusty, but it's slowly coming back to me.</p>
<p>Let's end this blog post with a picture of the neon pineapple that sits on the
wall of the solarium.</p>
<p><img src="/media/blog/2017-11-20/pineapple.jpg" height="100%" width="100%" title="Upside down this picture is even more troubling" alt="Upside down this picture is even more troubling"></p>DebConf Videoteam sprint report - day 02017-11-19T00:00:00-05:002017-11-19T00:00:00-05:00Louis-Philippe Véronneautag:veronneau.org,2017-11-19:/debconf-videoteam-sprint-report-day-0.html<p>First day of the <a href="https://wiki.debian.org/Sprints/2017/DebConfVideoteamSprint20Nov2017">videoteam autumn sprint</a>! Well, I say first day, but
in reality it's more day 0. Even though most of us have arrived in Cambridge
already, we are still missing a few people.</p>
<p>Last year we decided to <a href="https://veronneau.org/debconf-videoteam-sprint-day-4.html">sprint in Paris</a> because most of our video gear …</p><p>First day of the <a href="https://wiki.debian.org/Sprints/2017/DebConfVideoteamSprint20Nov2017">videoteam autumn sprint</a>! Well, I say first day, but
in reality it's more day 0. Even though most of us have arrived in Cambridge
already, we are still missing a few people.</p>
<p>Last year we decided to <a href="https://veronneau.org/debconf-videoteam-sprint-day-4.html">sprint in Paris</a> because most of our video gear
is stocked there. This year, we instead chose to sprint a few days before the
<a href="https://wiki.debian.org/DebianEvents/gb/2017/MiniDebConfCambridge">Cambridge Mini-Debconf</a> to help record the conference afterwards.</p>
<p>Since some of us arrived very late and the ones who did arrive early are still
mostly jet lagged (that includes me), I'll use this post to introduce the space
we'll be working from this week and our general plan for the sprint.</p>
<h2><a href="https://www.youtube.com/watch?v=UFSyBBglmpI">House Party</a></h2>
<p>After some deliberations, we decided to rent a house for a week in Cambridge:
finding a work space to accommodate us and all our gear proved difficult and we
decided mixing accommodation and work would be a good idea.</p>
<p>I've only been here for a few hours, but I have to say I'm pretty impressed by
the airbnb we got. Last time I checked (it seems every time I do, some new room
magically appears), I counted 5 bedrooms, 6 beds, 5 toilets and 3 shower rooms.
Heck, there's even a solarium and a training room with weights and a punching
bag on the first floor.</p>
<p>Having a whole house to ourselves also means we have access to a functional
kitchen. I'd really like to cook at least a few meals during the week.</p>
<p>There's also a cat!</p>
<p><a href="https://commons.wikimedia.org/wiki/File:Drazet,_a_black_feral_cat.jpg"><img src="/media/blog/2017-11-19/black-cat.jpg" height="100%" width="100%" title="Picture of a black cat I took from Wikipedia. It was too dark outside to use mine" alt="Picture of a black cat I took from Wikipedia. It was too dark outside to use mine"></a></p>
<p>It's not the house's cat <em>per say</em>, but it's been hanging out around the house
for most of the day and makes cute faces trying to convince us to let it come
inside. Nice try cat. Nice try.</p>
<p>Here are some glamour professional photos of what the place looks like on a
perfect summer day, just for the kick of it:</p>
<p><img src="/media/blog/2017-11-19/exterior.jpg" height="100%" width="100%" title="The view from the garden" alt="The view from the garden">
<img src="/media/blog/2017-11-19/kitchen.jpg" height="100%" width="100%" title="The Kitchen" alt="The Kitchen">
<img src="/media/blog/2017-11-19/bunk-beds.jpg" height="100%" width="100%" title="One of the multiple bedrooms" alt="One of the multiple bedrooms"></p>
<p>Of course, reality has trouble matching all the post-processing filters.</p>
<h2>Plan for the week</h2>
<p>Now on a more serious note; apart from enjoying the beautiful city of Cambridge,
here's what the team plans to do this week:</p>
<h3>tumbleweed</h3>
<p>Stefano wants to continue refactoring our ansible setup. A lot of things have
been added in the last year, but some of it are hacks we should remove and
implement correctly.</p>
<h3>highvoltage</h3>
<p>Jonathan won't be able to come to Cambridge, but plans to work remotely, mainly
on our desktop/xfce session implementation. Another pile of hacks waiting to be
cleaned!</p>
<h3>ivodd</h3>
<p>Ivo has been working a lot of the pre-ansible part of our installation and plans
to continue working on that. At the moment, creating an installation USB key is
pretty complicated and he wants to make that simpler.</p>
<h3>olasd</h3>
<p>Nicolas completely reimplemented our streaming setup for DC17 and wants to
continue working on that.</p>
<p>More specifically, he wants to write scripts to automatically setup and teardown
- via API calls - the distributed streaming network we now use.</p>
<p>Finding a way to push TLS certificates to those mirrors, adding a live stream
viewer on <a href="https://video.debconf.org">video.debconf.org</a> and adding a viewer to our archive are also
things he wants to look at.</p>
<h3>pollo</h3>
<p>For my part, I plan to catch up with all the commits in our ansible repository I
missed since last year's sprint and work on documentation.</p>
<p>It would be very nice if we could have a static website describing our work so
that others (at mini-debconfs for examples) could replicate it easily.</p>
<p>If I have time, I'll also try to document all the ansible roles we have written.</p>
<p>Stay tuned for more daily reports!</p>Migrating my website to Pelican2017-11-04T00:00:00-04:002017-11-04T00:00:00-04:00Louis-Philippe Véronneautag:veronneau.org,2017-11-04:/migrating-my-website-to-pelican.html<p>After too much time lying to myself, telling myself things like "I'll just add
this neat feature I want on my blog next week", I've finally made the big jump,
ditched django and migrated my website to <a href="https://getpelican.com">Pelican</a>.</p>
<p>I'm going to the <a href="https://wiki.debian.org/DebianEvents/gb/2017/MiniDebConfCambridge">Cambridge Mini-Debconf</a> at the end of the month …</p><p>After too much time lying to myself, telling myself things like "I'll just add
this neat feature I want on my blog next week", I've finally made the big jump,
ditched django and migrated my website to <a href="https://getpelican.com">Pelican</a>.</p>
<p>I'm going to the <a href="https://wiki.debian.org/DebianEvents/gb/2017/MiniDebConfCambridge">Cambridge Mini-Debconf</a> at the end of the month for
the <a href="https://wiki.debian.org/Sprints/2017/DebConfVideoteamSprint20Nov2017">Debconf Videoteam Autumn sprint</a> and I've taken the task of making
daily sprint reports for the team. That in return means I have to publish my
blog on <a href="http://planet.debian.org/">Planet Debian</a>. My old website not having
feeds made this a little hard and this perfect storm gave me the energy to make
the migration happen.</p>
<p>Anyway, django was fun. Building a (crappy) custom blogging engine with it
taught me some rough basics, but honestly I don't know why I ever thought it was
a good idea.</p>
<p>Don't get me wrong: <a href="https://github.com/CTPUG/wafer">django is great</a> and should
definitely be used for large and complicated websites. My blog just ain't one.</p>
<p>Migrating to Pelican was pretty easy since it also uses Jinja2 templates and
generates content from Mardown. The hardest part was actually bending it to
replicate the weird and specific behavior I wanted it to have.</p>
<p>So yeah, woooo, I migrated to Pelican. Who cares, right? Well, if you are
amongst the very, very few people who read the blog posts I mainly write for
myself, you'll be please to know that:</p>
<ul>
<li><a href="/tag/debconf.html">Tags</a> are now implemented</li>
<li>You can subscribe to a wide array of <a href="/feeds">ATOM feeds</a> to follow my blog</li>
</ul>
<p>Here's a bonus picture of a Pelican from Wikimedia, just for the sake of it:</p>
<p><a href="https://commons.wikimedia.org/wiki/File:Pelican_lakes_entrance02.jpg"><img src="/media/blog/2017-11-04/pelican.jpg" height="100%" width="100%" title="A pelican" alt="A pelican"></a></p>DebConf videoteam sprint - day 42016-11-20T00:00:00-05:002016-11-20T00:00:00-05:00Louis-Philippe Véronneautag:veronneau.org,2016-11-20:/debconf-videoteam-sprint-day-4.html<p>This is the resumé of day 4 of the DebConf videoteam sprint in Paris. You can
find day 1, day 2 and day 3 résumés <a href="/debconf-videoteam-sprint-day-1.html">here</a>,
<a href="/debconf-videoteam-sprint-day-2.html">here</a> and <a href="/debconf-videoteam-sprint-day-3.html">here</a>.</p>
<p>Today was our last day of sprint. We stopped working at the end of the afternoon
because we had to start …</p><p>This is the resumé of day 4 of the DebConf videoteam sprint in Paris. You can
find day 1, day 2 and day 3 résumés <a href="/debconf-videoteam-sprint-day-1.html">here</a>,
<a href="/debconf-videoteam-sprint-day-2.html">here</a> and <a href="/debconf-videoteam-sprint-day-3.html">here</a>.</p>
<p>Today was our last day of sprint. We stopped working at the end of the afternoon
because we had to start packing the hardware back in boxes and some of us had to
leave early.</p>
<h2>pollo</h2>
<p>Me again. I mainly worked on ansible today too. All the configuration we had in
FAI is now in our <a href="https://anonscm.debian.org/cgit/debconf-video/ansible.git">ansible git repository</a>.
A few things still need to be tested, but it's mostly all done on that side.</p>
<h2>h01ger</h2>
<p>H01ger continued his packaging work. <a href="https://packages.debian.org/sid/voctomix-outcasts">voctomix-outcasts</a>
is now in Debian! The voctomix package also has a <code>.desktop</code> file now.</p>
<p>He also set up a few Jenkins tests to follow some packages we need.</p>
<p>Last but not least, he wrote to the person coordinating the subtitling efforts
for the DebConf videos. Sadly, we neglected the work done by these people and we
will try to fix that in the future.</p>
<h2>olasd</h2>
<p>olasd helped Andy with hardware testing and cursed icecast2 a lot for not being
able to loop <code>.webm</code> files.</p>
<p>Since he's also in charge of our stuff at IRILL, he repacked all of our gear to
make sure we could easily use it next time we need it.</p>
<h2>tumbleweed</h2>
<p>tumbleweed started the day by packaging <a href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=845107">hdmi2usb-mode-switch</a>,
a tool needed to flash the Opsis and the Atlys board. It's now in the NEW queue,
waiting for ftpmaster approval.</p>
<p>He also asked for the removal of the <a href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=845120">gst-plugins-dvswitch</a>
package, effectively removing all traces of dvswitch in Debian. So long
dvswitch, you served us well!</p>
<p>At the end of the day, he also helped me with the ansible configuration,
reviewing my work and adding a few things.</p>
<h2>Andy</h2>
<p>We had a lot of old gear no one had touched for a while. It was taking space in
IRILL and we always ended having problems because somehow, this old stuff made
it's way to DebConf.</p>
<p>Andy fixed that. He and olasd tested <em>all</em> the freaking cables we had and most
of the hardware that could be tested.</p>
<p>He also took our broken radio receivers with him to see if he could fix them.</p>
<p>Finally, he continued his work on our hardware shopping list.</p>
<h2>wouter</h2>
<p>wouter again worked all day long on his new reviewing program.</p>
<h2>So long, and thanks for all the fish</h2>
<p><img src="/media/blog/2016-11-20/tableau_irill.jpg" height="100%" width="100%" title="A thank you message to IRILL h01ger wrote on a blackboard" alt="A thank you message to IRILL h01ger wrote on a blackboard"></p>DebConf videoteam sprint - day 32016-11-19T00:00:00-05:002016-11-19T00:00:00-05:00Louis-Philippe Véronneautag:veronneau.org,2016-11-19:/debconf-videoteam-sprint-day-3.html<p>This is the resumé of day 3 of the DebConf videoteam sprint in Paris. You can
find day 1 and day 2 résumés <a href="/debconf-videoteam-sprint-day-1.html">here</a> and
<a href="/debconf-videoteam-sprint-day-2.html">here</a>.</p>
<p>Today was a full day of work. No travel, not long discussion about what we
should be doing: only work (and some nice Parisian …</p><p>This is the resumé of day 3 of the DebConf videoteam sprint in Paris. You can
find day 1 and day 2 résumés <a href="/debconf-videoteam-sprint-day-1.html">here</a> and
<a href="/debconf-videoteam-sprint-day-2.html">here</a>.</p>
<p>Today was a full day of work. No travel, not long discussion about what we
should be doing: only work (and some nice Parisian food).</p>
<h2>pollo</h2>
<p>That's me! Today I worked on our new and shiny ansible setup. It's going well
and I may even be able to migrate everything we did in FAI to it.</p>
<h2>h01ger</h2>
<p>H01ger packaged some stuff we needed today. He mainly worked on
<a href="https://github.com/CarlFK/voctomix-outcasts">voctomix-outcasts</a>, a set of
scripts we use with voctomix.</p>
<p>The bug he worked on is <a href="https://mail-archive.com/debian-bugs-dist@lists.debian.org/msg1472177.html">#833700</a>.</p>
<h2>olasd</h2>
<p>olasd worked on icecast2 today. At the moment, when the source drops in icecast
(the talk is finished and we stop recording), people on the stream just see a
blank video.</p>
<p>He thus tried to figure out a way to put our sponsors loop as a fallback source.
Seems he was able to make it work, but icecast is bad at dealing with webm loop. </p>
<p>He also helped Andy with microphone debugging.</p>
<h2>tumbleweed</h2>
<p>tumbleweed and Andy worked a long time on video capture today.</p>
<p>We have been testing a <a href="http://wiki.minnowboard.org/MinnowBoard_Turbot">new SBC</a>
to manage the loop on the Opsis board. They had some trouble with it at first
because they installed the OS on a USB key and it could not handle the bandwidth
needed for video. They reinstalled Debian on a SSD and it made it better.</p>
<p>Globally, the Turbot seems to be a nice little piece of hardware!</p>
<p>tumbleweed also worked on a broken Opsis board we have and sent some bug reports
to the main dev.</p>
<p>Finally, he helped h01ger with packaging and packaged <code>hdmi2usb-mode-switch</code>
(a tool to flash the atlys and the opsis boards).</p>
<h2>Andy</h2>
<p>Apart from helping tumbleweed, Andy continued his work on our hardware shopping
list. New stuff <code>\0/</code>!</p>
<p>He also worked hard with olasd, testing our audio gear to see what we need to
replace.</p>
<h2>ivodd</h2>
<p>ivodd finished the work on provisioning machines with Debian Installer today.
That's really cool, since it means installing machines will be really easier
from now on.</p>
<p>He finished the day by playing with SDI, audio inputs and Voctomix.</p>
<h2>wouter</h2>
<p>wouter coded all day on a new review system. The one we are using is somewhat
complicated and his new project aims to make it simpler, both for users and
for maintainers.</p>
<h2>Throwing out old stuff</h2>
<p>We are sprinting at IRILL and took advantage from the fact all of the DebConf
video hardware is stored there.</p>
<p>Some of our hardware is really old (or broken, or both) and we went through all
of it to see what could be thrown out.</p>
<h2>Funny moments</h2>
<p>To test a possible AV sync problem on Voctomix, we need some spare videos. We
thus decided to use old DebConf videos and found some funny moments.</p>
<p>Check out our new <a href="https://wiki.debian.org/Teams/DebConf/Video/FunnyMoments">bloopers wiki page</a>!</p>
<h2>Thanks to IRILL</h2>
<p><a href="https://www.irill.org">IRILL</a> has been hosting our sprint in Paris and it's been
great!</p>
<p><img src="https://c7.staticflickr.com/6/5559/30967426862_d419089766_z.jpg" height="100%" width="100%" title="The videoteam" alt="The videoteam"></p>
<p>They also paid us a <em>very</em> nice dinner at a nice French restaurant called
<em>Le Coupe-Chou</em>. Thanks for being so great IRILL!</p>
<p><img src="https://c5.staticflickr.com/6/5818/31092331516_93deab9328_z.jpg" height="100%" width="100%" title="tumbleweed and ivodd waiting for dinner to arrive" alt="tumbleweed and ivodd waiting for dinner to arrive"></p>
<h2>Some picture of us doing very serious stuff</h2>
<p>Wouter took really nice pictures of us. You can see them all on his
<a href="https://www.flickr.com/photos/wouterverhelst">Flickr</a> account, but here are
the ones I like the most:</p>
<p><img src="https://c5.staticflickr.com/6/5572/31092326476_77f7c9a882_z.jpg" height="100%" width="100%" title="tumbleweed and h01ger working on a package" alt="tumbleweed and h01ger working on a package"></p>
<p><img src="https://c3.staticflickr.com/6/5544/31092320026_76dec1a6b8_z.jpg" height="100%" width="100%" title="god damn cables" alt="god damn cables"></p>
<p><img src="https://c8.staticflickr.com/6/5656/31128824975_6e468ed8f4_z.jpg" height="100%" width="100%" title="More cables" alt="More cables"></p>
<p><img src="https://c7.staticflickr.com/6/5684/30985561742_4c9811c42a_z.jpg" height="100%" width="100%" title="Andy working on audio" alt="Andy working on audio"></p>
<p><img src="https://c3.staticflickr.com/6/5828/30761082370_f2b2b9b007_z.jpg" height="100%" width="100%" title="Computaaaaaas" alt="Computaaaaaas">
<img src="https://c7.staticflickr.com/6/5761/30761086670_bbf76fd051_z.jpg" height="100%" width="100%" title="That's not me but my evil twin" alt="That's not me but my evil twin"></p>DebConf videoteam sprint - day 22016-11-18T00:00:00-05:002016-11-18T00:00:00-05:00Louis-Philippe Véronneautag:veronneau.org,2016-11-18:/debconf-videoteam-sprint-day-2.html<p>This is the resumé of day 2 of the DebConf videoteam sprint in Paris. You can
find day 1 résumé <a href="/debconf-videoteam-sprint-day-1.html">here</a>.</p>
<h2>Planning</h2>
<p>We started the day by planning our sprint. We decided we needed to talk about:</p>
<ul>
<li>Hardware (cams, audio, PCs, etc.)</li>
<li>Building a test lab</li>
<li>Provisioning & configuration management</li>
<li>Docs …</li></ul><p>This is the resumé of day 2 of the DebConf videoteam sprint in Paris. You can
find day 1 résumé <a href="/debconf-videoteam-sprint-day-1.html">here</a>.</p>
<h2>Planning</h2>
<p>We started the day by planning our sprint. We decided we needed to talk about:</p>
<ul>
<li>Hardware (cams, audio, PCs, etc.)</li>
<li>Building a test lab</li>
<li>Provisioning & configuration management</li>
<li>Docs & Wiki</li>
<li>Archiving</li>
<li>Streaming & Network</li>
<li>Packaging tools</li>
<li>Shipping & Storage</li>
<li>Review</li>
</ul>
<h3>Hardware</h3>
<p>We need new hardware. We listed the stuff we need
<a href="https://wiki.debian.org/Teams/DebConf/Video/VideoTeamDocs/NewVideoTeamHardware">here</a>.
We plan to have a list to show to the DPL for approval at the end of the sprint.</p>
<h3>Building a test lab</h3>
<p>This is a project and is not likely to be implemented at the end of the sprint.
We needed to talk about it because we need to plan for that hardware too.</p>
<p>So yeah, we want to have a test lab with a camera and an Opsis board permanently
running so we can test firmware and software at any time without having
physical access to the material.</p>
<h3>Provisioning & configuration management</h3>
<p>We will try to get a basic Ansible setup started. We will also try to work on
debian-installer for provisioning. FAI has been really helpful, but we've come
to term with the fact we are not using it as it was intended to be.</p>
<h3>Docs & wiki</h3>
<p>We want to move our documentation from the DebConf wiki to the Debian wiki. All
new documentation should be put there and we need to tag the relevant
documentation on DebConf wiki for transfer.</p>
<h2>Archive</h2>
<p>Our current archive solution is problematic since it does not handle any form of
metadata. We don't think we'll be able to work on this during the sprint, but we
know it's very important for things like subtitling.</p>
<h3>Streaming</h3>
<p>One of the problems we have with streaming is that we have to ask access each
time we need something to be done.</p>
<p>The solution would be to be able to use something like an cloud admin panel. We
are thus envisioning is something like Amazon EC2 instances where we can simply
spin out VMs everywhere in the world for the 6 weeks we need them.</p>
<h3>Packaging</h3>
<p>We want to package Opsis related stuff and some Voctomix stuff like
<a href="https://github.com/CarlFK/voctomix-outcasts">voctomix-outcast</a>.</p>
<p>We also wrote some systemd unit files that we might want to add to the voctomix
package.</p>
<h3>Shipping & Storage</h3>
<p>Debian France set up a UPS account recently. We could use that instead of asking
people to act as mules.</p>
<p>Andy proposed to store our hardware. IRILL might get too crowded if we buy tons
of new stuff.</p>
<h3>Review</h3>
<p>At the moment, we are using <a href="https://github.com/CarlFK/veyepar">Veyepar</a>, but
it's badly documented and the UI is not very intuitive.</p>
<p>We might want to look at other solutions, but we are not sure if we'll have
time.</p>
<h2>What we actually did</h2>
<p>Planning aside, we worked on a few important things:</p>
<ul>
<li>Ivo worked updating our Debian-Installer config (provisionning)</li>
<li>I worked on our new ansible configuration</li>
<li>Andy worked on making the Turbot SBC work and on our hardware buy list</li>
<li>Stefano worked on packaging, although it seems his work did was not required
for the videoteam after all, but fxload is now better anyway :D</li>
<li>Holger mainly worked on Reproducible builds stuff as far as I can tell</li>
<li>Nicolas wasn't around much (he's got a day job :D) but started working on our
streaming issues</li>
</ul>DebConf videoteam sprint - day 12016-11-17T00:00:00-05:002016-11-17T00:00:00-05:00Louis-Philippe Véronneautag:veronneau.org,2016-11-17:/debconf-videoteam-sprint-day-1.html<h2>Avant-propos</h2>
<p>I've been working with the DebConf videoteam for two years now and I'm slowly
starting to understand how things work. If you don't know DebConf or the work
the DebConf videoteam does, let me try to summarize it for you.</p>
<p>Each year, the Debian community gathers for two weeks …</p><h2>Avant-propos</h2>
<p>I've been working with the DebConf videoteam for two years now and I'm slowly
starting to understand how things work. If you don't know DebConf or the work
the DebConf videoteam does, let me try to summarize it for you.</p>
<p>Each year, the Debian community gathers for two weeks to hack on stuff (and
drink beer). This awesome moment in the year is called DebConf. People come from
all over the world to work on hard problems and to watch conferences given by
their peers.</p>
<p>The job of the DebConf videoteam is to live stream and record these conferences
so that people can participate remotely or watch the conferences they missed.
You may think it's something easy, but the videoteam really does miracles. With
very little hardware and very neat free software, we are able to record & stream
three contiguous conference tracks for a whole week. That is quite a feat.</p>
<h2>de res Sprint</h2>
<p>From what I understand, the current workflow of the videoteam looks somewhat
likes this:</p>
<ul>
<li>make sure the video gear arrives at <code>$debconf_location</code> at least a week prior
to the conference</li>
<li>sleep very little and hack the shit out everything during DebCamp to
“<em>Just Make Everything Work™</em>”</li>
</ul>
<p>To be honest, it kinda works. The videoteam people are really good at what they
are doing and each year we build on the things we did the year before. The main
problem with that kind of workflow is we often cut corners and write very little
documentation.</p>
<p>And that makes us sad :(</p>
<p>We want things to be better. For once, we would like to sleep more during
DebCamp and worry less about everything not working until the very end. We thus
decided we would try to hold two (2) sprints between DC16 and DC17, mainly to
migrate to newer software/hardware. Our main goals for this first sprint are:</p>
<ul>
<li>work on Voctomix</li>
<li>streamline the streaming infrastructure</li>
<li>play some more with the Opsis boards</li>
<li>write some more documentation</li>
<li>agree on the new hardware we want to buy</li>
</ul>
<p>Chances are we won't be able to do all this stuff in such a short time though.</p>
<h2>Stay tuned!</h2>
<p>Debian was kind enough to sponsor our sprint, giving us enough $$$ to pay some
train & plane tickets. I was thus able to make it to Paris <code>\0/</code>.</p>
<p>If you think the stuff we do is interesting, stay tuned! I'll blog our progress
here daily. If you are around, drop-in to say hello (or come and talk to us
on <code>#debconf-video @ OFTC</code>).</p>
<p>The current sprint will run from November 17th to November 20th in Paris, at
<a href="https://www.irill.org/pages/access.html">IRILL</a> offices.</p>
<h2>Day 1</h2>
<p>The title of this blog post is <em>DebConf videoteam sprint - day 1</em> so you might
expect a summary of what we did today. Well, we didn't do much. We mainly used
the day to get to Paris and regroup at IRILL.</p>
<p>We did manage to talk about configuration management though. We have been
talking about replacing our FAI build by something else for some times now. We
discussed:</p>
<ul>
<li>what development workflow should we use?</li>
<li>what configuration management should we use?</li>
<li>what kind of provisioning system should we use?</li>
</ul>How-to install voctomix and use it with Blackmagic's Decklink mini recorder cards2016-06-28T00:00:00-04:002016-06-28T00:00:00-04:00Louis-Philippe Véronneautag:veronneau.org,2016-06-28:/how-to-install-voctomix-and-use-it-with-blackmagics-decklink-mini-recorder-cards.html<p>SOGÉÉCOM has been using Debian on all its machines for while now. This year, I was at Debconf16 in Cape Town, South Africa, for DebConf, the annual conference of the Debian project. I decided to help out with video streaming the conference and wanted to document the work we did …</p><p>SOGÉÉCOM has been using Debian on all its machines for while now. This year, I was at Debconf16 in Cape Town, South Africa, for DebConf, the annual conference of the Debian project. I decided to help out with video streaming the conference and wanted to document the work we did!</p>
<p>The goal of this blog entry is to document the installation process of voctomix on a Debian Jessie box, with Blackmagic Decklink Capture cards. <a href="https://github.com/voc/voctomix">voctomix</a> is a live video mixer written by CCC's videoteam. It's great and supports more recent video inputs than the software DebConf was using previously.</p>
<h1>Getting the Blackmagic cards to work</h1>
<p><strong>Disclaimer</strong>: The blackmagic cards drivers does not seem to work with kernels more recent than 3.16.</p>
<p>Sadly, we will be using the proprietary drivers from Blackmagic. You can get them <a href="https://www.blackmagicdesign.com/support/family/capture-and-playback">here</a>. The name of the actual driver is <em>Desktop Video</em>. When we made the build, we used the 10.6.8 version.</p>
<p>When you finished downloading it, untar the file:</p>
<div class="highlight"><pre><span></span><code>$<span class="w"> </span>tar<span class="w"> </span>-xvf<span class="w"> </span>Blackmagic_Desktop_Video_Linux_10.6.8.tar
</code></pre></div>
<p>The driver comes with a <code>.deb</code> ready. You can install it with <code>dpkg</code>:</p>
<div class="highlight"><pre><span></span><code>$<span class="w"> </span><span class="nb">cd</span><span class="w"> </span>Blackmagic_Desktop_Video_Linux_10.6.8/deb/amd64
$<span class="w"> </span>sudo<span class="w"> </span>dpkg<span class="w"> </span>-i<span class="w"> </span>desktopvideo_10.6.8a2_amd64.deb
</code></pre></div>
<p>You will get an error message about missing dependencies. To correct this, get <code>apt-get</code> to install what is missing:</p>
<div class="highlight"><pre><span></span><code>$<span class="w"> </span>sudo<span class="w"> </span>apt-get<span class="w"> </span>install<span class="w"> </span>-f
</code></pre></div>
<p>There are very good chances the software on the cards is not up to date. First, check their status:</p>
<div class="highlight"><pre><span></span><code>$<span class="w"> </span>sudo<span class="w"> </span>BlackmagicFirmwareUpdater<span class="w"> </span>status
</code></pre></div>
<p>If the output is not "OK", you can update them this way:</p>
<div class="highlight"><pre><span></span><code>$<span class="w"> </span>sudo<span class="w"> </span>BlackmagicFirmwareUpdater<span class="w"> </span>update<span class="w"> </span><span class="m">0</span>:
$<span class="w"> </span>sudo<span class="w"> </span>BlackmagicFirmwareUpdater<span class="w"> </span>update<span class="w"> </span><span class="m">1</span>:
</code></pre></div>
<p>You should now have working drivers! The path to the video cards are <code>/dev/blackmagic/io0</code> & <code>/dev/blackmagic/io1</code>.</p>
<h1>Installing voctomix</h1>
<p>There is a <code>voctomix</code> package on Debian Stretch an onwards, but not in Jessie. The problem is that you need more recent versions of <code>gstreamer</code> than what Jessie has.</p>
<p>To fix this, we will be using the Debian repository from the CCC VOC team to install the right versions of <code>voctomix</code> and <code>gstreamer</code> on Jessie.</p>
<p>First of all, add the following lines to your <code>/etc/apt/sources.list</code>:</p>
<div class="highlight"><pre><span></span><code><span class="k">deb</span><span class="w"> </span><span class="s">http://www.deb-multimedia.org</span><span class="w"> </span><span class="kp">jessie</span><span class="w"> </span><span class="kp">main</span><span class="w"> </span><span class="kp">non-free</span>
<span class="k">deb</span><span class="w"> </span><span class="s">http://c3voc.de/voctomix</span><span class="w"> </span><span class="kp">jessie</span><span class="w"> </span><span class="kp">non-free</span>
</code></pre></div>
<p>You'll then need install the GPG keys:</p>
<div class="highlight"><pre><span></span><code>$<span class="w"> </span>sudo<span class="w"> </span>apt-get<span class="w"> </span>update
$<span class="w"> </span>sudo<span class="w"> </span>apt-get<span class="w"> </span>install<span class="w"> </span>deb-multimedia-keyring<span class="w"> </span>curl
$<span class="w"> </span>sudo<span class="w"> </span>curl<span class="w"> </span>https://c3voc.de/voctomix/gpg-key.asc<span class="w"> </span><span class="p">|</span><span class="w"> </span>apt-key<span class="w"> </span>add<span class="w"> </span>-
$<span class="w"> </span>sudo<span class="w"> </span>apt-get<span class="w"> </span>update
$<span class="w"> </span>sudo<span class="w"> </span>apt-get<span class="w"> </span>install<span class="w"> </span>gstreamer1.0-plugins-bad<span class="w"> </span>gstreamer1.0-plugins-base<span class="w"> </span>gstreamer1.0-plugins-good<span class="w"> </span>gstreamer1.0-plugins-ugly<span class="w"> </span>gstreamer1.0-tools<span class="w"> </span>libgstreamer1.0-0<span class="w"> </span>python3<span class="w"> </span>python3-gi<span class="w"> </span>gir1.2-gstreamer-1.0<span class="w"> </span>gir1.2-gst-plugins-base-1.0<span class="w"> </span>python3-pyinotify<span class="w"> </span>gstreamer1.0-libav<span class="w"> </span>rlwrap<span class="w"> </span>fbset
</code></pre></div>
<p>To get the GUI running, you'll also need these:</p>
<div class="highlight"><pre><span></span><code>$<span class="w"> </span>sudo<span class="w"> </span>apt-get<span class="w"> </span>install<span class="w"> </span>gstreamer1.0-alsa<span class="w"> </span>python3-gi-cairo<span class="w"> </span>gir1.2-gtk-3.0
</code></pre></div>
<p>Once all this is installed, it is time to clone the <code>voctomix</code> github repository!</p>
<div class="highlight"><pre><span></span><code>$<span class="w"> </span>sudo<span class="w"> </span>apt-get<span class="w"> </span>install<span class="w"> </span>git
$<span class="w"> </span>git<span class="w"> </span>clone<span class="w"> </span>https://github.com/voc/voctomix.git
</code></pre></div>
<p>For our use, we used the latest <code>voctomix</code> release (0.3.1):</p>
<div class="highlight"><pre><span></span><code>$<span class="w"> </span><span class="nb">cd</span><span class="w"> </span>voctomix
$<span class="w"> </span>git<span class="w"> </span>checkout<span class="w"> </span>384a947
</code></pre></div>
<p>You should now have a working version of <code>voctocore</code> (the server) and <code>voctogui</code> (the GUI). Additionally, if you wish to call the executables without having to write the full path, you can symlink them to <code>/usr/local/bin/</code>:</p>
<div class="highlight"><pre><span></span><code>$<span class="w"> </span>sudo<span class="w"> </span>ln<span class="w"> </span>-s<span class="w"> </span>/home/videoteam/voctomix/voctocore/voctocore.py<span class="w"> </span>/usr/local/bin/voctocore
$<span class="w"> </span>sudo<span class="w"> </span>ln<span class="w"> </span>-s<span class="w"> </span>/home/videoteam/voctomix/voctogui/voctogui.py<span class="w"> </span>/usr/local/bin/voctogui
</code></pre></div>
<h1>Configuring voctomix</h1>
<p>Now that <code>voctomix</code> has been installed, we need to configure <code>voctocore</code> to work with our setup!</p>
<p>First of all, we will need to create the main configuration file:</p>
<div class="highlight"><pre><span></span><code><span class="err">$</span><span class="w"> </span><span class="n">sudo</span><span class="w"> </span><span class="n">mkdir</span><span class="w"> </span><span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">voctomix</span>
<span class="err">$</span><span class="w"> </span><span class="n">sudo</span><span class="w"> </span><span class="n">vim</span><span class="w"> </span><span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">voctomix</span><span class="o">/</span><span class="n">voctocore</span><span class="p">.</span><span class="n">ini</span>
<span class="o">[</span><span class="n">mix</span><span class="o">]</span>
<span class="n">videocaps</span><span class="o">=</span><span class="n">video</span><span class="o">/</span><span class="n">x</span><span class="o">-</span><span class="n">raw</span><span class="p">,</span><span class="nf">format</span><span class="o">=</span><span class="n">I420</span><span class="p">,</span><span class="n">width</span><span class="o">=</span><span class="mi">1280</span><span class="p">,</span><span class="n">height</span><span class="o">=</span><span class="mi">720</span><span class="p">,</span><span class="n">framerate</span><span class="o">=</span><span class="mi">25</span><span class="o">/</span><span class="mi">1</span><span class="p">,</span><span class="n">pixel</span><span class="o">-</span><span class="n">aspect</span><span class="o">-</span><span class="n">ratio</span><span class="o">=</span><span class="mi">1</span><span class="o">/</span><span class="mi">1</span>
<span class="n">audiocaps</span><span class="o">=</span><span class="n">audio</span><span class="o">/</span><span class="n">x</span><span class="o">-</span><span class="n">raw</span><span class="p">,</span><span class="nf">format</span><span class="o">=</span><span class="n">S16LE</span><span class="p">,</span><span class="n">channels</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span><span class="n">layout</span><span class="o">=</span><span class="n">interleaved</span><span class="p">,</span><span class="n">rate</span><span class="o">=</span><span class="mi">48000</span>
<span class="p">;</span><span class="w"> </span><span class="n">tcp</span><span class="o">-</span><span class="n">ports</span><span class="w"> </span><span class="n">will</span><span class="w"> </span><span class="n">be</span><span class="w"> </span><span class="mi">10000</span><span class="p">,</span><span class="mi">10001</span><span class="p">,</span><span class="mi">10002</span>
<span class="n">sources</span><span class="o">=</span><span class="n">cam1</span><span class="p">,</span><span class="n">cam2</span><span class="p">,</span><span class="n">grabber</span>
<span class="o">[</span><span class="n">side-by-side-equal</span><span class="o">]</span>
<span class="p">;</span><span class="w"> </span><span class="n">defaults</span><span class="w"> </span><span class="k">to</span><span class="w"> </span><span class="mi">1</span><span class="o">%</span><span class="w"> </span><span class="k">of</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="n">video</span><span class="w"> </span><span class="n">width</span>
<span class="p">;</span><span class="n">gutter</span><span class="o">=</span><span class="mi">12</span>
<span class="p">;</span><span class="n">ypos</span><span class="o">=</span><span class="mi">200</span>
<span class="o">[</span><span class="n">side-by-side-preview</span><span class="o">]</span>
<span class="p">;</span><span class="n">asize</span><span class="o">=</span><span class="mi">1024</span><span class="n">x576</span>
<span class="p">;</span><span class="n">apos</span><span class="o">=</span><span class="mi">12</span><span class="o">/</span><span class="mi">12</span>
<span class="p">;</span><span class="n">bsize</span><span class="o">=</span><span class="mi">320</span><span class="n">x180</span>
<span class="p">;</span><span class="n">bpos</span><span class="o">=</span><span class="mi">948</span><span class="o">/</span><span class="mi">528</span>
<span class="o">[</span><span class="n">picture-in-picture</span><span class="o">]</span>
<span class="p">;</span><span class="n">pipsize</span><span class="o">=</span><span class="mi">320</span><span class="n">x180</span>
<span class="p">;</span><span class="n">pippos</span><span class="o">=</span><span class="mi">948</span><span class="o">/</span><span class="mi">528</span>
<span class="o">[</span><span class="n">previews</span><span class="o">]</span>
<span class="p">;</span><span class="w"> </span><span class="n">disable</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">ui</span><span class="w"> </span><span class="o">&</span><span class="w"> </span><span class="n">server</span><span class="w"> </span><span class="n">run</span><span class="w"> </span><span class="k">on</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="n">same</span><span class="w"> </span><span class="n">computer</span><span class="w"> </span><span class="ow">and</span><span class="w"> </span><span class="n">can</span><span class="w"> </span><span class="n">exchange</span><span class="w"> </span><span class="n">uncompressed</span><span class="w"> </span><span class="n">video</span><span class="w"> </span><span class="n">frames</span>
<span class="n">enabled</span><span class="o">=</span><span class="k">false</span>
<span class="p">;</span><span class="w"> </span><span class="k">default</span><span class="w"> </span><span class="k">to</span><span class="w"> </span><span class="n">mix</span><span class="o">-</span><span class="n">videocaps</span><span class="p">,</span><span class="w"> </span><span class="k">only</span><span class="w"> </span><span class="n">applicable</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">enabled</span><span class="o">=</span><span class="k">true</span>
<span class="p">;</span><span class="w"> </span><span class="n">you</span><span class="w"> </span><span class="n">can</span><span class="w"> </span><span class="n">change</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="n">framerate</span><span class="w"> </span><span class="ow">and</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="n">width</span><span class="o">/</span><span class="n">height</span><span class="p">,</span><span class="w"> </span><span class="n">but</span><span class="w"> </span><span class="n">nothing</span><span class="w"> </span><span class="k">else</span>
<span class="n">videocaps</span><span class="o">=</span><span class="n">video</span><span class="o">/</span><span class="n">x</span><span class="o">-</span><span class="n">raw</span><span class="p">,</span><span class="n">width</span><span class="o">=</span><span class="mi">1024</span><span class="p">,</span><span class="n">height</span><span class="o">=</span><span class="mi">576</span><span class="p">,</span><span class="n">framerate</span><span class="o">=</span><span class="mi">25</span><span class="o">/</span><span class="mi">1</span>
<span class="o">[</span><span class="n">stream-blanker</span><span class="o">]</span>
<span class="n">enabled</span><span class="o">=</span><span class="k">true</span>
<span class="n">sources</span><span class="o">=</span><span class="n">loop</span><span class="p">,</span><span class="n">nostream</span>
</code></pre></div>
<p>As you can see from the first lines, this makes <code>voctocore</code> use 720p instead of the default 1080p. You would need quite a powerful setup (Intel i7) to run 1080p correctly.</p>
<h1>Parsing streams to voctocore</h1>
<p>The next step is to pass the blackmagic card output to <code>voctocore</code> and add a loop. You could do this 'manually' with <code>gstreamer</code> commands, but some nice people did a nice python script that simplifies everything.</p>
<p>First copy the repository:</p>
<div class="highlight"><pre><span></span><code>$<span class="w"> </span>git<span class="w"> </span>clone<span class="w"> </span>https://github.com/CarlFK/voctomix-outcasts
$<span class="w"> </span><span class="nb">cd</span><span class="w"> </span>voctomix-outcasts
$<span class="w"> </span>git<span class="w"> </span>checkout<span class="w"> </span>3c99503
</code></pre></div>
<p>Once that is done, you can call <code>ingest.py</code> with some parameters to pass streams to <code>voctocore</code> for you. You will need a place to put your script and record your files:</p>
<div class="highlight"><pre><span></span><code>$<span class="w"> </span><span class="nb">cd</span><span class="w"> </span>~
$<span class="w"> </span>mkdir<span class="w"> </span>debconf16
</code></pre></div>
<p>We wrote a script to run all the <code>ingest.py</code> calls and the others scripts needed for voctomix to work correctly. This is the script you should run to start voctomix.</p>
<div class="highlight"><pre><span></span><code>$<span class="w"> </span><span class="nb">cd</span><span class="w"> </span>debconf16
$<span class="w"> </span>vim<span class="w"> </span>debconf16/stream.sh
<span class="w"> </span><span class="c1">#!/bin/bash -ex</span>
<span class="w"> </span>xterm<span class="w"> </span>-T<span class="w"> </span>voctocore<span class="w"> </span>-e<span class="w"> </span>sh<span class="w"> </span>-c<span class="w"> </span><span class="s1">'while true; do voctocore; sleep 1; done'</span><span class="w"> </span><span class="p">&</span>
<span class="w"> </span>sleep<span class="w"> </span><span class="m">4</span><span class="w"> </span><span class="c1"># voctocore is needed for the rest. Giving it some time to start</span>
<span class="w"> </span>xterm<span class="w"> </span>-T<span class="w"> </span>voctogui<span class="w"> </span>-e<span class="w"> </span>sh<span class="w"> </span>-c<span class="w"> </span><span class="s1">'while true; do voctogui; sleep 1; done'</span><span class="w"> </span><span class="p">&</span>
<span class="w"> </span>xterm<span class="w"> </span>-T<span class="w"> </span>loop<span class="w"> </span>-e<span class="w"> </span>sh<span class="w"> </span>-c<span class="w"> </span><span class="s1">'while true; do /home/videoteam/voctomix-outcasts/ingest.py --video-source png --video-attribs "location=/home/videoteam/debconf16/loop_720p_png/loop_720p%03d.png start-index=1 stop-index=375" --port 17000; sleep 1; done'</span><span class="w"> </span><span class="p">&</span>
<span class="w"> </span>xterm<span class="w"> </span>-T<span class="w"> </span>cam1<span class="w"> </span>-e<span class="w"> </span>sh<span class="w"> </span>-c<span class="w"> </span><span class="s1">'while true; do /home/videoteam/voctomix-outcasts/ingest.py --port 10000 --video-source blackmagic --audio-source blackmagic --video-attribs "mode=17 connection=1 device-number=0"; sleep 1; done'</span><span class="w"> </span><span class="p">&</span>
<span class="w"> </span>xterm<span class="w"> </span>-T<span class="w"> </span>cam2<span class="w"> </span>-e<span class="w"> </span>sh<span class="w"> </span>-c<span class="w"> </span><span class="s1">'while true; do /home/videoteam/voctomix-outcasts/ingest.py --port 10001 --video-source blackmagic --video-attribs "mode=17 connection=1 device-number=1"; sleep 1; done'</span><span class="w"> </span><span class="p">&</span>
<span class="w"> </span>sleep<span class="w"> </span><span class="m">5</span><span class="w"> </span><span class="c1"># We don't want to start recording before everything is in place</span>
<span class="w"> </span>xterm<span class="w"> </span>-T<span class="w"> </span>record<span class="w"> </span>-e<span class="w"> </span>sh<span class="w"> </span>-c<span class="w"> </span><span class="s1">'while true; do /home/videoteam/voctomix-outcasts/record-timestamp.sh menzies-12; sleep 1; done'</span><span class="w"> </span><span class="p">&</span>
<span class="w"> </span>xterm<span class="w"> </span>-T<span class="w"> </span>cut-list<span class="w"> </span>-e<span class="w"> </span>sh<span class="w"> </span>-c<span class="w"> </span><span class="s1">'while true; do /home/videoteam/voctomix/example-scripts/control-server/generate-cut-list.py | tee --append cut-list.log; sleep 1; done'</span><span class="w"> </span><span class="p">&</span>
</code></pre></div>
<h2>Making the loop work</h2>
<p>The loop is created from a bunch of png files. In our case, they are in <code>~/debconf16/loop_720p_png</code>. The png files are named according to a pattern: <code>loop_720p_<number>.png</code>. This means that <code>loop_720p_001.png</code> runs before <code>loop_720p_002.png</code>, and so on.</p>
<p>In <code>stream.sh</code> on the line creating the loop, you also have to specify the number of the first and the last file in the folder, after the directory and the file naming scheme. In our case, it is <code>1</code> and <code>375</code>.</p>
<h1>Congrats!</h1>
<p>Well, this is it! You should now have a fully functional voctomix instance! Now you have to grab that stream and do whatever you need to do with it.</p>
<p>The mixed stream from <code>voctomix</code> can be displayed with this command:</p>
<div class="highlight"><pre><span></span><code>$<span class="w"> </span>nc<span class="w"> </span><the_ip_address_voctocore><span class="w"> </span><span class="m">15000</span><span class="w"> </span><span class="p">|</span><span class="w"> </span>mplayer<span class="w"> </span>-
</code></pre></div>