JetPack 7 / R39.2.1: NVIDIA ffmpeg 8.0.1-nvidia1 overwrites Ubuntu libav*-dev files and lacks swscale/basic codecs

Environment

  • Board: Jetson Orin Nano Engineering Reference Developer Kit Super
  • L4T: R39.2.1 (GCID 46758480, Aug 7 2026)
  • OS: Ubuntu 24.04.5 LTS (aarch64)
  • Package: ffmpeg 7:8.0.1-nvidia1 from https://repo.download.nvidia.com/jetson/ffmpeg r39.2/main
    (wins over Ubuntu’s 7:6.1.1-3ubuntu5 because of the default nvidia-repo-pin at priority 600)

Issue 1: The package takes over Ubuntu’s FFmpeg dev files without declaring a conflict

The ffmpeg package is monolithic. It ships libavcodec.so.62, libavformat.so.62, libavutil.so.60, etc., plus the headers, the .so dev symlinks and the pkgconfig files. Its control fields are:

  Provides: libavcodec-dev, libavformat-dev, libavutil-dev, libswresample-dev, libswscale-dev, ... (= 7:8.0.1-0ubuntu0.24.04.1)
  Replaces: (same list)
  Conflicts: (none)

Ubuntu’s 6.1 -dev packages stay installed (JetPack pulls them in through nvidia-opencv → libopencv), but dpkg silently hands their files over to ffmpeg. The result is a mixed development environment:

  $ dpkg -S /usr/include/aarch64-linux-gnu/libavcodec/avcodec.h   -> ffmpeg          (8.0)
  $ dpkg -S /usr/lib/aarch64-linux-gnu/libavcodec.so              -> ffmpeg          (so.62)
  $ dpkg -S /usr/lib/aarch64-linux-gnu/libswscale.so              -> libswscale-dev  (6.1, so.7)

  $ pkg-config --modversion libavcodec libavutil libswscale libpostproc
  62.11.100   # 8.0
  60.8.100    # 8.0
  7.5.100     # 6.1
  57.3.100    # 6.1

Anything built against FFmpeg on the device (OpenCV from source, PyAV, custom apps) compiles against 8.0 headers but links 6.1 libswscale, which pulls in libavutil.so.58. So one process loads both libavutil.so.58 and libavutil.so.60. Removing the NVIDIA package also leaves the Ubuntu -dev packages without their headers until they are reinstalled with --reinstall.

Request: split the package the way Debian does (libavcodec62, libavcodec-dev, … as separate packages), or add proper Conflicts/Breaks against the Ubuntu -dev packages. Alternatively, install into a separate prefix such as /opt/nvidia/ffmpeg.

Issue 2: Very limited build common workflows fail

Configure line (excerpt):

  --disable-everything --disable-gpl --disable-nonfree --disable-version3
  --disable-swscale --disable-network --disable-autodetect --disable-cuda-nvcc
  --enable-protocol='file,pipe' ...

Tested on the device:

Feature Result
scale filter / libswscale missing. Any pixel format conversion fails: 'scale' filter not present, cannot convert formats
Software H.264/HEVC decoders missing (only *_nvv4l2dec / *_cuvid)
AAC / MP3 missing
Protocols (http, https, rtsp, rtmp, udp, tcp) missing: Protocol not found
lavfi input, v4l2 input device missing
scale_cuda, overlay_cuda listed in --enable-filter but not in the build (probably because of --disable-cuda-nvcc)

Example:

  ffmpeg -f rawvideo -pix_fmt yuv420p -s 640x480 -i /dev/zero -frames:v 5 -c:v mjpeg out.mkv
  -> 'scale' filter not present, cannot convert formats.

RTSP camera ingest, the most common Jetson use case, can’t be done with this build at all.

Issue 3: NVENC encoders are exposed on a board without NVENC

h264_nvenc, hevc_nvenc and av1_nvenc show up in ffmpeg -encoders on the Orin Nano, but they fail with:

  [h264_nvenc] Cannot load libnvidia-encode.so.1
  [h264_nvenc] The minimum required Nvidia driver for nvenc is 570.0 or newer

The Orin Nano has no hardware encoder too.

Questions

  1. Is this FFmpeg package meant only as a minimal hardware-decode tool? If so, can the documentation say so and state the restrictions?
  2. Are there plans to split the package into proper library/dev packages, or to avoid overwriting Ubuntu’s files?
  3. Is there a supported way to get NVIDIA hardware decode together with a full FFmpeg (swscale, network protocols, software codecs) on JetPack 7?

Thanks!

Hi,
We enable hardware decoding in the ffmpeg package. You may download the source code and compile it:
JetPack 7 / L4T R39.2: Request for FFmpeg 8.0.1 NVIDIA source package, build recipe, and redistribution clarification - #5 by DaneLLL

And not to install it to the system, So that you can use the Ubuntu ffmpeg and also our ffmpeg.

Please run the steps to compile and run our ffmpeg:

ffmpeg-8.0.1$ ./configure --enable-nvv4l2dec --enable-libv4l2 --extra-libs="-L/usr/lib/aarch64-linux-gnu/tegra -lnvbufsurface" --extra-cflags="-I /usr/src/jetson_multimedia_api/include/"
ffmpeg-8.0.1$ make
ffmpeg-8.0.1$ ./ffmpeg -c:v h264_nvv4l2dec -i ~/test.mp4 ~/a.yuv

Thanks for the build steps. I can confirm that building from apt source ffmpeg works as a workaround.

However, it doesn’t solve the packaging problem itself:

  1. The ffmpeg 8.0.1-nvidia1 package is installed automatically because of the default /etc/apt/preferences.d/nvidia-repo-pin (priority 600) shipped with JetPack. Users who just run apt install ffmpeg get this package, and it silently replaces files from Ubuntu’s
    libavcodec-dev, libavutil-dev, etc. (Replaces with no Conflicts), which leaves a mixed 8.0/6.1 development environment. Your advice not to install it to the system suggests the package shouldn’t replace Ubuntu’s ffmpeg by default.
  2. A self-compiled binary gets no security or bug-fix updates through apt, so every user has to track releases and rebuild by hand on each device. That’s a heavy burden for fleet deployments.

Could you consider one of the following?

  • Ship it under a separate name/prefix (e.g. nvidia-ffmpeg installed to /opt/nvidia/ffmpeg)
    so it can coexist with Ubuntu’s ffmpeg and still get apt updates, or split it into proper library/-dev packages with correct Conflicts/Breaks, or at least exclude ffmpeg and libav* from the default repo pin, and document that the package is a
    minimal hardware-decode-only build.

Is any of these planned or better solution for a future JetPack release?