Question about FFMPEG inclusion in the new Docker image

My understanding as to why FFMPEG isn’t included in ROCK installations and must be installed separately is because it’d be expensive to pay for the appropriate licenses to distribute it. But, in the Dockerfile for the new Roon Server version, it’s doing the following:

RUN curl -L -o /tmp/ffmpeg.tar.xz https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz \
 && tar xf /tmp/ffmpeg.tar.xz --wildcards -C /tmp "ffmpeg*/ffmpeg" \
 && mv /tmp/ffmpeg-*/ffmpeg /usr/local/bin/ \
 && rm -rf /tmp/ffmpeg*

Is that . . . intended? If so, is there any chance that we might see a ROCK image at some point with FFMPEG included?

1 Like

Paging @Stephen

I think there is a subtle difference. The Docker image is entirely open and subject to GPL. It is simply a Debian container prepared for Roon, which isn’t distributed in the image.

In contrast, Roon OS is closed source, and LGPL likely applies, and places some restrictions on commercial distribution.

The GPL (and LGPL) just relate to linking against source code. Calling a binary built from GPL or LGPL code doesn’t mean the calling code has to also be distributed under the same terms. AGPL is where things get a bit odd here (since it also covers things making network requests to an AGPL-licensed application), but FFMPEG doesn’t use that.

As far as commercial distribution, the GPL says nothing about that, and there are a number of examples of closed-source applications including FFMPEG. Plex is one such example. How they navigated it was forking FFMPEG back in 2012 and then only compiling in codecs not subject to patent restrictions and patent-encumbered code that they’d licensed. This obviously created a maintenance burden, but that’s the route they decided to take.

But, it’s the patent issues that cause headaches with using FFMPEG in commercial products (which they mention at the bottom of their legal FAQ). They support everything under the sun, but there are companies that have patents covering parts of some of the codecs that FFMPEG implements, and navigating getting licenses from patent licensing pools to cover what somebody might want to do with it is a huge pain (I’ve had to do this for work before).

That’s why I’m surprised at FFMPEG being officially distributed with Roon in the Docker image. I would have expected it to have a mount that requires the user to drop an FFMPEG binary there, similar to the ROCK setup process. I’m hoping that means that the team is comfortable with the inclusion here (and, if so, potentially add it to the ROCK image to make things easier for newer users; just copying a binary over is pretty easy as is, but it’s always nice to improve the user experience when possible to do so).

1 Like

So, is your suggestion that Roon OS downloads and installs FFmpeg on first install instead of distributing it?

Roon only needs FFmpeg for AAC and MP3 playback. Only MP3 has licensing implications in commercial use.

But that wasn’t my point. It’s that Roon OS is distributed commercial software, but the Docker image not.

AFAIK is neither of the two distributed with(in) the Docker image – both get downloaded and installed by the user running the image for the first time.

I’m going to cowardly step away from this conversation :wink:

But, as far as the docker image we aren’t shipping the ffmpeg stuff. It downloads it for you.

Just wondering then why ROCK can’t also download it. It’s ok if you don’t want to answer. Maybe in RoonOS 3.0 :wink:

I don’t really have anything to do with the RoonOS side so I can’t really comment on it, but I did pass this message along :slight_smile:

3 Likes