Open main menu

Help:Converting video

(Redirected from Help:CV)

Shortcut: Help:CV

Video conversion help in other languages:

català | Deutsch | English | español | français | galego | italiano | 日本語 | polski | português | 中文 | +/−

Wikimedia Commons seeks video files which are within the project scope, such as educational videos, and which are in a free file format, which currently only means WebM and Ogg Theora (and WebM is preferred).

Most recording devices produce videos in other formats. Although the Wikimedia community wishes to encourage the use of free and open source software, as of November 2017 no one has identified any available free software which is easy for typical, non-technical editors to use for video conversions. This means that anyone seeking to upload video to Commons will either need to find an open software solution which works for them, or otherwise, use one of the proprietary software solutions which others have recommended.

Easiest way for most users

The easiest way to get video into Wikimedia Commons is as follows:

  1. Identify the video file which you wish to share
    1. Confirm that either you own the copyright to the video and are willing to apply a free license to it, or otherwise that the video already has a free copyright license
    2. Confirm that the video is within the scope of what Commons will accept
  2. Upload the video file to Vimeo, a commercial video hosting service
    1. You have to create a Vimeo account
    2. the service is free for up to 500mb / week per user
    3. Vimeo can accept all common file types in full resolution
    4. You can configure Vimeo settings to automatically tag your videos with Creative Commons licenses, if you like
  3. After you have uploaded the file to Vimeo, use Video2commons to convert the file to a free format and import it to Commons
    1. The conversion happens in the cloud on the Wikimedia server side
    2. No software configuration required
  4. The file is now in Commons; process it here
    1. Categorize it, fix metadata
    2. Integrate the video with other Wikimedia projects, if you like

Another way to convert video format is as follows: If you are working in UBUNTU platform, click APPLICATIONS -> SOUND&VIDEOS-> TRANSMAGEDDON VIDEO TRANSCODER to convert a video format to another.

General conversion tips

  • When uploading a video (for use on Wikipedia), TimedMediaHandler will convert it into different versions, so you don’t need to provide separate versions for people on slow Internet connection. It is strongly recommended to upload your video with the best quality (bit rate and frame size) possible. If your resulting video file is larger than 100MB (104,857,600 Bytes) you should use UploadWizard (or another tool supporting chunked upload) allowing 4 GB; or use the Server-side upload (request help from a privileged user; no preset size limit).
  • WebM is the preferred format, but please do not convert from Ogg Theora unnecessarily, as it is also supported.
  • Some of the tools listed here for converting to Theora output the converted file with a .ogg filename extension. Rename the file to a .ogv extension, as this is now the preferred extension. For details see RFC 5334 and Pay attention to repeat the .ogv file type during upload; otherwise it (wrongly) defaults to .ogg again...
  • RFC 5334 .ogx for MIME type application/ogg is not yet widely supported; you can use .ogg for Theora video with FLAC instead of Vorbis audio.

Online conversion tools


Commons Video Convert on the Wikimedia Toollabs is a simple, web-based solution allowing users to convert common video formats into WebM and uploading them directly to Commons. See Special:OAuthListConsumers/view/4301b5f1f4fd2d196e174d5352bcf978 for version 0.2, use Special:OAuthManageMyGrants to manage connected apps.


Video2commons is a tool to upload videos from a url to Wikimedia Commons, it automatically converts the video to a commons compatible format. It includes function such as removing audio, subtitles, video. The tool uses OAuth to login. You can find a description of this tool at Commons:video2commons.

Internet Archive

Internet Archive offers a video upload tool which automatically converts it to a number of formats, including ogg. allows you to upload the video file (max. 2Gb). Uploading speed depends on the internet connection speed. A free web app that converts video files, allowing you to change the video format, resolution or size right in a browser. All the app features are accessible free of charge and has no limit on the number of files you can convert. Moreover, users don’t even need to sign up or sign in. allows you to upload the video file (max. 100MB without registration). The website will convert the video for you and present you with a link to download the converted file. The process may take several minutes depending on the size and quality of the video.

Multi-platform command-line conversion tools


FFmpeg is the Swiss army knife of video conversion. It's a highly flexible software suite that brings together a large amount of tools for handling video, audio, and other multimedia. It provides a command-line program "ffmpeg", with which you can convert also to WebM. See FFmpeg wiki's VP9 Encoding Guide for more information on its usage with VP9 specifically. For even more information on available command-line arguments specific to VP9 encoding, see FFmpeg's built-in help with the command ffmpeg -h encoder=libvpx-vp9


The recommended way to use VP9 is to utilise two-pass constant quality encoding. This is a combination of two modes (2-pass and constant quality) that have traditionally been separate approaches, and is recommended due to some quality-enhancing features in the libvpx encoder only being available in two-pass mode. Two-pass mode goes through the video twice, first to analyze it and second to use the collected data to encode the video efficiently at a certain set average bitrate. Constant quality mode aims to achieve a certain perceptual quality level for all parts of the video. Two-pass constant quality mode does an analysis pass and then encodes the video with a quality level set by the user. The quality level is set with the -crf switch and also requires that -b:v is set to 0 (zero).

