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:

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 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:

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:

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:

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: