Context: I’m currently using an older Samsung phone to convert h264 dashcam videos to HEVC/h265 to save space. These are many, 10 minute long videos, and the process is incredibly labour intensive, since I have to do each one manually.

The conversion itself is really fast (maybe 2-3 minutes), and the results are excellent (usually half the size with the same quality).

Question: Is there software for Linux that can convert at similar speeds, preferably batched? Handbreak has been incredibly slow.

Caveat: I’m using a Framework 13 (11th gen Intel) laptop with an Intel integrated graphics card, so I can’t really leverage that in the same way a dedicated GPU can be. But still, I can only imagine that my laptop should be able to outperform my super old phone! LOL

I’m not really looking to compress the videos (I’ve experimented, and the quality loss from an already “poor” source just doesn’t cut it). HEVC/h265 conversion would be ideal.

Is there anything else I can try?

  • solrize@lemmy.ml
    link
    fedilink
    arrow-up
    19
    ·
    6 days ago

    Everyone uses ffmpeg for this and Handbrake probably uses it also. I do most of my own conversions on a cheap dedicated server so it’s not a big deal if it takes a while, but yeah, h265 is slow.

    • Showroom7561@lemmy.caOP
      link
      fedilink
      arrow-up
      2
      arrow-down
      1
      ·
      6 days ago

      Handbreak is really slow, though. For context, in the time it takes handbreak to convert one of these videos, I would have done like 5 or 6 on my smartphone.

      Batch conversion is great, though. I just need it to be done in less than an entire day. 😢

      • MangoPenguin@lemmy.blahaj.zone
        link
        fedilink
        English
        arrow-up
        7
        ·
        6 days ago

        Did you set it up to use Intel Quicksync? If you’re using CPU only it’s going to be insanely slow.

        so I can’t really leverage that in the same way a dedicated GPU can be.

        You can, and Intel Quicksync is often better than a dedicated GPU for transcoding video.

        • Showroom7561@lemmy.caOP
          link
          fedilink
          arrow-up
          3
          ·
          6 days ago

          Ok, you absolutely set me on the right path! I didn’t realize that in Linux (using Flatpak Handbrake), I needed a separate plugin for Quicksync.

          I’ve been running tests, and tweaking the profiles, but goddamn is it fast now! Faster than when I was using it in Windows.

          Thank you!

            • Showroom7561@lemmy.caOP
              link
              fedilink
              arrow-up
              3
              ·
              5 days ago

              And using the app “Identity” (also a Flatpak), comparing the quality differences is suuuuper easy!

              Goddamn, I love FOSS!

  • Novocirab@feddit.org
    link
    fedilink
    arrow-up
    12
    ·
    edit-2
    6 days ago

    ffmpeg is usually the tool of choice.

    An example for batch converting of all AVI videos in a folder:

    for i in *.avi; do ffmpeg -i "$i" "${i%.*}.mp4"; done

    Source & further reading here on StackOverflow. The comments to the answer provide examples of how to explicitly tweak the quality level. Inverting what this specific comment suggests, conversion from H264 to H265 could be done by something like this, assuming all your videos’ names end on .mkv:

    for f in *.mkv; do ffmpeg -i "$f" -map 0 -movflags faststart -c:v libx265 -c:a copy -c:s copy "${f/x264/x265}"; done

    I wonder: if one wants to make things run in parallel, would that be as easy as adding " & " before the last semicolon here? I suspect this could work as long as there are only a few handful of files, but lead to troubles once there’s more.

  • i_am_not_a_robot@discuss.tchncs.de
    link
    fedilink
    arrow-up
    11
    ·
    6 days ago

    You’re wrong about not being able to levelage your Intel graphics. Intel 11th gen has hardware HEVC (h265) encoding. Your Samsung phone probably also has HEVC hardware encoding faster than your CPU encoding. You want the ffmpeg hevc_vaapi codec, and it should go even faster if you use -hwaccel vaapi for decoding.

    • Showroom7561@lemmy.caOP
      link
      fedilink
      arrow-up
      1
      arrow-down
      1
      ·
      6 days ago

      I know it can be leveraged, but it’s not nearly as powerful as a dedicated GPU. I was converting in Windows using Intel Quick Sync, but never found it to be “fast”, at least not when compared to my old Samsung phone.

      Thanks for the tip, though. I will try to leverage it!

  • Hellfire103@lemmy.ca
    link
    fedilink
    English
    arrow-up
    7
    ·
    6 days ago

    FFmpeg is your friend. Here’s a command that should work:

    mkdir converted; for i in *.mp4; do ffmpeg -i $i converted/${i::-3}.hevc; done
    
    • Showroom7561@lemmy.caOP
      link
      fedilink
      arrow-up
      1
      ·
      6 days ago

      Try shutter its gui for ffmpeg https://www.shutterencoder.com/

      This looks nice!

      And still I would use av1 or vp9

      Reasons?

      The videos I’m trying to convert are not the type that I’d need to play through Jellyfin or anything like that. More archival dash cam footage that does need to be accessible. Small size without (much) quality loss is my priority, but I can’t spend 12h a day converting them over. 😵‍💫

      • anon5621@lemmy.ml
        link
        fedilink
        arrow-up
        3
        ·
        6 days ago

        VP9 is actually very good when it comes to reducing file size without a big hit to quality. It usually gives you smaller files than H.265 for the same visual result. AV1 takes that a step further. It’s currently the best option if your goal is to get the smallest file size while keeping as much of the original quality as possible. It’s more efficient than both H.265 and VP9 in that regard. The only tradeoff is that AV1 takes longer to encode, especially on CPUs without dedicated hardware support but for archiving purposes where speed isn’t critical, it’s often worth it.