Jump to content

FFmpeg: Difference between revisions

From NixOS Wiki
M3vtfbp (talk | contribs)
mNo edit summary
Tags: Mobile edit Mobile web edit
m FFmpeg build information: Remove leftover title from previous change.
 
(6 intermediate revisions by 5 users not shown)
Line 1: Line 1:
Building Ffmpeg with extra functionality. To install the maximum amount of functionality offered by Nix binary repositories, you may install ffmpeg like the following.
Building FFmpeg with extra functionality. To install the maximum amount of functionality offered by Nix binary repositories, you may install ffmpeg like the following.
 
 
  environment.systemPackages = [
    pkgs.ffmpeg-full
  ];


<syntaxhighlight lang="nix">
environment.systemPackages = [
  pkgs.ffmpeg-full
];
</syntaxhighlight>


=== More codecs ===
=== More codecs ===
Adding more functionality to FFmpeg is possible, but it will require compiling on your local system.


Adding more functionality to ffmpeg is possible, but it will require compiling on your local system.
Enabling unfree dependencies allow use of Nvidia features, the FDK AAC decoder, and a lot more. Review build informations to check which flags are enabled by this option:


The Fraunhofer FDK AAC audio codec is said to give superior compression and audio quality to other AAC codecs. To install
<syntaxhighlight lang="nix">
environment.systemPackages = [
  (pkgs.ffmpeg-full.override { withUnfree = true; })
];
</syntaxhighlight>


  environment.systemPackages = [
It is possible to add support for more than one feature at a time. Here are some options disabled by default:
    (pkgs.ffmpeg-full.override { withUnfree = true; })
<syntaxhighlight lang="nix">environment.systemPackages = [
  ];
  (pkgs.ffmpeg-full.override {  
    withUnfree = false; # Allow unfree dependencies (for Nvidia features notably)
    withMetal = false; # Use Metal API on Mac. Unfree and requires manual downloading of files
    withMfx = false; # Hardware acceleration via the deprecated intel-media-sdk/libmfx. Use oneVPL instead (enabled by default) from Intel's oneAPI.
    withTensorflow = false; # Tensorflow dnn backend support (Increases closure size by ~390 MiB)
    withSmallBuild = false; # Prefer binary size to performance.
    withDebug = false; # Build using debug options
  })
];</syntaxhighlight>For more options and overrides, check out the FFmpeg build informations :


It is possible to add support for more than one feature at a time. To add FDK AAC AND OpenGL rendering support
https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/development/libraries/ffmpeg/generic.nix
 
  environment.systemPackages = [
    (pkgs.ffmpeg-full.override { withUnfree = true; withOpenGL = true; })
  ];
 
Using the pattern shown in previous examples, we can set the following options as true (enabled):
 
  withUnfree # Currently only FDK AAC Codec
  withOpenGL # OpenGL rendering support
  withRmtp  # RMTP support
  withTensorflow # Tensorflow dnn backend support


=== Speeding up install ===
=== Speeding up install ===
It's possible to speed up the install. After compiling is finished, a series of generic checks are run. To skip these checks, we need to set doCheck to false. Here is an example of adding FDK AAC support, and skipping post build checks.
It's possible to speed up the install. After compiling is finished, a series of generic checks are run. To skip these checks, we need to set doCheck to false. Here is an example of adding FDK AAC support, and skipping post build checks.
 
<syntaxhighlight lang="nix">
  environment.systemPackages = [
environment.systemPackages = [
    ((pkgs.ffmpeg-full.override { withUnfree = true; }).overrideAttrs (_: { doCheck = false; }))
  ((pkgs.ffmpeg-full.override { withUnfree = true; }).overrideAttrs (_: { doCheck = false; }))
  ];
];
 
</syntaxhighlight>
=== Ffmpeg build information ===
[[Category:Audio]]
 
[[Category:Video]]
https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/development/libraries/ffmpeg/generic.nix

Latest revision as of 13:18, 1 August 2025

Building FFmpeg with extra functionality. To install the maximum amount of functionality offered by Nix binary repositories, you may install ffmpeg like the following.

environment.systemPackages = [
  pkgs.ffmpeg-full
];

More codecs

Adding more functionality to FFmpeg is possible, but it will require compiling on your local system.

Enabling unfree dependencies allow use of Nvidia features, the FDK AAC decoder, and a lot more. Review build informations to check which flags are enabled by this option:

environment.systemPackages = [
  (pkgs.ffmpeg-full.override { withUnfree = true; })
];

It is possible to add support for more than one feature at a time. Here are some options disabled by default:

environment.systemPackages = [
  (pkgs.ffmpeg-full.override { 
    withUnfree = false; # Allow unfree dependencies (for Nvidia features notably)
    withMetal = false; # Use Metal API on Mac. Unfree and requires manual downloading of files
    withMfx = false; # Hardware acceleration via the deprecated intel-media-sdk/libmfx. Use oneVPL instead (enabled by default) from Intel's oneAPI.
    withTensorflow = false; # Tensorflow dnn backend support (Increases closure size by ~390 MiB)
    withSmallBuild = false; # Prefer binary size to performance.
    withDebug = false; # Build using debug options
  })
];

For more options and overrides, check out the FFmpeg build informations :

https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/development/libraries/ffmpeg/generic.nix

Speeding up install

It's possible to speed up the install. After compiling is finished, a series of generic checks are run. To skip these checks, we need to set doCheck to false. Here is an example of adding FDK AAC support, and skipping post build checks.

environment.systemPackages = [
  ((pkgs.ffmpeg-full.override { withUnfree = true; }).overrideAttrs (_: { doCheck = false; }))
];