Once and a while I have to convert a video made with Cheese, a .webm, or one made by my camera, .mov to an MP4 which takes up the least amount of space (as of 2017) and seems to be supported across a lot of devices.
The script is both a script to run and a reminder as to the syntax that ffmpeg expects as I seem to occasionally forget and wanted a snippet on line as a quick go to for reference.
In this one scaling is applied via the -s option and the bandwidth via the -b option is limited as well. Plus it allows you to choose the filename for the output file.
If ffmpeg -i %1 %1.mp4 is used for example it would take the input file and convert to mp4, tacking on the mp4 extension with no scaling and bandwidth limiting.
#! /bin/bash #ffmpeg -i input.wmv -s 480x320 -b 1000k output.mp4 ffmpeg -i %1 -s 480x320 -b 1000k %2
Better Yet Do It Batchwise
For example, with a for loop, this code will simply go through the directory and convert all .webm’s to .mp4’s and it is set up to do scaling too if needed using -s hd480. It also keeps the same filename by changes the extension to the appropriate one for the output file.
#!/bin/bash for a in ./*.webm; do # ffmpeg -i "$a" -qscale:a 0 "${a[@]/%webm/mp4}" ffmpeg -i "$a" -s hd480 -qscale:a 0 "${a[@]/%webm/mp4}" done