Streaming Archery the Homebrew Way

The first streaming set up for BUTTS Championships 2017. Not seen: the miles of duct tape, the longest Ethernet cable ever seen, and lots of coffee.

Last year the archery club at the University of Warwick (UWAC) hosted the championships for our regional archery league — the Birmingham University Toucan and Toxophily Society Challenge League (or BUTTS league for short). With the opportunity to put our own spin on the championships as host club, myself and another club member Alex Logan put together a streaming set up that worked. It worked well enough that World Archery (the world governing body) wrote an article about it. We put the kit away saying to ourselves we’d love to do it again, but didn’t think we’d have the chance for a while.

In mid-February this year, the archery club at the University of Birmingham approached me to live stream the British University Team Championships (BUTC) to which I (and Alex) excitedly agreed. We found a few things we wanted to do differently after the first attempt, so after accepting the challenge we started to look into a few upgrades we could make from the first system.

The Cameras

As part of the first streaming set up we had 3 cameras: 2 Logitech webcams and a Canon 70D with telephoto zoom. The two webcams connected directly to the PC using USB and the 70D was connected using an Elgato HD60 capture card (using the HDMI out from the camera). It worked really well as a whole unit, but we wanted to upgrade the cameras themselves. Fortunately both me and Alex are photographers, so Alex put forward his Canon 6D and lens(I also own a 6D but was photographing on the day) to take video of the target(s). The Computing Society at Warwick (UWCS) had been investing in developing a stream for its events over the past year so it purchased a few Logitech C920 webcams that we then used on tripods for the on-the-line cameras.

The Infrastructure

Alex and I both wanted to improve not only the video quality but we wanted to be able to move the cameras around as well to help improve the viewing experience. In the previous set up we just plugged the cameras in using USB and some USB extension leads but that had its limitations. The solution that was settled upon was to attach each webcam to a Raspberry Pi to make it an IP Camera on an internal network to the streaming desk. This new method allowed us to use many more cameras in more interesting positions for the stream itself, such as a wide-angle camera for the entire venue.

The Software

The first time we ran the live stream Alex put it together using a trial of vMix, a streaming suite aimed at professionals. Sadly the cost of vMix for the features we needed was prohibitive, so another solution was needed. OBS Studio has gained a lot of new features recently that help bring it to the same level vMix has in terms of production utility. Where it falls down can also be augmented with plug ins and scripts. Since BUTC is so different to normal target archery, I ended up writing a script for OBS to handle the on-screen graphics (only displaying what’s necessary) and score input in an easy manner.

The venue for the day — you can see the streaming desk in the bottom centre of the image. Image courtesy of Clickers Archery.

On The Day

When it came to streaming on the day I was calmly confident everything would work — Alex and I had tested all of the hardware throughout the week and I had tested the overlay graphics during development. When all set up everything went well until Alex noticed that switching scenes bugged out our IP camera sources. OBS has a smart optimisation that will stop a media source stream if it’s not visible in the current scene. This doesn’t work with Motion JPEG (the format I chose to use for the cameras since it gave a significant quality improvement over H264). When it came to a fix there was little time to implement one, but copying all sources into all scenes and just having the actual camera source for the scene on top of them in the source order. Once this small issue was resolved we broadcast the stream using Facebook Live on the University of Birmingham Archery Club’s page (where the videos are available to watch!).

The bronze medal match was an all-Warwick affair.

Once shooting was underway the stream went along without much issue on the end of the equipment or software. Unfortunately we had to deal with an unreliable wireless connection for the internet since we hadn’t been given a patched-through Ethernet port. At one point we did lose all power to the streaming desk for some unknown reason, but we quickly recovered. Any problems fortunately happened between matches so they weren’t noticed anyway. Overall the stream was a resounding success, peaking at around 220 viewers during the finals from people around the world — including some members of the ArcheryGB national squad who were on a training camp in Turkey! But as the day went on I started to think about what I’d do differently next time.

Firstly, I’d like to improve the on-screen graphics with smaller details like transition animations between each match end. Similarly I’d also like to add ‘stringer’ transitions — bespoke transition animations rather than your usual fade/cut. Hardware wise I’d like to add more cameras (some under the targets and for other angles of the archers). I’d also like to use a different system for on-screen graphics instead of OBS’s Python scripting language. The team behind Games Done Quick released NodeCG exactly for this sort of thing, though time constraints on this project meant I didn’t have time to learn the NodeJS and component-based HTML stack it uses.

Finally I’d like to offer my gratitude to Alex for running the stream on the day — I wouldn’t have been able to photograph and stream at the same time otherwise. I’d like to thank both the University of Birmingham Archery Club for presenting us the opportunity to run the stream once more, as well as Francis Berti for being the linchpin in getting all of the equipment and people involved on site to set up and run the stream. Until next time!