devroom video recording at FOSDEM 2013

The problem statement

There have been some terrific presentations in the devrooms at FOSDEM every year that I have attended, and sadly not everybody is even able to get in the room (or be in three places at once to see all the presentations they want)

The solution

The solution, of course, is video

The FOSDEM video team do a great job, but they only have the resources to cover main tracks and key note speakers.

Therefore, devroom managers and enthusiastic participants have improvised various solutions over the years, and here I will try to share my own experiences.

Background

As I'm not a member of the video team, please assume I have no formal training or experience in video production. If you are in a similar position, then you may be able to relate to some of my own observations and find them useful.

Plan A: digital SLR

My original plan was to bring a Nikon DSLR with video capability and mount it on a tripod. There were three problems with this plan:

  • No matter how big the memory card, it can only record up to 29 minutes in one continuous recording. I'd also heard rumors that the 4GB FAT maximum file size limit would kick in before 29 minutes anyway if recording in full HD.
  • Sending live video output via USB for recording onto a laptop is not possible with this particular camera (Nikon D800). There is, however, a HDMI output, which can't be connected directly to most laptops without some kind of convertor.
  • Even with such a converter, the live video feed, uncompressed, could require 100GB/hour and fast storage (e.g. SSD) or a high-performance CPU to do real-time compression.
  • The camera batteries would not last for 8 hours recording, it costs about EUR 200.00 to buy an external power adapter - and even if I wanted to, there was no easy way to order this adapter at the last minute

Plan B: Logitech HD webcam

I grabbed the tripod for the Nikon camera, and a Logitech HD webcam, model B910. The webcam also has built in stereo microphones.

The Logitech B910 is just an OEM packaged version of the Logitech C920. Logitech webcams give quality in proportion to price, and there is a big difference between the quality from this webcam and the cheapest Logitech webcam.

Some helpful advice

Shortly after arriving, I was fortunate to bump into fellow DD and experienced video hacker Holger Levson who briefly told me one thing: try and get good audio

Trial run

We did a trial run on Saturday recording Peter Saint-Andre's XMPP 101 session. There are plenty of great recordings of Peter online, so not too much at stake if I got this one wrong.

Due to the low lighting, and the need to capture sound using the webcam's microphones, the webcam was placed in the front row.

Laptop / software / operating system

My laptop runs Debian 6.0 (squeeze) and has a stock version of the UVC utilities, including guvcview v1.4.1

Although it appears like a fairly simple tool for looking at a preview picture from the webcam, guvcview is much more than that. It has many controls for capture settings (e.g. frame rate, zoom) and also does live recording to file.

My kernel is 2.6.39-bpo.2-amd64 - this is important, because the more high-end webcams sometimes cause trouble on older kernels and UVC software.

Uh oh

About 5 minutes into the recording, Holger's words came back to me: audio. It is at this moment that my complete lack of experience with video revealed itself to me: you don't know what you don't know

While I had been watching the animated St Peter moving about in a little window and my free disk space gradually disappearing, I had no idea whether I was capturing the sound or not.

Amongst other things:

  • I had never checked if guvcview does support audio recording
  • As well as the webcam microphone, the laptop has a built-in microphone. Both are independent of the webcam and I had no idea if guvcview would somehow default to the right one. The webcam microphones, facing the stage, would certainly get a better recording than a laptop built-in microphone.
  • Often the sound settings on a PC will default to muting the microphone inputs until somebody manually opens the mixer and enables them.

I had a look at guvcview and found that there is in fact an audio tab in the window. Looking at that tab, the option to record sound appeared to be ticked.

I then opened the mixer and noticed that the input level meter was moving about. This also appeared positive, although it may have been saturating a little, so I adjusted the gain down a little.

Finally, I decided to try playing back the AVI file to myself, while still recording, so see if it contained audio. I was conscious of the fact that this might be a distraction, particularly for the speaker and those sitting immediately behind: but I just had to know.

Realisation

It is this dilemma that brought me to the realisation that I should have brought a headset like a DJ so I could jump back and forth between the live sources and the recording and evaluate the exact quality of the audio going through the system..

The good news is, I played a few seconds of the AVI file with mplayer and I could hear the sound was in there.

Prime time

Sunday morning I arrived at the telephony devroom. This year, we had a bigger room, not the same as the XMPP devroom from the previous year - and not the room I had experimented in the day before.

One interesting change was that the speaker was now on an elevated stage, which is quite wide, speaker on the left with his laptop at the podium, and the projector screen (with slides/demos) on the right, and a big gap in the middle.

As a bonus, we had an old fashioned slide projector in the middle of the stage, and whenever the speaker stood in that region of the stage, his face was completely obscured in the video. After the first speaker, we removed the top section of the slide projector to avoid further problems throughout the day.

Another challenge was that the speaker would move from the podium/laptop area to the display, and sometimes stand in the middle of the stage. With the webcam placed in the front row, he would often move out of the frame. I resorted to manually panning the webcam left and right when necessary.

Had we moved the webcam back a few rows, new problems would have emerged:

  • No easy way to zoom in on the speaker, so we would have the whole stage and projector screen, but the speaker would look quite small
  • Lighting would have been worse

so the webcam stayed in the front row throughout the day

With the DSLR, zooming would have been easy but would have required a dedicated camera operator throughout the day.

The results

Here is a link to play the video. This is Luca Pradovera talking about the Adhearsion project:

Video tag not supported. Download the video here.

Handing over to Matt

As we were running late with preparations for the main track presentation in the afternoon, I couldn't stay in the devroom for the whole morning, so I handed over control of the webcam to Matt Jordan.

He had Fedora on his laptop and had to manually download and compile guvcview. He tried v1.5. One improvement we noticed, compared to my v1.4, is that audio level bars appeared in the main video window to give immediate visual confirmation that we were capturing audio.

Transcoding

Now Matt and I have a collection of large AVI files on our hard disks. These are not ideal for people to download or stream. Also, the sound is raw, sometimes too soft, and the level varies as the speakers move closer or further from the location of the webcam.

This is where transcoding comes in:

  • Converting the video into a compressed format. This couldn't have been done in real-time (while recording) without quite a powerful computer, but we can now do this processing in a batch run and upload when finished.
  • Audio normalisation: running the audio through a filter that tries to amplify or soften the sound to give a constant quality, so the viewer won't have to manually turn the volume up and down as they listen

We've been getting some great advice and scripts from the more experienced video team regulars and will update this blog when the results are available.

Final observations

Some things we could have done better:

  • Power source for the DSLR
  • Roster with a camera operator for the whole day
  • HDMI adapter for the DSLR output to feed a USB3 port on a laptop
  • Large (500GB or more) external SSD (or array?) with eSATA or USB3 connectivity to store raw video
  • Giving all of the above a test drive before FOSDEM
  • Tapping the audio feed from the podium microphone and capturing it to an audio file
  • Headset for audio quality checks