Clément Bœsch
blog.pkh.me · Personal blog · on HN since 2012
Clément Bœsch, an FFmpeg developer, writes about video tools, GPU shader graphics, text rendering, and low-level programming tricks.
What HN saysHN links his post on the FFmpeg/Libav split in debates over that fork, where commenters discuss its technical and political causes.
39HN people shared it
20linked it in comments
61stories submitted
2.9Kstory points
10 months agolast shared
2012people per year2026
Most-shared posts
- 1The FFmpeg/Libav situation20 people · 158 points · first shared 2012 · 51 comments on HN
- 2High quality GIF with FFmpeg4 people · 483 points · first shared 2015 · 124 comments on HN
- 3Text rendering and effects using GPU-computed distances4 people · 45 points · first shared 2025 · discussion on HN
- 4Figuring out round, floor and ceil with integer division4 people · 5 points · first shared 2022 · discussion on HN
- 5Investigating why Steam started picking a random font3 people · 796 points · first shared 2022 · 166 comments on HN
- 6Perfecting anti-aliasing on signed distance functions3 people · 122 points · first shared 2025 · 21 comments on HN
- 7The current technology is not ready for proper blending3 people · 12 points · first shared 2025 · discussion on HN
- 8A series of tricks and techniques I learned doing tiny GLSL demos2 people · 207 points · first shared 2025 · 26 comments on HN
- 9Sharing everything I could understand about gradient noise2 people · 141 points · first shared 2025 · 8 comments on HN
- 10Deconstructing Bézier Curves2 people · 105 points · first shared 2022 · 35 comments on HN
- 11From Roots to Polynomials2 people · 34 points · first shared 2022 · 17 comments on HN
- 12The most useful math formulas2 people · 11 points · first shared 2021 · discussion on HN
- 13Improving Color Quantization Heuristics2 people · 6 points · first shared 2022 · discussion on HN
- 14GCC undefined behaviors are getting wild2 people · 3 points · first shared 2022 · 2 comments on HN
- 15Fast calculation of the distance to cubic Bezier curves on the GPU1 people · 157 points · first shared 2025 · 33 comments on HN
What HN people wrote when they linked it
stirner · 2018-04-22
When I say libav*, I and most people mean libavformat, libavcodec, libswscale, etc.; the C libraries that form the basis of the command line tool and are widely used elsewhere.
libav (no wildcard) is a fork of FFmpeg that is broadly focused on reducing bloat and cleaning up the API. As such, libav tends to add features more slowly, while FFmpeg generally follows all of libav’s new features and bug fixes as well as its own [1]. Debian was on libav for a while but went back to FFmpeg in 2015 [2].
[1] http://blog.pkh.me/p/13-the-ffmpeg-libav-situation.html
[2] http://news.softpedia.com/news/Debian-Moves-to-FFmpeg-and-Drops-Libav-…
DanBC · 2015-07-31
http://blog.pkh.me/p/13-the-ffmpeg-libav-situation.html
There's probably some great popcorn in mailing lists.
Edit: libav have a big "personal conflict resolution" section here which is another hint:
http://libav.org/about/
vezzy-fnord · 2014-07-28
About time. I'm usually all for forking and variety, but libav truly was an example of those gratuitous and destructive forks that offered no real benefit. Though, ultimately, it was the Debian package maintainers' decision to spread propaganda about ffmpeg being deprecated that was the worst.
As a practical example, I was gridlocked when I tried to compile LightSpark from Git, due to libswresample not being present, nor practically obtainable. Editing it out from cmake, predictably, lead to breakage.
Here's a classic article detailing the situation: http://blog.pkh.me/p/13-the-ffmpeg-libav-situation.html
And from the mpv developers: https://github.com/mpv-player/mpv/wiki/FFmpeg-versus-Libav
quag · 2025-08-29
It sounds like you've got something specific in mind when you say, "modeling". The term modeling is used in a lot of different situations to mean different things. For example, it could mean to make a 3d model in Blender, it could mean to pose for someone to paint you or to take a photo, with databases it's used to mean modeling the data, with statistics it's used to mean finding a way to simply represent and reason about the data (create a model of it).
The things you've listed out make me guess you want to write 2d or 3d image rendering software. Is that right?
If that's the case, there's no substitute for trying to recreate certain algorithms or curves using a language or tool that you're comfortable with. It'll help you build an intuition about how the mathematical object behaves and what problems it solves (and doesn't). All of these approaches were created to solve problems, understanding the theory of it doesn't quite get you there. If you don't have a good place to try out functions, I recommend https://thebookofshaders.com/05/ , https://www.desmos.com/calculator , or https://www.geogebra.org/calculator .
A good place to start is linear interpolation (lerp). It seems dead simple, but it's used extensively to blend two things together (say positions or colors) and the other things you listed are mostly fancier things built on top of linear interpolation.
https://en.wikipedia.org/wiki/Linear_interpolation
For bezier curves and surfaces here are some links I've…
bru · 2016-02-15
> libav [...] promoted as a concerted effort to create a better API
True, but that was biased and unfair. Some developers leveraged their Debian influence to get Debian to switch from ffmpeg to libav, but the technical merits were debatable. In the end, they came back to ffmpeg.
This is mostly a political issue. Software-wise AFAIK ffmpeg has been integrating many changes from libav but the opposite is not true, making IMHO ffmpeg the right choice.
Good article (2012) with in-depth history: http://blog.pkh.me/p/13-the-ffmpeg-libav-situation.html
More recent (2015) short take on the matter, seems pretty biased though: https://github.com/mpv-player/mpv/wiki/FFmpeg-versus-Libav
Wikipedia entry: https://en.wikipedia.org/wiki/Libav#Fork_from_FFmpeg
The github link is on mpv wiki. mpv is a descendant of mplayer and mplayer2 (the latter being mostly dead). IMHO mpv is the best media player for any OS (lightweight, snappy, reads everything, better options and CLI than mplayer*, etc.).
dllu · 2025-12-27
When converting video to gif, I always use palettegen, e.g.
ffmpeg -i input.mp4 -filter_complex "fps=15,scale=640:-2:flags=lanczos,split[a][b];[a]palettegen=reserve_transparent=off[p];[b][p]paletteuse=dither=sierra2_4a" -loop 0 output.gif
See also: this blog post from 10 years ago [1]
[1] https://blog.pkh.me/p/21-high-quality-gif-with-ffmpeg.html
hitekker · 2025-11-02
I'm not sure if Kostya's account is truthful. He has a huge axe to grind against ffmpeg https://blog.pkh.me/p/13-the-ffmpeg-libav-situation.html
IIRC, his "LibAV" fork was malicious and his people lied a lot to the community ("ffmpeg is now deprecated!"). Ultimately, they failed, but I see a lot of their rhetoric and resentment in Kostya's post today.
syockit · 2025-08-23
Brings back memories. There was a time when the fork, libav, became the default on Ubuntu, and ffmpeg commands would say "this command is no longer maintained" or so. That was where I learned that there was a fork, and I thought ffmpeg was going to die as a result because there was heavy development activity on libav compared to ffmpeg initially. Surprise, ffmpeg outlived its fork!
This post talks about the situation back then: https://blog.pkh.me/p/13-the-ffmpeg-libav-situation.html
AndyKelley · 2024-01-02
Indeed, the Zig build system includes a package manager. Fetching, configuration, compilation, and installation are all 1 command:
zig build Furthermore, C and C++ code can participate in the Zig package ecosystem. For example, here is ffmpeg packaged for consumption by a Zig project:
https://github.com/andrewrk/ffmpeg
Why not use a system package? Well, because the user's system might not have such a package. They might be on Windows, for example. Or their package might be out of date. [Or the system might have chosen sides in a nasty fork war](http://blog.pkh.me/p/13-the-ffmpeg-libav-situation.html).
So, while system packages are nice for end users, they might not always satisfy the needs of upstream application developers.
meinersbur · 2023-05-30
libav was the fork [1], and libav is dead now [2,3] (and many developers returned to ffmpeg).
libav was forced to rename their project because Fabrice Bellard, still owner of the trademark and the ffmpeg.org domain, did not hand it over. ffmpeg put in much effort retain compatibility with libav, mostly by merging all their changes wholesale, while libav ignored ffmpeg, including and most crucially, their security fixes [4].
[1] http://blog.pkh.me/p/13-the-ffmpeg-libav-situation.html
[2] https://www.libav.org/
[3] https://www.phoronix.com/news/FFmpeg-Back-In-Debian
[4] https://j00ru.vexillium.org/2014/01/ffmpeg-and-the-tale-of-a-thousand-…
ux · 2022-04-03
I wrote something similar a while back: http://blog.pkh.me/p/15-the-music-classifying-nightmare.html
jorvi · 2019-08-06
If you check this link[0] you can see most of your statement about FFmpeg merging everything and Libav being all about clean code is just completely false. Apparently lots of hardcoding and weird NIH on the Libav side, and a biased Ubuntu package maintainer to boot.
[0] http://blog.pkh.me/p/13-the-ffmpeg-libav-situation.html
ktta · 2017-06-05
Doesn't ffmpeg have a reputation for bad code merge practices? I've heard libav[1], a fork of ffmpeg has much better focus on code quality. Note that ffmpeg frequently merges any new code from libav. So ffmpeg is almost a superset of the both.
For anyone wondering why this is, here is a good explanation.[2]
[1]:https://www.libav.org/
[2]:http://blog.pkh.me/p/13-the-ffmpeg-libav-situation.html
Karunamon · 2016-03-10
forking of a community is absolutely deadly
Could you expand on this a bit? I imagine it depends on who "deadly" applies to, but forking is just one of the ways centralized decision makers who are, erm.. not making very good decisions can be worked around.
Look at what happened to ffmepg/libav - by any analysis, the fork resulted in better software:
http://blog.pkh.me/p/13-the-ffmpeg-libav-situation.html
kuschku · 2015-12-03
It’s very complicated there, too, though.
As this article [1] shows, even with animated gifs you have often unstable dithering with artifacts somewhere in the image.
[1] http://blog.pkh.me/p/21-high-quality-gif-with-ffmpeg.html
Intermernet · 2015-07-31
Some info: http://blog.pkh.me/p/13-the-ffmpeg-libav-situation.html
There are more links in that post to fill you in on the details.
ank_the_elder · 2015-07-26
The fork happened for human reasons (management-related) rather than technical. See http://blog.pkh.me/p/13-the-ffmpeg-libav-situation.html and http://lwn.net/Articles/423703/
dtech · 2015-07-25
Also, according to a ffmpeg contributor [1] (who joined after the schism) they just refused to merge anything by ffmpeg, often doing identical functionality from scratch (because users wanted it after seeing it in ffmpeg).
Meanwhile ffmpeg merged basically everything from libav.
Furthermore ffmpeg made an effort to provide compatibility, even for stuff where libav intentionally broke compatibility.
So basically ffmpeg benefitted from all the work put into libav but not the other way around. Seems to me that they brought this upon themselves.
[1]: http://blog.pkh.me/p/13-the-ffmpeg-libav-situation.html
birkbork · 2014-07-28
The reality is not like you describe it.
The debian package maintainer of ffmpeg was/is one of the libav guys and decided to replace ffmpeg with libav.
Judging by several frustrated comments in this thread, it has obviously been a hurtful decision.
There are a few writeups of the situation on the web, here's one:
http://blog.pkh.me/p/13-the-ffmpeg-libav-situation.html
neeee · 2013-11-16
No, check out http://blog.pkh.me/p/13-the-ffmpeg-libav-situation.html.
While Libav left with the server, bug tracker, etc., the FFmpeg project was restoring itself, with the help of some VideoLAN people (the FFmpeg sources are now hosted on git.videolan.org). Michael also started to merge the Libav changes back into FFmpeg every 1-2 day, with a lot of forgotten, previously rejected, sometimes controversial features, or in stand-by such as ffmpeg-mt.
The main point here is that the fork stimulated the competition, and FFmpeg became a way better (IMHO) and more complete project. Also, I must say the leader's attitude completely changed, in a very good way. This is certainly one of the most positive thing that came out of that war.