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-nvidia1fromhttps://repo.download.nvidia.com/jetson/ffmpeg r39.2/main
(wins over Ubuntu’s7:6.1.1-3ubuntu5because of the defaultnvidia-repo-pinat 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
- Is this FFmpeg package meant only as a minimal hardware-decode tool? If so, can the documentation say so and state the restrictions?
- Are there plans to split the package into proper library/dev packages, or to avoid overwriting Ubuntu’s files?
- Is there a supported way to get NVIDIA hardware decode together with a full FFmpeg (swscale, network protocols, software codecs) on JetPack 7?
Thanks!