##
An
ffmpeg and SDL Tutorial
Part 1
Part 2
Part 3
Part 4
Part 5
Part 6
Part 7
Part 8
End
ffmpeg is a wonderful library for creating video applications or even general
purpose utilities. ffmpeg takes care of all the hard work of video processing
by doing all the decoding, encoding, muxing and demuxing for you. This can
make media applications much simpler to write. 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.
The only prolem is that documentation is basically nonexistent. There is a
single tutorial that shows the basics of ffmpeg and auto-generated doxygen
documents. That's it. 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 sample program that comes with ffmpeg called ffplay.
It
is a simple
C program that implements a complete video player using ffmpeg. This tutorial
will begin with
an
updated version of the original tutorial, written by Martin
Bohme (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. In
each tutorial, I'll introduce a new idea (or two) and explain how we implement
it. Each tutorial will have a C file so you can download it, compile it, and
follow along at home. The source files will show you how the real program
works, how we move all the pieces around,
as
well
as
showing you the technical
details that are unimportant to the tutorial. By the time we are finished, we
will have a working video player written
in
less than 1000 lines of code!
In
making the player, we will be using SDL to output the audio and video of
the media file. SDL is
an
excellent cross-platform multimedia library that's
used
in
MPEG playback software, emulators, and many video games.
You
will need
to download and install the SDL development libraries for your system
in
order
to compile the programs
in
this tutorial.