How do ultra-high-speed cameras write to SD cards at such quick speeds, like 580.56 gigabits per second? Before writing, the footage also needs to be encoded/processed! What's the technology behind ultra-high-frame-rate cameras being able to manage huge amounts of image data? Do they have gigantic memory buffers?
What's the technology behind high-frame-rate cameras being able to manage huge amounts of image data?
Recording at 1080p and 100,000 FPS
Not at the same time:
If you’re shooting 1,000,000 fps, you’re shooting in monochrome at 128 x 32 resolution. For full-resolution of 1280 x 800, it can shoot at 25,600 fps.
These cameras use a combination of:
large amounts of RAM
"You can shoot for 7.6 seconds at full resolution with the 288GB RAM option
specialized SSD cards
"A CineMag can directly record about 1Gpixel/second"
Here is just one example of how it is done:
Let’s take a look at a real high-speed camera, rather than just speaking in the abstract. This is the Phantom v2512, which can shoot at resolutions up to 1280 x 800 and frame rates of up to 1,000,000 fps with a special option. However, not both at the same time. If you’re shooting 1,000,000 fps, you’re shooting in monochrome at 128 x 32 resolution. For full-resolution of 1280 x 800, it can shoot at 25,600 fps. They claim this is the fastest 1Mpixel video camera on the market.
So it can shoot at 25 Gpixels per second. That’s not sent to an SSD, however, that goes to RAM. You can order the camera with 72GB, 144GB, or 288GB of RAM. Dynamic RAM, of course, far, far faster than any SSD. You can shoot for 7.6 seconds at full resolution with the 288GB RAM option.
For longer, slower shooting, they offer an SSD custom-designed for high speed video, the CineMag IV. A CineMag can directly record about 1Gpixel/second, so that’s 1500MB/s. Of course, given that they’re using a custom SSD and not an off-the-shelf unit, there’s no reason to expect these to necessarily be limited to the speeds of those used in standard off-the-shelf SSDs for PCs.
That's not what happens at all.
As can be clearly seen in the video, the recording at 120k fps is done with 512*320 resolution, which is less than 8% of the bandwidth for 1080p. At 170k fps, the resolution is only 256*256, and the 340k recording is done at again half that resolution, which is only 3% of the bandwidth you're talking about.
The final video on youtube is 1080p, sure, but the source videos (at least the high-speed ones) are not, they're upscaled after the fact.
So, while it's still quite some, it's not nearly what you think it is.
The smallest model of these cameras has 72GB of RAM, and they go up to 288GB of RAM. Assuming the lowest of the resolutions they've used in the video, and the largest model of the camera, the camera would be able to store about 2 million full-chroma frames, or about 5.8 seconds of video in RAM just like that, no need to ever write something.
But it doesn't do that, it stores frames which are about 1/10 that size. So really, it can record almost one minute without ever writing out something. Add to that a fast storage medium (of which even the cheaper ones are capable of taking 100+MB/s nowadays, and top notch is more like 1GB/s), and there's little surprise how it could work.
Note that thanks to parallel writes, even with a slow-ish medium which can't quite keep up with sustaining the writes indefinitely, you can greatly increase the total recording capacity so it's virtually unlimited (you don't do 2-hour high-speed recordings anyway).
As for processing/compression, ProRes 422 is not comparable to typical video compression. It is a dead simple chroma subsampling followed by a DCT, strictly constrained to a single frame. No movement estimation, prediction, interframe-dependency, none of that kind. So basically it's a kind of sub-sampled single-frame JPEG compression, which is well-researched for 25+ years, an embarrassingly parallel problem, and for which dedicdated, cheap hardware that has the whole transform hard-wired is readily available. Doing this fast is no technical challenge. Storing compressed data is just as fast as storing uncompressed data.
As mentioned, high speed RAM. If that does not cut the mustard, you can:
interleave high speed RAMS. Eg you attach eight or sixteen RAM chips in parallel to the sensor output, and tell them to store one after the other, then the first again, round robin fashion. The RAMs only need to be one eight or one sixteenths as fast. If they cannot handle the data changing so fast in front of their inputs, add one extra fast register as an intermediary.
An alternative way is to strobe all eight or sixteen or however many RAMs all at the same time - but stagger the length of the wires/traces leading to them, so data that was current at different times appears at the input of each RAM.
Use memory that is not addressable but instead works in a FIFO/queue fashion - this does not need handling addresses at all, you can just clock data into these devices as fast as they can take, until it literally comes out the other end - if you need more space you just attach more of these devices to that other end. Once time has come to read it out, you can do so at your preferred speed.