FRC Live Replay: Match videos, automatically recorded and uploaded in minutes

I’m excited to unveil FRC Live Replay, a system which watches the available livestreams for an event, automatically detects and records matches, and uploads the resulting videos within minutes of the end of each match. After test runs at Houston and the first day of St. Louis, FRC Live Replay will be providing coverage for all 6 divisions and Einstein for the remainder of the Championship event.

Links for each match video are posted to the @FRC_replay](https://twitter.com/FRC_replay) Twitter account along with the date, event code, and match identifier, using #hashtags for easy filtering. For scraping purposes, the tweet format is:

[YYYY-MM-DD] #EVENTID #MATCHTYPE Match/Tiebreaker MATCH_NUMBER VIDEO_LINK

Valid MATCHTYPEs are Qualification, Semifinal, Final, and Playoff (for the round-robin Einstein matches).

Videos are uploaded to Streamable.com, which can take around 5-10 minutes to process them after posting, depending on load. Multiple videos may be posted for some matches as the system errs on the side of recording non-match content vs. missing an actual match. Streamable also has a 10 minute length limit, so videos will be split at the 8 minute mark give or take some slop.

This is still sort of a “beta” phase, so there could be some issues here and there over the next couple of days. Please let me know here or on Twitter (the bot’s replies and DMs are monitored) if you find anything.

1 Like

This is awesome and I can’t wait to see this in action. Thanks for doing this!

What stream services does this work with? Is there a way to download match videos from streamable?

This looks awesome, thank you for working on this.

Right click the video to download.

I’ll let Michael answer any technical questions.

Amazing! I just caught up on some teams’ matches that played while I was asleep.

SWEEEEET! The next step is to have it detect random camera jumps and automatically send an email to the field coordinators to have the camera person stop shifting views every 2 seconds.

Seriously, though, thank you for making this available.

this is really cool can not wait to check it out

In theory it can support recording matches from Twitch, YouTube Live, Livestream, Hitbox, Periscope, Ustream, and any other streaming service for which I can obtain a video feed link (HLS, RTMP, etc). I’ve only tested with Twitch so far.

This is super cool and bridges the gap between live coverage (Gameday etc.) and archived content (TBA etc.)

One suggestion would be to use the 140 characters you have more effectively to include information about the team #s or scores

I really want to use this for CCC this year. This is really cool! And thank you to the team that put this together.

Send me a link to the livestream(s) when the time comes and I can set it up. This goes for any event, though those using custom FMS systems will need a bit of custom configuration beforehand.

For the curiosity of myself as a programmer, what is it written in, and how does it work? It’s amazing and would be pretty darn cool to understand how to works, as I was considering trying something similar with YouTube’s API and start-and-end of matches as sent by TBA.

We’re going to be using Cheesy Arena - custom configuration needed I presume?

Thank you for the kind words. It’s written in Python. ffmpeg is used to record and extract frames from the livestream, and a combination of Pillow, OpenCV, and a custom-trained version of tesseract are used to detect and interpret the FMS audience display UI in the video frames. The FMS API, from which TBA draws its match data, only provides scheduled start times before matches take place and then actual start/end times at some point after they are completed—this is why the TBA Android app only offers estimated “match is about to start” notifications instead of “match started”.

Yes, I’ll investigate adding a custom mode for Cheesy Arena’s audience display. It looks very doable.

Looks awesome. Will this be open sourced?

Most likely. First I want to improve the structure of the code and add some more automation to the deployment process.

By request, FTC match videos are now also being recorded, and posted to the @FTC_replay](https://twitter.com/FTC_replay) account.

Thank you for doing this, spinda. It is nice to be able to watch the matches that didn’t make it to Youtube. I was able to watch 2 matches without a problem, but unfortunately, match 68 on Curie didn’t actually get recorded. Only the introduction was available. Is there any way that you have this saved and it just got uploaded incorrectly? It’s not available anywhere else and I’d really like to look over this match and our team’s performance.

Thank you again,
Joey Mirabelli, Team 101

To quote jmirabelli101:

I have one question:
Was it able to record Carson’s eliminations? I didn’t see any tweets about Carson after Quals on the twitter page,

Oh dear, you’re right. I suspect a patch which affected match recording during eliminations didn’t get rolled out to the server handling match recording for Carson. Sorry about that.