Batch video conversion from command line

Shimitar@feddit.it to Piracy: ꜱᴀɪʟ ᴛʜᴇ ʜɪɢʜ ꜱᴇᴀꜱ@lemmy.dbzer0.com – 42 points –

Hi fellow sailors,

i have lots of downloaded... ISOs... that i need to converto to save space. I would like to make them all of the same size, let's say 720p, and same format, let's say h265.

I am on linux and the... ISOs... are sorted into a neatly named hierarchy of sub-folderds, which i want to preserve too. What is the best tool (CLI) for the scope? I can use ffmpeg with a bash script, but is there anything better suited?

26

You are viewing a single comment

I've been using a for loop with ffmpeg to convert to AV1

I start in the series root folder and it iterates through each seasons subfolder

for f in ./**/*.mkv; do
      ffmpeg -i "$f" -c:v libsvtav1 -crf 0 "{f%.*}.av1.mkv"; done

Since I'm happy with the quality of everything so far, I've added this to the start to make it easier to delete the old files

for f in ./**/*.mkv; do
      mv "$f" "${f%.*}.xyz.mkv"; done

And at the end I've added this to delete the old files

for f in ./**/*.xyz.mkv; do
      rm " $f"; done

Why -crf 0?

The valid CRF value range is 0-63, with the default being 30. Lower values correspond to higher quality and greater file size.

https://trac.ffmpeg.org/wiki/Encode/AV1

I compared a bunch of crf values, taking video quality, encode time and file size into account on a few episodes from some of my favorite shows and ended up settling on this.

For the most part, I don't notice a quality difference compared to my source, but it might just be because of my bad eyes or my monitor lol. But I did notice quality differences around 35 + so they were out.

At crf 0 I'm encoding a 40 min epsisode in about 5 mins which I'm happy with, I probably could have saved time going for a higher value but most of the time I run the script when I'm sleeping so time wasn't a big issue as long as it wasn't taking 20+ mins to encode 1 file

Going for 0 meant I'd have as close to the same quality as my source, using the default preset, and I didn't notice huge file size differences between 0 and 30.

I've encoded pretty much all of my TV shows now and I've dropped the size of my TV directory to about 1/4 of the original size so going for a higher crf value didn't seem worth it to me, if I had noticed that my file size at crf 5 was half what it is at crf 0 then I would probably have went with crf 5

I think its pretty subjective some people are happy with 720p and others won't settle for less than 4k so I don't think this would be a great solution for everyone to do but I think people should play around with different parameters to see what works best for them.