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