There are other useful options available (not all of them specific to VP9), some of which are used in the example commands below and explained further in the bullet points below.

Two-pass encoding is done by running two commands, one for each pass, and specifying which pass you're running with the -pass switch. The first pass creates an analysis log file named ffmpeg2pass-0.log, which can be deleted after the second pass is done.

Since the command lines of different platforms use slightly different syntax (Windows uses NUL instead of /dev/null), the commands for each platform are listed separately.

Linux and OS X:

First pass:
ffmpeg -i input.mp4 -c:v libvpx-vp9 -b:v 0 -crf 30 -pass 1 -row-mt 1 -an -f webm -y /dev/null
Second pass:
ffmpeg -i input.mp4 -c:v libvpx-vp9 -b:v 0 -crf 30 -pass 2 -row-mt 1 -c:a libopus output.webm

The two commands can be run back-to-back by combining them with two & signs, like so:

ffmpeg -i input.mp4 -c:v libvpx-vp9 -b:v 0 -crf 30 -pass 1 -row-mt 1 -an -f webm -y /dev/null && ffmpeg -i input.mp4 -c:v libvpx-vp9 -b:v 0 -crf 30 -pass 2 -row-mt 1 -c:a libopus output.webm


First pass:
ffmpeg -i input.mp4 -c:v libvpx-vp9 -b:v 0 -crf 30 -pass 1 -row-mt 1 -an -f webm -y NUL
Second pass:
ffmpeg -i input.mp4 -c:v libvpx-vp9 -b:v 0 -crf 30 -pass 2 -row-mt 1 -c:a libopus output.webm
ffmpeg -i input.mp4 -c:v libvpx-vp9 -b:v 0 -crf 30 -pass 1 -row-mt 1 -an -f webm -y NUL && ffmpeg -i input.mp4 -c:v libvpx-vp9 -b:v 0 -crf 30 -pass 2 -row-mt 1 -c:a libopus output.webm
  • The target quality of -crf is specified on a scale from 0 to 63, with smaller values indicating higher quality. The default value is 30, which is sufficient for HD video. In general, the higher the video resolution the higher the value can be set since VP9 is more efficient at higher resolutions. This is useful to keep in mind when encoding resolutions higher than 1080p.
  • The audio quality, when not manually determined by the -b:a switch, is set to 96k by default. This is more than sufficient for most use cases as Opus is a very efficient audio codec. However, if your use case requires it you may wish to set it to a different value.
  • If you wish your video to not have audio, you can remove it by using the -an flag during the second pass. This is always done with the first pass since re-encoding audio would slow it down for no benefit. Furthermore, if you wish to specify the number audio channels yourself (for example, for converting 5.1 surround audio to stereo, or even mono), you can use the -ac flag followed by the number of audio channels desired (ie. -ac 2 for stereo).
  • The log file created during the first pass can be re-used and isn't actually specific to the quality level specified during the first pass. So if you encoded a video with a certain quality level but aren't happy with the result, as long as you didn't delete the log file, you can just re-run the second pass with a different quality setting and save time by not re-running the first pass.
  • The -row-mt 1 switch tells the encoder to use row-based multithreading. This can speed up encoding significantly on computers with more than 4 CPU cores/threads, resulting in a speed-up of 2x or more depending on the video resolution and the amount of CPU cores available. This option is set to 0 by default (as of January 2019) and thus needs to be set manually.
  • If you're using a pre-2018 version of FFmpeg, you may find VP9 encoding performance lacking. This is due to the aforementioned -row-mt multithreading feature being introduced in version 1.7.0 of libvpx (the VP8/VP9 encoding library used by FFmpeg), released on January 25th, 2018. FFmpeg added support for -row-mt in FFmpeg 3.4.
Furthermore, libvpx versions prior to 1.7.0 also require setting other multithreading features manually. These are the amount of threads, set with the -threads switch, and the amount of tile columns to use, set with the -tile-columns switch. The amount of threads should be set to the amount of processor threads made available by your CPU. The number of tile columns possible is determined by the resolution of the video and also affects the maximum amount of encoding threads the encoder can use. Below is a table of the recommended tile-columns values for various resolutions and the maximum amount of threads made possible by them, taken from Google's VP9 encoding guide.
Video resolution -tile-columns value Number of threads
320x240 1 2
640x360 2 4
640x480 2 4
1280x720 4 8
1920x1080 4 8
2560x1440 8 16
3840x2160 16 24


NOTE! Theora is older and significantly less efficient than VP9, leading to higher file sizes (and thus longer upload times and higher storage space use) at the same quality compared to newer formats. In general the use of Theora for new uploads should be avoided and VP9 used instead. Nevertheless, examples for converting to Theora are provided below.

Theora video with Vorbis audio:

ffmpeg -i demo.mp4 -c:v libtheora -q:v 7 -c:a libvorbis -q:a 6 demo.ogv

Theora video with FLAC audio:

