35
Extracting frames from a video with ffmpeg very slow if not using jpeg
(discuss.tchncs.de)
From Wikipedia, the free encyclopedia
Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).
Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.
Community icon by Alpár-Etele Méder, licensed under CC BY 3.0
I'll bet with mpeg to jpeg it doesn't have to re-encode the image, which it's doing with the other formats.
h.264 (the compression algorithm the video uses) and jpeg are entirely different, so it does have to re-encode
Actually they both use Discrete Cosign Transform!
PNGs use DEFLATE which is a generic compression standard that exhaustively searches for smaller ways to compact the data.
I would recommend comparing the quality of images of different formats against eachother to see if there is noticeable lossyness.
If the PNGs are indeed better, try to set the initial compression of the PNGs to "zero" and come back later to "crush" them smaller.
Even if they use the same technique, they're entirely different algorithms and h.264 also takes information from multiple different frames, which is why the video is 1.7gb but a folder with each frame saved as a png is over 300gb.
The formats with the best compression, where it might be fine, are jpeg xl and webp, as far as I know. They're even slower tho because they're so CPU intensive and only use one thread.
Setting the png compression to 0 doesn't help because the bottleneck for png is the hard drives write speed. I already tried that.
Yeah, that makes sense. There might be some useful interface in VAAPI?