Intro
You probably already know the "Why" since you're here, or probably you're just a knowledge devourer that wants to know stuff just because one day it might come in handy (trust me, this might come in handy one day).
In your life as a developer you might need to make screen recordings to send to your colleagues or clients to showcase (the progress of) something you've developed. And these screen recordings can result in pretty big file sizes depending on the resolution and the length of the recording. Big files don't work well with slow upload speed and also they take more space on a server ("Thanks Captain Obvious!" - said someone from the audience).
So, since video compression is a thing, I'm going to help you compress those chonky files and help you decrease the effects of the aforementioned problems.
Pre-requisites
The only additional things you will need to accomplish this task are:
-
Homebrew
- a package manager for MacOS (makes life a lot easier) -
ffmpeg
- a CLI tool which allows video format conversion, compression etc. - basic terminal knowledge (traversing the file system)
Installing the pre-requisites
- Open a terminal window
- Install
Homebrew
by running this:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
- Install
ffmpeg
by running this:
brew install ffmpeg
Screen-recording tutorial
Recording your screen on MacOSX is as easy as pressing Cmd
+ Shift
+ 5
. I won't explain further, the tool is quite intuitive, fiddle around with it and you'll get familiar with it quite fast.
NOTE: To make your life easier rename your recording to something short and simple like "a.mov".
Video compression tutorial
- Open a terminal window
- Go to the recording's location (using the terminal of course)
- Run:
ffmpeg -i {recording-video} -vcodec libx264 -crf 24 {output-video}
The {recording-video} and the {output-video} have to contain the file extension as well.
(i.e.: ffmpeg -i a.mov -vcodec libx264 -crf 24 b.mov
)
And that's about it. If you want to know more about what the options for ffmpeg
mean, keep on reading.
Breaking down the ffmpeg
command
Let's dissect the command first:
ffmpeg | -i {recording-video} | -vcodec libx264 | -crf 24 | {output-video}
Now let's explain it:
-
ffmpeg
is the name of the CLI tool -
-i
is an option which takes the name of the input video (the video which we want to work on) -
-vcodec
is an option which takes the video codec's name (in our case it'slibx264
) -
-crf
is an option which determines the constant rate factor (I know it's wrong, but I remember this as compression ratio factor, which makes it easier for me to remember that higher values mean higher compression and lower video quality/size)
Outro
I hope this post helped you learn something new. This may serve as a short introduction to ffmpeg
for you as well, which is a powerful CLI tool. You can learn more about ffmpeg
here.
Also, I've made a multi-platform tool which installs everything automatically. You can look at it here.
Top comments (0)