Bash/FFMPEG: Batch resize .mp4 videos to fixed resolution 2
We needed to shrink a bunch of mp4
videos so that they would have the same size as the screen of an android device.
We did that both to save space on the internal memory of the device and to make the device perform as efficient as possible as it would not have to shrink the video on the fly.
The command we used was the following:
find . -type f -name "*.mp4" -exec bash -c 'FILE="$1"; ffmpeg -i "${FILE}" -s 1280x720 -acodec copy -y "${FILE%.mp4}.shrink.mp4";' _ '{}' \;
What this command does is the following:
- Find all files in current folder (and sub-folders) that have the extension
.mp4
- For each file, create a new bash instance in which it will call
ffmpeg
taking as first parameter the filename that matched -i "${FILE}"
–ffmpeg
will take as input the filename we matched-s 1280x720
– Then change the video size to1280x720
-acodec copy
– It will keep the audio as is-y "${FILE%.mp4}.shrink.mp4
– Finally, create a new file (or overwrite existing) that has the extension.shrink.mp4
in the same folder