I’m trying to extract the frames of a video as individual images but it’s really slow, except when I’m using jpeg. The obvious issue with jpegs is the data loss from the compression, I want the images to be lossless. Extracting them as jpegs manages about 50-70 fps but as pngs it’s only 4 fps and it seems to continue getting slower, after 1 minute of the 11 minute video it’s only 3.5 fps.
I suspect it’s because I’m doing this on an external 5tb hard drive, connected over USB 3.0 and the write speed can’t keep up. So my idea was to use a different image format. I tried lossless jpeg xl and lossless webp but both of them are even slower, only managing to extract at about 0.5 fps or something. I have no idea why that’s so slow, the files are a lot smaller than png, so it can’t be because of the write speed.
I would appreciate it if anyone could help me with this.
You’re reading and writing to the same device? That’s your issue.
I tried copying the video to the internal SSD and using that as the input but that didn’t change anything
What model is the drive inside the USB enclosure? I bet it has almost no cache.
It’s not inside a USB enclosure, I bought it as an external drive. Now that you mention it, the reason it starts of so fast and then gets a lot slower suddenly is probably because it’s running out of cache.
It connects by USB, it’s in an exclosure. It didn’t matter that it came that way, it’s still an enclosure for the drive and USB circuitry.
At 4 fps? How slow is the HDD supposed to be and how high the bit rate of the video?
I’m betting it’s a crappy USB implementation that is only using one pcie channel for all of the USB devices combined with a slow drive that has almost no cache.