Over the years I’ve often dug into the behind the scenes technical aspects of the biggest cyclist races in the world. From rider live tracking to the facilities that TV broadcasters use to get that race coverage to you. And today, I’m going to do the exact same thing for the Virtual Tour de France, which wraps up this weekend with two final stages – one up Mont Ventoux and then the finale in Paris.
And whether or not you find watching virtual cycling entertaining, I suspect you’ll still find this technology aspect interesting. What started off as a quick piece on Zwift’s new RaceView quickly unraveled into a deep dive into the technology they use to work with real TV broadcasters to send out to millions of TV’s around the world.
As you’ll quickly find out, this isn’t your grandfather’s Zwift app. The tools the company has developed over the last year or so to support broadcasting of races beamed to millions of TV’s make it massively different than their first TV broadcast in January 2019. And even substantially different than live races of just a few months ago. Within this I’ll dive into the special version of Zwift that they use to set upwards of 140 cameras upon a race route, plus the hardware that it all runs on. Plus, I look behind the scenes at the three-country real-time broadcast tango that occurs on race day to consolidate that feed to more than 130 countries around the world.
And the last half of the post I dig into the new RaceView site, where you can watch/track the riders in real-time (even faster than the live streams in fact). So, let’s get rolling.
The Virtual TdF Broadcast:
The quantity of video streams that feed into the recent virtual TdF stages is mind-boggling. There’s upwards of 90 webcam feeds coming in from riders, some 140 virtual cameras placed within Zwift, and 8 concurrent camera angles rendering at any one time. Oh, and that’s before we even account for three different broadcast teams working across three countries concurrently for any given live broadcast. And that also ignores the teams of people that help riders prepare their setups and validate connections.
To begin, everything first starts from Zwift’s main broadcast facility in Edinburgh (UK). It’s here that Zwift is running 8 concurrent Intel Hades Canyon NUC’s with Radeon RX Vega M GPU’s, each running a special version of Zwift configured in Ultra mode with their frame rates locked at 50 frames per second.
At this point, some of you are like…but why NUC’s? Well – the answer to that is more practical in nature. In a pre-COVID era, they’d actually pack up the entire broadcast kit and go to events physically. So in that case having the smaller NUC form factor made much more sense.
In any event, each of these 8 machines are what Zwift refers to as the ‘Gameplay’ side. Meaning, they’re rendering in real-time the game of Zwift, mostly just like your Zwift at home. Whereas aspects like video from riders or commentators comes in later. These 8 machines are split up into four for the women’s race, and four for the men’s race. Keep in mind that while these races happen back to back for us viewers, for Zwift, they’re basically concurrent from a prep standpoint. Meaning, they’ll have the women racing while the men are getting into the game and getting set in the corral. As such, they’re treated as separate entities.
Each of these Intel NUC machines is then connected via HDMI which is in turn converted to SDI, and then into a Blackmagic ATEM 4 Broadcast Studio 4K switcher. Later, they’ll use a Blackmagic ATEM Television Studio Pro 4K Live Production Mixer to control the inputs, which is where they determine the semi-final Gameplay output feed. But that’s putting the cart way in front of the horse. See, while I just showed you where the cable ran, that skips the best part: The special sauce software.
See, Zwift has a special Zwift Broadcast version of the game that includes the normal main Zwift window, but then has a secondary helper window that controls the camera angles. For example, on your home version of Zwift you can press the 1 through 9 (plus 0) number keys to change views. But in this version they’ve got the ability to trigger predefined camera paths, predefined camera shots, and variable camera shots. And again, all this is running eight times, once on each Intel NUC.
Within the Zwift Broadcast Helper window, there are basically four core shot types that Zwift has:
A) Static Shots: These are just like in a real cycling race where a camera is mounted to a specific place and the riders ride past it
B) Follow Shots: These shots follow not just a given rider, but also can be called for a given variable place (like yellow jersey, polka dot, leader, etc…)
C) Zipline Shots: These are when the camera is on a zipline between two points, and follows the action in front of it (typically tied to a given rider/placement)
D) Spline Shots: These are the most complicated shots, and are basically Zipline shots with multiple camera moves inside them. Basically, swanky drone shots.
Here, the below is an example of a special spline shot that you’ll see below in this weekend’s finale in Paris. What you want to take note of specifically is the yellow numbers points. That’s showing the exact spots the camera will pass through. This is where Zwift can pre-program the camera for when the riders come through.
And here’s an early render of what that shots will look like on Sunday:
On any given route in the Tour de France, Zwift is programming upwards of 140 camera positions in ahead of time These are ordered just like the actual race route itself, so they iterate through them as they go through the route. In the below screenshot you can see in the lower left the numbering next to each camera. You’ll also see numerous options for whether to overlay certain status. Also, normally the list of riders is shown in the middle columns, though isn’t on this specific screenshot.
Each of the four Intel NUC machines (one set for men’s and women’s) has a dedicated camera feed that it’s responsible for. This mirrors what you see in real-life, by the way. For Zwift, the four virtual cameras are roughly set up as:
NUC/Camera 1: Lead moto shot, typically looking back towards the peloton, but virtually tied to the current race leader
NUC/Camera 2: Sitting in peloton camera, and is typically virtually tied to a given race jersey wearer
NUC/Camera 3: Rider focused camera, such as during an interview, or discussing a given rider
NUC/Camera 4: Specialty camera, this is used for those zipline/spline/static special camera shots
So with those four feeds, Zwift has a small team that works together in the Edinburgh studio to prep and then change between the different angles. But each person has a specific role. First there’s a game-play operator. That person is controlling each of those NUC machines and setting up the shot that’s coming next. In other words, they’re a virtual cameraman. Oh, except controlling four concurrent cameras with more than 100 cameras to choose from.
But, that’s actually not the person who decides what you’ll see. Instead, there’s another person in that room, who is calling out which shots he needs next. Effectively a director, though in this production as you’ll see there’s also another director. But consider this the director of gameplay. That person then takes the shot, and changes to that shot with the ATEM switcher. You can see below in this photo Zwift sent over, the gameplay operator with the four camera angles, and four Zwift helper screens in front of them.
Oh – did I mention all of this is also recorded on a replay machine too? That takes all four of those feeds and records it for instant replay purposes.
Ok, so at this point we’ve finally got ourselves a final gameplay feed of Zwiftness, ready to go somewhere. But Zwift doesn’t actually broadcast it themselves for the Virtual Tour de France. Instead, they take that feed (which, is actually four feeds, including the replay feed) and transmits it to Paris, France.
That’s where Euromedia takes control of the production that you ultimately see. See, at this point there are no titles (text) on the screen. It’s just underlying gameplay. Notice in the above video stream screenshots you don’t see any text. Instead, that all gets integrated in Paris.
It’s there that three different entities converge:
A) Zwift’s Gameplay feed of the action
B) All the 90 webcams from riders
C) All the titles/text overlays, from a Belgium company called Boost
In Paris, another production team takes those three things and mixes them together. In fact, looking at the below shot pretty much shows this super well. The webcam from Tanja Erath is coming in via Zoom (more on that in a second), the Zwift screens are coming via the Gameplay feed from Zwift, and every bit of titles and text you see are coming from Boost in Belgium. All of it mixed in real-time in Paris at Euromedia.
But wait a second, how do they get the rider video feeds? Well, turns out it’s one giant Zoom party. Seriously, it’s every rider (save the few who couldn’t figure out their webcams) Here’s a shot of one (of three) pages of the women’s race, note at the bottom the 70 riders as part of this Zoom call.
And here’s a shot of all three pages of the men:
This giant Zoom room of sweaty parties is how Euromedia cuts to each rider. As part of the conference they’ll specifically re-label each rider to be their rider number and then their name. Then, when a given rider is needed a person in Paris will select that rider and drag them to a separate screen which is pulled into the production just like any other video source.
Zwift says the vast majority of the riders have webcams, and for good reason: It’s good PR. We’ve seen everything from fairly basic rider camera setups, to fairly elaborate ones. Most take some stab at being on-point in terms of team/sponsor branding.
The Tour has some interviews already done ahead of time, so these will be woven into the story of the race – just like they do for real Tour de France races.
But wait, what about those titles? All that text stuff? Well, that comes from Boost, a Belgium company specializing in it. But there’s more than meets the eye there. See, on the below left image you’ve got race time, distance remaining, kilometers raced, plus some bits around the stage. But there’s also ones like below at right, showing wattage, cadence, heart rate, and speed. Plus the rider information.
See, all that is created using an internal Broadcaster API that Boost has access to. In fact, there are three core API’s that Zwift has:
A) Internal API: This has basically access to everything data-wise, but isn’t restricted because it’s fully internal to Zwift
B) Broadcaster API: This is what Boost and NTT use, and allows them access to details like rider power, cadence, heart rate, plus event metrics. In this case, riders that participate in the event have given consent for this information to be displayed via those agreements.
C) 3rd Party API: This is for ZwiftGPS, ZwiftPower, and a few others, where users have to opt-in to have their information shown.
It’s from this API that Boost gets all the information they need in real-time from the game, allowing it to match up with the near-real-time gameplay feed from the Zwift gameplay NUC’s. And, it’s this same API that NTT has access to, to generate data for the mid-race metrics, like below. These titles/graphics are still rendered by Boost, and then consolidated into data that Euromedia in Paris can leverage.
So, finally, the director in Paris takes all of this information in, and overlays the graphics for each shot (all in real-time), and then creates a final broadcast stream. At that point the stream is available to all of ASO’s broadcast partners for the event, since ASO runs the Tour de France. So for example Eurosport, or NBC, or whomever. They’ll add their own commentary in their own local languages. And in fact, the stream you might watch on YouTube on Zwift’s own channel is effectively just another broadcast partner.
Note that this is slightly different than a normal Tour de France wherein the larger broadcast entities (such as NBC or Eurosport) can also see all the live camera feeds and make their own production choices. And they also make their own title packages, etc… But for this year for Zwift and for this event, they’re handling it as a complete package.
And thus you see it a short bit later, in ideally decent quality. The quality is the one aspect that Zwift is still struggling with in some cases. It seems like what broadcast partners see is pretty sharp, however in some cases the stream quality we see on YouTube is much more muddled, as if the bitrate has been turned way down. So while the underlying quality of the render is present on Zwift’s YouTube stream, the end-state artifacting needs some work. After all, if GPLAMA can broadcast a crispy HD stream live on a single PC of the same game, then certainly Zwift can achieve that with much more gear and broadcast facilities.
And Zwift says they’re working on it, and specifically trying to see if it’s the additional hops taken after leaving the Paris production facility back to Zwift’s own facilities that are causing it.
Still – that’s a relatively minor thing to sort out in the grand scheme of things. What’s more notable I think today is just how far Zwift has come since that first TV broadcast last year. Sure, it’s still the same Zwift – but the broadcast work around it makes the act of watching virtual cycling so much more viable than it used to be. And if we look ahead to Zwift’s oft-stated goal of having Zwift in the Olympics in 2028, then that’s another 8 years of potential improvements to not just the broadcast, but also the way events are raced.
RaceView Live Tracker:
If you’ve ever watched the real Tour de France (because, of course you have), you’ve probably seen stats and live tracking of the riders. Ironically, that in and of itself has a long and storied history of technological prowess depending on who was in charge at the UCI at the time. But we’ll set that aside for the moment and focus just on the Zwift variant.
Two weeks ago, Zwift quietly released a new publicly accessible race tracking site called RaceView, which allows you to see the exact positions of riders in Zwift, all without ever logging into Zwift (or even watching the broadcast). I had first noticed the site in a tweet from Hannah Walker, and then a few days later saw a quick overview from Zwift Insider.
But as always, I was looking for more details – so I hit up Zwift and got a bit of insight on the motivation behind it, the target audience, and where they saw it going. However, if you haven’t seen it – then simply bookmark Zwift.com/Raceview ahead of this weekend’s Virtual Tour de France actual. It’ll be live for both the pro men’s and women’s races. Once loaded up, this is what you’ll see:
Along the top is the current stage information, including laps, portions of course details (such as lead-in information), as well as total distance and elevation gain. Next, you’ll see a course elevation profile, and below that a map of the Zwift world with the route. There’s also sprint/KOM/finish markers. And finally, along the right side you’ll see the team or riders listed, depending on the exact view you’re in and when you join in. Before the start of the race you’ll see the teams, but after the race begins you’ll see individual riders and their current race position:
If you click on a given rider on the right, it’ll zoom in to their position on the map. Each dot on the map represents a given rider, though at present you can’t just click on a dot to see who has fallen off the back. Zwift says that’s something that’ll probably come.
When you click on a rider, it’ll show their Zwift profile – and you can see some of the same general information you might see in the Zwift Companion App, including their Zwift level and recent activities.
Back on the dashboard when you toggle into team mode you can see all members of the team racing, and their dots turn orange on the map. You’ll also see their speed and placement:
There’s also a drop-down that lists all riders alphabetically too, in case you’re trying to find a specific rider and can’t remember their team-name.
So – who was this designed for? Well, surprisingly not the commentators, as I presumed it was. Instead, it was actually designed for fans – or basically, you and I. The idea being you could have a tab/device opened while watching the race, to try and keep track of where people are. And in theory, that kinda works:
It’s viable for seeing the general gist of things, or if someone has fallen way off the back. But it’s also hard to match up with the race. Due to the latency of watching the stream, what you see in RaceView is actually quite a bit ahead of the stream. You can see that below, where RaceView shows this group already in town, while online via YouTube they’re off in flower fields somewhere.
If you look at the race times, you’ll see there’s a gap of nearly 80 seconds, which…is crazy!
Zwift says this is something they’re looking into the best way to address this. It’s also notable for commentating folks, where I originally saw the platform being used.
The biggest gaps I saw though were lack of other metrics. For example, in the livestream we’ll see power, heart rate, and cadence. But none of those are shown in RaceView today. Zwift says they’re considering adding those, plus metrics like current grade of a given rider.
After all, those metrics could be just as valuable to a given team’s director as the riders. To be able to see that a given rider is suffering up an 8% grade section as the reason they’re going slower is helpful, especially at a simple dashboard glance.
At present, the RaceView site is really only being used for major headliner events, and hasn’t been used for any other events in between the Virtual Tour de France pro events. Though, it might not always be that way. Zwift says they’re working to finalize some other improvements and features in RaceView before they figure out to what extent it could be scaled up and used in other events.
Still, even in its infancy, it’s a handy little site if you’re trying to follow the action.
With that – thanks for reading, and hope you enjoyed geeking out a bit on all the technical details behind everything. Have a good weekend ahead, and the last two sets of races start at roughly 3PM Central European Time (9AM US Eastern Time) on both Saturday and Sunday.