is it possible to convert mp4 and m4v to webm via command line?

I'd like to just in a bulk swoop convert my mp4 and m4v files to web so i can play them in firefox without any issues.

  • It probably goes without saying, but this will reduce video quality (even if you use the same or higher bitrate as the original). – thomasrutter May 6 '15 at 2:05

Yes, with ffmpeg and bash this is not only possible, but very easy.

Here is the command for variable bit-rate conversion for .mp4 -> .webm:

ffmpeg -i input.mp4 -c:v libvpx -b:v 1M -c:a libvorbis output.webm

You can then use the command in a bash script to batch covert your files. Here is an example of how you could do that:


for FILE in *.mp4 ; do
    OUTNAME=`basename "$FILE" .mp4`.webm
    ffmpeg -i $FILE -c:v libvpx -b:v 1M -c:a libvorbis $OUTNAME

Keep in mind that depending on your computer, this may take a very long time.

And of course, this can be done for the m4v files as well. I won't guarantee everything will work since I don't have ffmpeg installed on this machine to test it, so you may need to modify the script and/or the conversion settings to suit your needs.

Documentation for the webm encoder can be found here: http://trac.ffmpeg.org/wiki/vpxEncodingGuide

  • 1
    The basename is superfluous when you can use bash parameter expansion instead: for FILE in *.mp4; do ffmpeg -i "$FILE" -c:v libvpx -b:v 1M -c:a libvorbis "${FILE%.mp4}.webm"; done – llogan Oct 2 '13 at 20:28

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.