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.

  • xmanmonk@lemmy.sdf.org
    link
    fedilink
    arrow-up
    1
    arrow-down
    2
    ·
    4 months ago

    I’ll bet with mpeg to jpeg it doesn’t have to re-encode the image, which it’s doing with the other formats.

    • Fisch@discuss.tchncs.deOP
      link
      fedilink
      English
      arrow-up
      4
      ·
      4 months ago

      h.264 (the compression algorithm the video uses) and jpeg are entirely different, so it does have to re-encode

      • Thann@lemmy.ml
        link
        fedilink
        English
        arrow-up
        2
        arrow-down
        2
        ·
        4 months ago

        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.

        • Fisch@discuss.tchncs.deOP
          link
          fedilink
          English
          arrow-up
          1
          ·
          4 months ago

          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.

          • Thann@lemmy.ml
            link
            fedilink
            English
            arrow-up
            1
            ·
            4 months ago

            Yeah, that makes sense. There might be some useful interface in VAAPI?