

In each tutorial, I'll introduce a new idea (or two) and explain how we implement it. This tutorial will begin with an updated version of the original tutorial, written by Martin Böhme (I have stolen liberally borrowed from that work), and work from there to developing a working video player, based on Fabrice Bellard's ffplay.c. It is a simple C program that implements a complete video player using ffmpeg. There is a sample program that comes with ffmpeg called ffplay. So, when I decided to learn about ffmpeg, and in the process about how digital video and audio applications work, I decided to document the process and present it as a tutorial. There is a single tutorial that shows the basics of ffmpeg and auto-generated doxygen documents. The only problem is that documentation was basically nonexistent. It's simple, written in C, fast, and can decode almost any codec you'll find in use today, as well as encode several other formats.

This can make media applications much simpler to write. ffmpeg takes care of all the hard work of video processing by doing all the decoding, encoding, muxing and demuxing for you. For a full list of GPUs and formats supported, please see the available GPU Support Matrix.Next UPDATE: This tutorial is up to date as of February 2015.įfmpeg is a wonderful library for creating video applications or even general purpose utilities. Ability to add your own custom high-performance CUDA filters using the shared CUDA context implementation in FFmpeg.Create high-performance end-to-end hardware-accelerated video processing, 1:N encoding and 1:N transcoding pipeline using built-in filters in FFmpeg.Granular control over encoding settings such as encoding preset, rate control and other video quality parameters.Hardware-accelerated decoding of H.264, HEVC, VP9, VP8, MPEG2, MPEG4*, and AV1.Hardware-accelerated encoding of H.264 and HEVC*.

If you have an NVIDIA GPU which supports hardware-accelerated video encoding and decoding, it’s simply a matter of compiling FFmpeg binary with the required support for NVIDIA libraries and using the resulting binaries to speed up video encoding/decoding.įFmpeg supports following functionality accelerated by video hardware on NVIDIA GPUs:
