I’m happy to announce an alpha version of FRC Video Splitter 4, a tool to help split long recordings of FRC competition streams into videos of individual matches.
In this version, you should be able to load a video, add matches from TBA, configure a few settings, set timestamps, and split matches. My goal with this version is to make the interface as simple and easy to use as possible.
Thanks @Ty_Tremblay for continuing to improve and release this year after year, its such a great tool that really opens up the accessibility of good match video without spending hours splitting footage by hand.
Have you thought about forking this for FTC somehow? Not sure what the existing situation with the lack of TBA would entail, but it’s really bad over there. I think for worlds matches @guineawheek literally had to manually upload each day of the stream VOD to YT, and people basically share matches as timestamps on that video. Even just having this for just the Championships would be a big help.
FTC has the FTC Events website that lists matches, accessible via a mostly usable API. A confounding factor, however, is that we don’t have accurate timestamps between matches from event systems – at least not as far as I can tell.
Notably, we don’t have a stream cart like FRC does. We could fix this by having a computer at events that plugs into the field network (the one that runs match timers) and have them listen for event start and correlate video feeds with match starts live. Or have the video feed machine be able to serve this purpose.
So what I’ve done – mostly for Champs as I don’t really have the bandwidth to do this for lower profile events, and ever since FIRST stopped enabling Twitch VODs for copystrike reasons we need someone to care about archival – is have a big pile of OpenCV, character recognition, and hardcoded heuristics figure out match starts for me, which then cross-correlates the data from FTC-Events with what’s on screen. The system works well enough that you could even run this in real-time in combination with streamlink recording Twitch. There’s even a utility that’s like 90% done that’s supposed to make selecting regions of interest easy to select (see the roinator folder), and you could extend its functionality to FRC as well. However, I am at my bandwidth limit for development of projects and I could probably use a hand.
The reason why they’re all uploaded as one big video is speed. It’s the fastest way to get them online (fairly time critical as teams want to use past footage at Worlds for scouting), but more importantly, it’s not subject to the video quantity upload limits YouTube imposes — something I discovered when I tried uploading the hundreds of individual matches for 2019 Championships, all sliced with a predecessor of Matchinator. The chapters feature makes it easy for me to make something acceptable simply by pasting in the timestamps Matchinator spits out, even if it is worse than individual videos.
I just used the Beta and a few things I would like to see
Being able to split multiple matches if the event is not on TBA or if TBA’s info is broken. One of the events I helped host doesn’t have their playoffs on TBA/FIRST’s System cause we have to use test matches since we had a special bracket. I had to individually split each match instead of having a list of each match setup and then split them all when I was done
Being able to access streams from YT or Twitch VODs. Idk much about Twitch but YT only lets you download at 720p, but if you are able to access the stream at 1080p, that would be nice.
I tried to use this to split the MRI match videos (as an MKV) from this year and it immediately went from 0% to 100% on each file and gave me a bunch of 0 byte files on the output.
Looking at the code, does the input file need to be mp4?
The progress of each file should be going directly from 0 to 100% because of the fast way we split the videos out (no encoding / transcoding required). Did the video work in the player in Splitter, but all of the split files were 0 byte?
The underlying ffmpeg commands should be copying the audio and video codecs of the input video and saving the video with the same extension as the input video.
The link to the code you shared is from the master branch, which is still v3. v4 is on the alpha branch
I found that FRC Splitter went to 100% nearly instantly, but you have to wait a bit for the file to be created, and loaded with data. Could be a few minutes with lots of matches. I don’t know if that’s Windows lagging, or Splitter not keeping track of the progress properly. It was easy enough for me to wait though.
There is The Orange Alliance, and they do have their own API but idk how that compares to TBA. It would be cool if both of them work together and have the best features of both and also make it a smooth transition to read both sites. I get confused looking at the orange alliance, but that’s probably cause I didn’t do FTC.
official and maintained by FIRST (it’s a fork of FRC-Events), and what event scoring systems upload to
the data source TOA and every other system pulls from nowadays
more reliable than TOA (in my experience).
One of the silver linings of the COVID pandemic was that we finally got a centralized, official scoring records website and API that everyone is forced to use. Just use FTC-Events.
TOA has a different API that behaves differently from TBA, so if the suggestion to use TOA is for API compatibility, there likely isn’t any to be had. A new API client will have to be written anyway.