[Libav-user] Getting to grips with ffmpeg

Andrey Utkin andrey.krieger.utkin at gmail.com
Sat Feb 4 20:38:48 CET 2012

2012/2/4 John Dexter <jdxsolutions at gmail.com>:
> Hello all,
> I develop software (C++ using wxWidgets for Mac and Windows) which does 3D
> rendering (using Ogre3D) and we want to allow users to record a video as
> they work. ffmpeg was recommended in a couple of places but to be honest, it
> looks quite big and scary so before committing to using it, I have two
> starter questions I hope you can help me with...

I also was scary about it when started (a year ago). But now i can say
that i didn't find any (opensource or proprietary) libraries that are
so mature and widely functional as ffmpeg libs. This project looks #1
in automated audio\video processing for me :)

> 1. How hard is it to learn to use the library to programatically create
> videos where each frame is basically just a 2D texture? Do I have to learn a
> lot about the library or can I "just use it" with a handful of API calls? I
> know it's a subjective question, but when you were noobs how easy was it to
> get started?

It's hard if you don't know anything about structure of media files.
It's easy "just to use it" when you have learned that.
There're some code examples - in sources tree, and elsewhere.
Documentation is mostly inside includable headers.

> 2. I had some concerns reading about the legal side, GPL and LGPL. Our
> software is totally closed source and while we use LGPL libraries, it
> sounded like some parts of ffmpeg are GPL-only. Will this realistically
> affect me

I'm not keen on that, so i skip this question. Sorry.

> 3. codecs. As a user of various video-conversion tools, I have always found
> them confusing and awkward. How does ffmpeg handle them - will my users have
> to install codecs (or rely on my app doing so for them through an installer
> script), or do you take the approach of bundling codecs so my users can just
> unzip my app onto their PC and it works?

You have to compile ffmpeg libs by yourself, all codecs are be compiled into it.
Then just distribute libs with your application. Or link it statically
into your app.
(Of course, if you're allowed to do it all, with respect to license terms.)
On linux it is possible also to rely on libs installed by distro's
packaging system.

Andrey Utkin

More information about the Libav-user mailing list