The FFmpeg integration stage snaps

These stage snaps integrate FFmpeg utilities and its libraries to your snap. These can be used by applications that don’t need to compile against FFmpeg libraries but simply calls the commands to do the job.

Variants

Due to the licensing model of FFmpeg, you can only integrate the variant that is compatible with your software’s license, here are the available variants:

core18-lgpl: If your application is LGPL compatible

Usage should be fine with most cases, but some codecs are not available.

core18-gplv2: If your application is GPLv2 compatible

Linking the shipped FFmpeg shared libraries with your GPLv2 incompatible software is a copyright infringement to the GPLv2 FFmpeg components’ authors!

core18-gplv3: If your application is GPLv3 compatible

Linking the shipped FFmpeg shared libraries with your GPLv3 incompatible software is a copyright infringement to the GPLv3 FFmpeg components’ authors!

How to use

Merge the following ffmpeg part definition to your snapcraft yaml file.

parts:
  ffmpeg:
    plugin: nil
    stage-snaps:
    - ffmpeg-_variant_name_

Then, copy & paste the entire stage-packages stanza in each variant’s snapcraft recipe to the ffmpeg part:

(This is required as the FFmpeg stage snaps don’t ship the stage-packages in itself as it will cause file conflicts when the consuming snaps also ships the same stage-packages)

Examples


Happy snapcrafting

Replying to this thread, as it seems to be unused for a while now. I have recreated a ffmpeg content and sdk snap. In a content snap, keeping this licensing isn’t possible(AFAIK). So, I have created this just by taking inspiration from the gnome-sdk. Currently hosted in github,

I would like to have some suggestions regarding this.

3 Likes