Converting Video and Audio Formats Using FFmpeg

In this article, you'll learn how to convert various media file formats like MKV, MP4, MOV, WebM, MP3, etc. using the powerful command-line tool, FFmpeg.
by Josephine Loo ·


    Media files come in various formats and codecs. Video files can be in formats like MKV, MP4, MOV, and WebM, while audio files come in formats like MP3, WAV, AAC, etc. A media file's format can influence its size, quality, functionality, and compatibility across different platforms. Therefore, there is always a need to convert media files from one format to another.

    FFmpeg is a popular and powerful command-line tool for manipulating media files programmatically, including converting file formats. If you’re going to use it for building a video or audio editing tool, you should consider adding the functionality of converting file formats too as it is supported by FFmpeg. In this article, we’ll explore how to use FFmpeg to convert media file formats, with examples like converting MKV to MP4, MOV to MP4, MP4 to MP3, and more.

    What is FFmpeg

    FFmpeg is a complete, cross-platform solution to record, convert, and stream audio and video. It can decode, encode, transcode, mux, demux, stream, filter, and play media files in any format. It is also highly portable—it compiles and runs in a wide variety of build environments, machine architectures, and configurations like Linux, Mac OS X, Microsoft Windows, etc.

    FFmpeg contains multiple tools for end-users to convert, play, and analyze media files and libraries for developers to use in different applications, such as libavcodec, libavutil, libavformat, libavfilter, libavdevice, libswscale, and libswresample. When you download the FFmpeg packages/executable files to your machine, these libraries will be downloaded automatically.

    Installing FFmpeg

    Before we begin, make sure to download FFmpeg from the official website. You can follow this step-by-step guide to install FFmpeg on your Mac, Windows, or Ubuntu/Linux.

    Note: This article is based on FFmpeg v6.0.

    Basic Command

    To convert a media file from one format to another, you can use a simple command with the structure below:

    ffmpeg -i [input_file_name] [output_file_name]

    The argument -i specifies the input file. Following the input file name is the output file name and it can be any file extension type (e.g. .mkv, .mp4, .mp3). FFmpeg will automatically detect the input format and convert it to the output format specified by the file extension.

    Let’s look at some examples…

    Converting MKV to MP4

    MKV, also known as Matroska Video, is a multimedia container format that can hold an unlimited number of video, audio, picture, or subtitle tracks in one file. As MKV files have large storage, they’re often used to store high-definition content with lossless or high-bitrate codecs. However, MKV is not widely supported—it can’t be played on web players and is only supported by some local players, like VLC Player, KMPlayer, and MPC-HC.

    Because of the limited support, converting MKV files to a more widely supported format like MP4 makes content distribution easier. To convert an MKV file to MP4 using FFmpeg, use the following command:

    ffmpeg -i input.mkv output.mp4

    You can add the -c copy option in the command to tell FFmpeg to copy the video and audio streams from the input file to the output file without re-encoding them.

    ffmpeg -i input.mkv -c copy output.mp4

    This makes the conversion faster and ensures a lossless conversion.

    Converting MOV to MP4

    MOV is the filename extension for the QuickTime multimedia file format. Although MOV was initially developed for Apple’s Macs, it is now compatible with Windows 10 or above—it can be played natively using Microsoft Photos. That said, if you want to ensure compatibility on other platforms and devices, MP4, the most common video file format, is still a safer choice.

    Besides that, MP4 is also known for its efficient compression, which can result in smaller file sizes. To convert a MOV file to MP4 using FFmpeg, use the following command:

    ffmpeg -i output.mp4

    Similarly, you can add the -c copy option in your command to convert the MOV file to MP4 without re-encoding them.

    Converting WebM to MP4

    WebM is another popular video format. Its file structure is based on the Matroska container and consists of video streams compressed with the VP8 or VP9 video codecs and audio streams compressed with the Vorbis or Opus audio codecs. Although WebM is a subset of Matroska, it is designed for web use and streaming. Therefore, it is commonly used for HTML5 videos.

    However, WebM videos can’t be played on some Apple devices natively. You need to install a third-party media player to play WebM videos, which makes it less convenient compared to MP4. To convert a WebM file to MP4 using FFmpeg, use the following command:

    ffmpeg -i input.webm output.mp4

    This will convert the WebM video to MP4 and increase its compatibility across various devices and platforms.

    Converting MP4 to MP3

    Besides converting video files from one format to another, you can also convert them to other media formats like MP3. This can be useful for repurposing content as only the audio will be extracted and saved to the output file. For example, the audio of a video file can be extracted and used as the content for a podcast.

    To convert an MP4 file to MP3 or extract audio from a video file using FFmpeg, use the following command:

    ffmpeg -i input.mp4 output.mp3

    This will encode the audio with the default libmp3lame audio codec and save it as an MP3 file.

    🐻 Bear Tips: Do you know visuals improve engagement by 180%? Consider adding a cover art for every podcast episode and automate it with Bannerbear.

    Advanced Command

    The commands above convert input files to specified file formats using the default options. You can add other options to the command to customize the output file further, like specifying the codec, frame rate, resolution, and more to adjust the output quality.

    Changing Video/Audio Codec

    A media file’s codec can affect its quality, size, and compatibility. FFmpeg supports a wide range of video and audio codecs and you can specify them in the command using the -c option.

    To specify the video codec, you can use the -vcodec or -codec:v /-c:v option. For example, the command below uses the libx264 codec to encode the output video file:

    ffmpeg -i -vcodec libx264 output.mp4

    Similarly, you can specify the audio codec for an audio file using the -acodec or -codec:a /-c:a option:

    ffmpeg -i input.mp4 -acodec libshine output.mp3

    You can also specify both video and audio codecs in the same command for video files that contain an audio stream:

    ffmpeg -i -vcodec libx264 -acodec libshine ouput.mp4

    Adjusting Video/Audio Quality

    Many factors control the quality of a video/audio file and bitrate is one of them. Bitrate refers to the amount of data that can be transferred or processed within a certain amount of time. When the a media file has a high bitrate, it typically has a better quality (also results in a larger file size).

    You can control a video file’s bitrate using the -b:v option. The command below sets the video bitrate to 64 kbit/s:

    ffmpeg -i -b:v 64k output.mp4

    For audio files, use the -b:a option:

    ffmpeg -i input.mp4 -b:a 224k output.mp3


    Choosing the right media file format is important to ensure that the content can be played on the target platforms and devices. It's important to keep in mind that each format has its advantages and disadvantages. Converting the media files to other formats not mentioned in this articles works similarly. If you would like to add the support of other formats, follow the same command structure and modify the input/output name. Happy building!

    About the authorJosephine Loo
    Josephine is an automation enthusiast. She loves automating stuff and helping people to increase productivity with automation.

    How to Automatically Create Translated Banner Graphics for Multilingual Websites Using GPT-4o and Bannerbear

    OpenAI’s advanced language models significantly enhances text-related tasks, especially with the GPT-4o. In this article, we’ll guide your through the steps of using GPT-4o and Bannerbear to automate the translation and generation of banner graphics in various languages for multilingual websites.

    Top Cloud Hosting Apps for Image and Video Automation

    Cloud storage services differ in terms of delivery, security, configurability, and pricing. Here's how to compare your options and choose the best for your image and video automation needs.

    3 Ways to Translate Content in Airtable

    Powering your database with translation features can save time and resources. Here's how you can set your Airtable base up to translate content in-app.

    Automate & Scale
    Your Marketing

    Bannerbear helps you auto-generate social media visuals, banners and more with our API and nocode integrations

    Converting Video and Audio Formats Using FFmpeg
    Converting Video and Audio Formats Using FFmpeg