How we stream events at Vincit
Vincit was founded in Tampere in 2007 but it has since expanded to Helsinki, Turku and all the way to California. Every month we have an internal meeting where we go through what has happened during the previous month. It is important to share this information with all the people in the company, so when we first expanded to Helsinki in 2014 we needed to start sharing these meetings online. At first this meant just a random laptop and a webcam pointed at the presenter. The stream was shared to others using Google Hangouts. Very soon it became clear that this approach did not work at all. The quality of video and especially audio was bad. Scaling was also an issue since at the time Google Hangouts had a limit of 15 participants.
This is when #audiovisuals Slack channel was created. A handful of people joined the channel to discuss how streaming could be done better. We decided to solve the problem one step at a time and not to go overboard from the beginning by buying all sorts of expensive equipment and software. This approach has been proven to work very well and we are constantly making small improvements.
The first step was to fix the audio quality. The microphone in a webcam is typically intended to work well in a quiet meeting room with a handful of people all relatively close to the microphone. When you try to use the microphone in an auditorium full of people and at a distance from the presenter, it just doesn’t work. We bought two wireless microphones: one head microphone and one handheld microphone. The microphone receivers are connected to an audio mixer that has a USB connection that acts as a standard USB audio source when connected to a computer. With this setup we always have clear audio from the presenter. Questions coming from the audience are still a challenge because the questions are not audible in the stream. We have instructed the presenter to repeat the question but the presenter often forgets to do this. This is partially solved by waving a big sign with the words “repeat the question” to the presenter.
To solve the participant limit of Google Hangouts, we started to use Google Hangouts On Air for streaming. This solved the issue of 15 participant limit but it did not allow us to save our streams for later use and the video quality didn’t improve. We upgraded our camera to a remote controllable PTZ webcam. This was used to record either the presenter or the video screen that was used for the presentations. Although this worked a little bit better than the original fixed position webcam, it was still usually impossible to see the graphs and text in the presentations.
The next big step was to improve the video quality. We bought an HDMI splitter and an HDMI to USB converter to capture the presentation straight from the source. Now we had two video sources and two audio sources that we needed to combine somehow. After some research we learned about free, open source software called OBS Studio that allows us to mix multiple audio and video sources into an RTMP stream and send it to a streaming service. With OBS Studio we can compose different scenes using different video and audio sources, static text, and image content. We can also change between the scenes seamlessly, so we configure many scenes and switch between them, depending on the situation.
Our streaming service of choice is Youtube Live. Our company uses G Suite, so we can configure internal events that only Vincit users can access. Public events can be set as public or unlisted. We set-up events in Youtube Live dashboard beforehand and share the Youtube link in appropriate channels. Spectators can see the event as it happens live or they can watch the video afterwards. Youtube works in practically every platform, so seeing the content is very easy and convenient. We stream in 1080p, so the video quality of the stream is really good.
The biggest remaining challenge is to handle streaming in the cases where presentations are held in multiple locations within the same event. The presentations in our monthly meetings mostly originate in Tampere, but sometimes there is a need to share something from other sites too. This is where things get a bit tricky. We set up a Google Hangouts call between the other site and a presentation PC in Tampere. The display of the presentation PC has a small window for the Hangouts video and at the same time the presentation slides on a bigger window. The presentation is shared with the other site using screen sharing in Hangouts so the presenter at the other site knows which presentation slide is visible. For the stream we use a composition of the small video window and the bigger presentation screen. This has worked fairly well but it is far too complicated and breaks easily.
The need to stream different events has been increasing steadily. At first we only streamed our monthly internal meetings but now there are all sorts of tech nights, trainings and other events that are good to share either publicly or privately. The people who provide this streaming service are doing it in addition to other duties. That is why we have tried to make setting-up the equipment as fast and effortless as possible. We set up a permanent streaming site at our Plaza — the place where most of the events happen. To start streaming at the Plaza, we only need to set up our camera and streaming laptop, which takes about 10–15 minutes. Usually one person is enough to handle streaming in the Plaza.
For our monthly meetings we have to move and set up all of the necessary streaming equipment at the auditorium at our company’s premises, which takes longer. We usually have three people to take care of the streaming in the auditorium. One handles the streaming PC and controls the PTZ camera, one mixes the audio, and one makes sure that the presenter’s equipment is in working order and handles all the surprises that always happen.
All of this has worked surprisingly well in practice, considering that we have so many possible points of failure. The setup consists of many consumer grade gadgets and cables. Most of the issues have happened during the setup and testing phase. Once everything has been set up, things have usually worked during the presentation. There have been some failures and they usually involve faulty cables or bad connections. We have learned that HDMI cables tend to break over time and USB gadgets are sometimes unreliable. We have mitigated these issues by having brand-new spare HDMI cables at arms length and paying close attention to how and where we plug in our USB devices.
To keep track of what needs to be streamed, we use our #audiovisuals Slack channel and a Trello board. When someone wants to stream an event, he/she adds a card to Trello with the event details. The card is added to the pool of events to be streamed. If and when someone is available to set up the streaming of the event, the card is updated. This has proven to be an efficient way to share the workload and the whole process is very lightweight and transparent.
The system is not perfect yet and there are still many things to improve. The list of things to improve is long and they are tracked in Trello. The process could be better, for example, we don’t have a centralized place to see past presentations, with links to the streams. While we are very satisfied with the current hardware, there are small things to be improved in this department also. We could improve video quality by adding some flood lighting. We could also play around with multiple cameras. We really need to organize our hardware better and get a dedicated tray to move all the equipment around. All of these things will be addressed eventually, but we will never be ready and that is part of the fun.
Here is a link to an example event. Below is an overview of the equipment we have acquired for streaming purposes:
- Dedicated recent windows 10 laptop with OBS Studio and PTZ camera control software(composing 1080p needs a fairly beefy machine)
- HDMI to USB converter
- 1080p PTZ camera with 12X optical zoom, USB 3.0 output and serial control
- Camera stand
- Long USB 3.0 extension cable and serial control cable for situations where camera needs to be far away from streaming laptop
- USB joystick to control camera
- Adapters from everything to HDMI
- USB 3.0 HUB
- Various cables and adapters to deal with surprising situations