ffmpeg -i demo.mp4 -c:v libtheora -q:v 7 -c:a flac -sample_fmt s16 demo.ogv

Theora video with audio removed:

ffmpeg -i demo.mp4 -c:v libtheora -q:v 7 -an demo.ogv

The quality of the video and audio is specified with -q:v and -q:a respectively (0–10, higher is better). See TheoraVorbisEncodingGuide for more information.

Note on pixel formats

Note that by default, FFmpeg will attempt to convert video losslessly from one pixel format to another. Since pixel formats other than yuv420p aren't supported by all browsers, this can become problematic when encoding HDR content or when making a video from a series of images. Motion JPEG files, for example, will be converted by ffmpeg to yuv422p, and PNG files can end up converted to RGB. Not only can these videos cause problems with browser playback, usually they also end up much larger when encoding them using the regular quality values.

In cases like this, adding -pix_fmt yuv420p to the FFmpeg command will ensure wide playback compatibility by converting the video to the yuv420p format.


Libav is a fork of FFmpeg providing the similar command-line program "avconv". It appears that the quality is not as good as oggconvert. Also the first and last seconds of an mp3 file can be lost (which is certainly not OK).

apt-get install libav-tools
  • To extract 325 seconds of audio starting at second 475 with a bitrate of 64 Mbit/s:
avconv -i input-file.mp3 -b 64k -ss 475 -t 325 output-file.mp3

The input file bit rate should be higher or equal to the output file bit rate... otherwise bad audio quality will be the result.

  • To convert multiple mp3 files at once to ogg format:
for i in *.mp3 ;do avconv -i ${i} ${i:%mp3}ogg ;done
  • To remove the (bad) sound from a video:
avconv -i infile -c copy -an outfile


ffmpeg2theora command-line tool converting a video file

ffmpeg2theora was a popular converter recommended at the Theora project page. It is a cross-platform command-line tool. The latest version is 0.30, released in January 2016.

In most cases you will only need a simple command indicating the name of the file to convert. (Video and audio quality is set to max.)

Command line examples
ffmpeg2theora file.avi -v 10 -a 10
ffmpeg2theora file.avi --noaudio -v 10


MPlayer is an open source multimedia player also being capable to transcode files but having the advantage of supporting both a GUI as well as the command line; available for most operating systems including Windows, Linux, and macOS. The MPlayer included by some SMPlayer distributions for Windows does not contain mencoder.exe.


OggConvert allows you to produce ogg/ogv output files. To install:

apt-get install oggconvert

VLC media player

VLC is a GUI version media player with conversion capabilities. A helpful tutorial can be found at TheoraCookbook. Encoding using the GUI requires a targeted bitrate which yields inferior quality than encoding for a specified video quality.


Xiph's QuickTime Components can be used to add OGG support to QuickTime Pro, under both macOS (versions 10.3.9 to 10.11) and Windows.

Download and install the component, and it will add a "Movie to OGG" option to the File->Export dialog. On macOS, you can only do this using QuickTime 7, and you can download QuickTime 7 by visiting Apple.

Tools for Windows

XMedia Recode - Conversion to OGV
See above for multi-platform solutions. Frequent FFmpeg builds and a user forum are offered by zeranoe.

FFCoder (v2.2 BETA, 2013-02) is a .NET 2.0 frontend for FFmpeg and MEncoder.

Video to Theora

Video to Theora (version 2.0, 2013) is an AutoIt GUI for ffmpeg2theora.

XMedia Recode

XMedia Recode was recommended by the WebM project. Download an installer from; a portable version is also available.

Windows PowerPoint

Windows PowerPoint allows recording a demo session, with sound, and export to mpeg4. Then afterwards you can do further video processing (cut video frames, overlay sound and audio, add subtitling).

Tools for Linux

See above for multi-platform solutions.

Multi-platform editing tools

Using mkvmerge to cut a video
See above for the command line tools avconv, ffmpeg, and ffmpeg2theora.
Ogg Video Tools

The Xiph oggz tool is able to 'chop' or split a theora file between given start and end times and 'merge' or join two Theora-encoded videos.
Ogg Video Tools is a collection of command-line tools that help with OGG video editing, including resizing, splitting and joining, creating slideshows from png files, and joining or separating audio and video streams from a .ogv file.


Shotcut is a free and open source software for Windows, Linux, macOS. It is based on FFmpeg, Media Lovin' Toolkit, Frei0r, Qt, and ICU, among others. Versions 14.11 (2014-11) and later support OPUS.

WebM with mkvtoolnix

WebM files are just MKV (Matroska) files which use a subset of the features for this format. With mkvtoolnix (GPLv2 for all platforms) it's very easy to manipulate them. VP9 video and OPUS audio in a WebM container are supported since 2013.


OpenShot Video Editor is an Open source graphical video editing tool available for all current platforms. It is an ideal platform to edit and export videos to ogv format. Choose the "All Formats OGG High" format with the highest possible resolution.


Kdenlive is an open-source video editor for GNU/Linux, BSD, macOS and (recently) Windows.

See also

External links