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.

  • Supermariofan67@programming.dev
    link
    fedilink
    arrow-up
    2
    ·
    4 months ago

    PNG is a rather slow algorithm based on the DEFLATE compression from zip/gzip. You could extract to bmp or some other uncompressed format. First, to ensure it is lossless, make sure it supports the video’s pix_fmt without needing conversion.

      • cmnybo@discuss.tchncs.de
        link
        fedilink
        English
        arrow-up
        5
        ·
        4 months ago

        Well, you found your problem then. You will need to get a decent quality SSD to speed it up. Avoid those cheap QLC SSDs, they are slower than mechanical hard drives once the SLC cache fills up.

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

          I don’t really wanna buy another SSD just for this. I already have two SSDs in my PC, I just don’t have enough storage left. All the frames are gonna be like 300gb.

    • drwankingstein@lemmy.dbzer0.com
      link
      fedilink
      English
      arrow-up
      2
      ·
      4 months ago

      going from YUV->RGB wont incur any meaningful loss, going from RGB -> YUV on the other hand can, but it’s rare that it will actually happen so long as you arent messing up your bitdepth too much