FFmpeg is a set of open source audio and video tools for recording, converting, and streaming multimedia content. It supports nearly every digital format and codec known, from the old and obscure to the cutting edge. The toolset is highly portable — available on most operating systems and platforms.
The FFmpeg project distributes four major applications:
- FFmpeg — A command-line utility that can be used to process, convert, or manipulate media. This tool is the foundation for the other applications.
- FFplay — A simple media player.
- FFserver — A streaming media web server.
- FFprobe — A stream analysis tool.
FFmpeg is built with a number of self-contained libraries which provide discreet functionality that can be included into other applications. These features include codec encoding and decoding, compression, image scaling, resampling, and format conversion.
FFmpeg does a lot of things, and it can be difficult to get a handle on all the different use cases and options. A few of these tutorials provide a high level overview of the technology. Most of them focus on a single use case or task you could perform with FFmpeg.
- A Guide To Video And Audio Conversion Using FFmpeg is a detailed tutorial covering the most common use for the FFmpeg library.
- How to Write a Video Player in Less Than 1000 Lines is a highly practical tutorial on FFmpeg and SDL.
- FFmpeg: The Ultimate Video and Audio Manipulation Tool is a great article that explains the tool and its various uses at a relatively high level, without skimping on any of the technical details.
- FFmpeg Tutorial for Debian is a comprehensive look at using the library. Some of the installation details are specific to Debian, but most of the information is useful for users on any platform.
- FFmpeg Tutorial from CodeProject details using FFmpeg to build a video player in Visual C++.
- A FFmpeg Tutorial For Beginners is a somewhat poorly written, but still very useful and informative, tutorial on using FFmpeg, covering the most common tasks for average users.
- How to Generate Better Video Previews with FFmpeg is a really cool, practical tutorial on generating jQuery enabled video previews using FFmpeg and some Bash scripting.
- The FFmpeg article at the ArchLinux Wiki provides a number of examples of using the library for video capture and conversion tasks.
- The Official FFmpeg Documentation is the best place to start looking for information.
- FFmpeg Man Page is the official documentation packaged with the library.
- The FFmpeg Source Code Repository is available at GitHub.
Tools and Downloads
- Download FFmpeg directly from the official source.
- FFMPEG Tools is a part of the MoviePy package, and provides FFmpeg bindings for Python.
- FFmpeg Binary for Mac gives you an easy-to-install distribution of the library so that you don’t have to compile from source.
- Fluent-FFmpeg is a Node.js package that provides an easy-to-use API to FFmpeg.
- Omnividea FOBS is an object-oriented wrapper for FFmpeg, for C++.
- FFmpeg Static Builds are an easy way to get FFmpeg for Linux without compiling from source.
- FFmpeg (@FFmpeg) is the official Twitter profile of the project.
- FFmpeg Bug Tracker and Wiki is the official hub for reporting and discussing issues and bugs.
- The most active places for discussion in the FFmpeg community are the official mailing lists.
- There are two FFmpeg IRC channels.
- If you need help, you can ask in the FFmpeg Support Forum.
- There is even an FFmpeg subreddit.
Books on FFmpeg and Related Topics
- FFmpeg Basics: Multimedia Handling with a Fast Audio and Video Encoder (2012), by Frantisek Korbel, is a solid introductory book for people who just want to get a handle on using FFmpeg.
- Beginning HTML5 Media: Make the Most of the New Video and Audio Standards for the Web (2015), by Pfeiffer and Green, only touches on FFmpeg briefly. However, since many FFmpeg users will be encoding video for the web, this book’s focus on HTML5 video and audio standards makes it required reading for serious multimedia producers.
- Linux Multimedia Hacks: Tips & Tools for Taming Images, Audio, and Video (2005), by Kyle Rankin, covers a wide range of audio and video tools for Linux, including the FFmpeg library.
- An Introduction to 3D Computer Graphics, Stereoscopic Image, and Animation in OpenGL and C/C++ (2011), by Fore June, only deals with FFmpeg in an appendix. However, this places FFmpeg into a context not covered in the other tutorials and books listed here: within a development workflow, creating computer generated animations.
- An Introduction to Video Compression in C/C++ (2010), by Fore June, is a detailed technical and theoretical book covering principles of video compression and analysis, and how those principles are implemented in C and C++. This is a book for people who want to understand how FFmpeg works under the hood, not just how to use it.
- Video Demystified: A Handbook for the Digital Engineer (2007), by Keith Jack, is a massive (over 900 pages), authoritative book on digital and analog video. FFmpeg, and nearly every other tool you might need, is covered.
FFmpeg is a useful tool that gives you command-line or programmatic access to video and audio processing. Combined with some skill in a scripting language like Bash, Python, or Perl, FFmpeg gives you the ability to automate all sorts of multimedia tasks, from format conversion to preview generation. You can use it to replace expensive screen-capturing applications, or build a full-scale video player on top of it.
Anyone working regularly with audio or video who wants to speed up or automate their workflow would benefit from learning how to use FFmpeg.
Further Reading and Resources
We have more guides, tutorials, and infographics related to coding and development:
- ImageMagick Introduction and Resources: this collection of command-line graphics tools is set up to use as a graphics library.
- C++ Developer Resources: learn all about one of the great languages for greaphics programming.
When to Use JPEG, GIF & PNG
Confused about graphics file formats? Check out our infographic, When to Use JPEG, GIF & PNG.