[L4T R39.2 / JetPack 7.2.x] ffmpeg 7:8.0.1-nvidia1 regression - RTSP demuxer missing, breaks all RTSP input

Summary

The rebuilt ffmpeg package 7:8.0.1-nvidia1 in the jetson/ffmpeg r39.2 apt repo was built without the RTSP demuxer. As a result, all RTSP input fails and the RTSP demuxer’s options (-rtsp_transport, -user_agent, etc.) are reported as Unrecognized option. The previous build 7:8.0.1-nvidia works correctly. nvidia1 is currently the default apt candidate, so a fresh install or apt upgrade silently breaks all RTSP workflows.

Environment

  • Hardware: Jetson AGX Orin Developer Kit and Jetson Orin NX (reproduced on both)
  • JetPack 7.2 / 7.2.1, L4T R39.2.0, Ubuntu 24.04 (noble), aarch64
  • Repo: https://repo.download.nvidia.com/jetson/ffmpeg r39.2/main
  • Packages present in repo:
    • 7:8.0.1-nvidia — ffmpeg n8.0.1-9-g90b8004959-1ubuntu0.1 (works)
    • 7:8.0.1-nvidia1 — ffmpeg n8.0.1-17-gaecde76799-1ubuntu0.1 (regressed; default candidate)
  • Regression introduced between ~2026-09-06 and 2026-09-14; still present as of 2026-10-10.

Root cause (confirmed)

The RTSP demuxer is absent from the nvidia1 build. ffmpeg -demuxers | grep rtsp:

7:8.0.1-nvidia  (90b8004959):   D   rtsp            RTSP input      <-- present
7:8.0.1-nvidia1 (aecde76799):   (no rtsp entry)                     <-- MISSING

Because -rtsp_transport and -user_agent are AVOptions registered by the RTSP demuxer, removing the demuxer makes the CLI reject those options outright. This points to a build-configuration change in nvidia1 (RTSP demuxer / network support dropped from the configure flags).

Reproduction

sudo apt-get install -y --allow-downgrades ffmpeg=7:8.0.1-nvidia1
ffmpeg -hide_banner -rtsp_transport tcp -f lavfi -i nullsrc -frames 1 -f null -
# -> Unrecognized option 'rtsp_transport'.
#    Error splitting the argument list: Option not found
ffmpeg -hide_banner -user_agent x -f lavfi -i nullsrc -frames 1 -f null -
# -> Unrecognized option 'user_agent'.
ffmpeg -hide_banner -demuxers | grep -i rtsp
# -> (empty; RTSP demuxer missing)

Expected behavior

RTSP demuxer present (as in 7:8.0.1-nvidia); -rtsp_transport/-user_agent accepted; ffmpeg -i rtsp://... ingests normally.

Impact

Breaks every RTSP-based workflow on JetPack 7.2.x — IP-camera capture, NVR software (e.g. Frigate), any -i rtsp://.... Because nvidia1 is the default apt candidate, any new install or apt upgrade that pulls it silently breaks all RTSP with no obvious cause.

Workaround

Pin the previous build (still in the repo):

sudo apt-get install -y ffmpeg=7:8.0.1-nvidia

Request

Please rebuild nvidia1 (or publish an nvidia2) with the RTSP demuxer restored to match 7:8.0.1-nvidia, and/or pull the broken nvidia1 so it is no longer the default candidate.

Hi,
Please refer to the post to build ffmpeg from source:
JetPack 7 / R39.2.1: NVIDIA ffmpeg 8.0.1-nvidia1 overwrites Ubuntu libav*-dev files and lacks swscale/basic codecs - #4 by DaneLLL

We build it with:

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/"

Please check what should be added to the ./configure command for enabling RTSP demuxer.

Thanks @DaneLLL. I compared ffmpeg -buildconf between the two packages in the jetson/ffmpeg r39.2 repo, and the regression is a whole build-configuration change rather than one missing flag:

7:8.0.1-nvidia (works): the full Ubuntu-style configuration — --enable-gpl --enable-gnutls ... with network support and all the default demuxers/protocols enabled. RTSP demuxer, swscale, and the standard codecs are all present.

7:8.0.1-nvidia1 (regressed): switched to a minimal build:

--disable-everything --disable-autodetect --disable-network --disable-swscale
--disable-gpl --disable-nonfree --disable-version3
... then a selective re-enable of only HW codecs + a few file-based demuxers/muxers ...
--enable-protocol='file,pipe'

So --disable-network (together with the stripped demuxer/protocol lists) is what removed the RTSP demuxer, every network protocol (tcp/udp/rtp/http/https), and the -rtsp_transport / -user_agent options. --disable-swscale is what the other report (#384593) is hitting. Note this is not RTSP-specific — the minimal build breaks all network-input and software-scaling workflows, which is why every NVR package (Frigate, etc.) on JP7 fails.

To restore the RTSP demuxer on top of the current minimal config, add:

--enable-network \
--enable-protocol=tcp,udp,rtp,rtcp,http,https,tls,crypto \
--enable-demuxer=rtsp,sdp,rtp \
--enable-muxer=rtp,rtsp \
--enable-gnutls
  • --enable-network is mandatory — the RTSP demuxer cannot be built without it, and it is also what restores -user_agent (an http-protocol option) and every -i http(s):// / rtsp:// input.
  • Enabling the rtsp demuxer auto-selects rtpdec and http_protocol; the explicit --enable-protocol line covers the TCP/UDP/RTP transport plus TLS for HTTPS/ONVIF cameras.
  • --enable-gnutls (or --enable-openssl) is needed for the tls/https protocols.
  • If RTSP audio matters, also enable the aac parser/decoder — it is common in IP-camera streams.

That said, the cleaner fix is to go back to the full configuration used in 8.0.1-nvidia (which already includes RTSP, swscale, and all standard codecs) and simply keep the Jetson additions (--enable-nvv4l2dec --enable-libv4l2 --enable-nvbufsurface plus the tegra / jetson_multimedia_api cflags/ldflags) on top. The minimal build drops far more than RTSP.

For reference, here is the full working 8.0.1-nvidia configuration (from ffmpeg -buildconf):

--prefix=/usr --enable-nonfree --enable-cuda-nvcc --nvcc=/usr/local/cuda/bin/nvcc
--enable-nvv4l2dec --enable-libv4l2 --enable-nvbufsurface
--extra-cflags='-I/usr/local/cuda/include -I/usr/src/jetson_multimedia_api/include/'
--extra-ldflags='-L/usr/local/cuda/lib64 -L/usr/lib/aarch64-linux-gnu/tegra'
--extra-version=1ubuntu0.1 --toolchain=hardened
--libdir=/usr/lib/aarch64-linux-gnu --incdir=/usr/include/aarch64-linux-gnu --arch=arm64
--enable-gpl --disable-stripping --enable-gnutls --enable-ladspa --enable-libaom
--enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio
--enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig
--enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack
--enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt
--enable-libopus --enable-libpulse --enable-librabbitmq --enable-librubberband
--enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt
--enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis
--enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid
--enable-libzimg --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal
--enable-opencl --enable-opengl --enable-sdl2 --enable-pocketsphinx --enable-librsvg
--enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r
--enable-libx264 --enable-shared

Hi,
Thanks for the information. We will check it with our teams. So your use-case should work after you build ffmpeg from source code? Would like to confirm this.

Can we use GitHub - FFmpeg/nv-codec-headers: automatic mirror of https://code.ffmpeg.org/FFmpeg/nv-codec-headers · GitHub and build ffmpeg on Jetson to configure options --enable-ffnvcodec --enable-cuda-nvcc --enable-nvmpi for hardware acceleration (NVENC/NVDEC)?

Hi @user100132
The source code package we supported on Jetson platform is:
JetPack 7 / R39.2.1: NVIDIA ffmpeg 8.0.1-nvidia1 overwrites Ubuntu libav*-dev files and lacks swscale/basic codecs - #4 by DaneLLL

Please download and build the package.

Thanks @DaneLLL.

To confirm the use case — yes, but let me be precise about how I verified it, since I haven’t rebuilt from source myself.

What I’m actually running in production (6 RTSP IP cameras, Frigate NVR, on an AGX Orin and an Orin NX) is the previous packaged build, 7:8.0.1-nvidia, pinned straight from your own repo:

sudo apt-get install -y ffmpeg=7:8.0.1-nvidia

That package already has the RTSP demuxer, swscale, and the standard codecs, and every camera ingests normally. So I can confirm the -nvidia package works end to end; the regression is specific to -nvidia1.

For a from-source build, the configure flags I listed earlier (--enable-network --enable-protocol=tcp,udp,rtp,rtcp,http,https,tls,crypto --enable-demuxer=rtsp,sdp,rtp --enable-muxer=rtp,rtsp --enable-gnutls, on top of your --enable-nvv4l2dec --enable-libv4l2 ... line) will restore RTSP — --enable-network is the mandatory one. I’m happy to build and verify that explicitly if it’s useful, but I haven’t needed to, because the pinned -nvidia package already covers the use case.

One thing I’d gently flag on the resolution, though: building ffmpeg from source isn’t a practical fix for most of the people hitting this. The affected workflows — Frigate and other NVR containers, plain apt installs — pull the Debian package at build/install time; they can’t compile from source per box. And because -nvidia1 is the default apt candidate, every fresh install or apt upgrade silently breaks all RTSP input with no obvious cause.

The clean resolution is on the packaging side: rebuild -nvidia1 (or publish -nvidia2) using the full -nvidia configuration — which already includes RTSP, swscale, and the standard codecs — plus the Jetson additions on top, and/or stop -nvidia1 from being the default candidate until it’s fixed. That restores every affected user transparently, with no source builds required.

Happy to test any rebuilt package you publish — I can run the ffmpeg -demuxers | grep rtsp check plus a live-camera verification on both an AGX Orin and an Orin NX and report back.

Yes I already downloaded and built, just used different configure options. Instead of using v4l2, I’m using standard nvcodec (nvenc/nvdec). Seems working . Just want to hear your opinions about those two methods using hardware acceleration

Hi,
Have checked with our team and we have enabled a minimal set of components in our FFmpeg package to distribute it under the LGPL license.

ubuntu@jetson:~/ronak$ ffmpeg -L
ffmpeg version n8.0.1-13-g54c507910a-1ubuntu0.1 Copyright (c) 2000-2025 the FFmpeg developers
  built with gcc 13 (Ubuntu 13.3.0-6ubuntu2~24.04.1)
  configuration: --prefix=/usr --enable-shared --disable-static --enable-pic --disable-everything --disable-doc --disable-autodetect --disable-network --disable-gpl --disable-nonfree --disable-version3 --disable-swscale --enable-zlib --enable-ffnvcodec --enable-cuvid --enable-nvenc --enable-nvv4l2dec --enable-libv4l2 --enable-nvbufsurface --disable-nvdec --disable-libnpp --disable-cuda-nvcc --enable-encoder='h264_nvenc,hevc_nvenc,av1_nvenc,nvjpegenc' --enable-encoder='flac,ffv1,ffvhuff,huffyuv,utvideo,magicyuv,vc2,png,mjpeg,qoi,pcm_s16le,pcm_s24le,pcm_f32le,rawvideo' --enable-decoder='h264_cuvid,hevc_cuvid,av1_cuvid,vp8_cuvid,vp9_cuvid,mjpeg_cuvid,mpeg1_cuvid,mpeg2_cuvid,mpeg4_cuvid,vc1_cuvid,nvjpegdec' --enable-decoder='h264_nvv4l2dec,hevc_nvv4l2dec,mpeg2_nvv4l2dec,mpeg4_nvv4l2dec,vp8_nvv4l2dec,vp9_nvv4l2dec' --enable-decoder='vp8,vp9,vp3,theora,opus,vorbis,flac,speex,png,mjpeg,ffv1,ffvhuff,huffyuv,utvideo,magicyuv,qoi,pcm_s16le,pcm_s24le,pcm_f32le,rawvideo' --enable-parser='h264,hevc,av1,vp8,vp9,mjpeg,mpegvideo,mpeg4video,vc1,opus,vorbis,flac' --enable-bsf='h264_mp4toannexb,hevc_mp4toannexb,av1_frame_merge,extract_extradata,mpeg4_unpack_bframes,null,av1_frame_split,vp9_superframe,vp9_superframe_split' --enable-filter='scale_cuda,overlay_cuda,yadif_cuda,bwdif_cuda,hwupload_cuda,pad_cuda,transpose_cuda,hwupload_nvbufsurface,nvbufsurftransform' --enable-filter='hwupload,hwdownload,hwmap,format,fps,setpts,null,copy,trim,settb,aresample' --enable-demuxer='mov,matroska,h264,hevc,av1,obu,ivf,ogg,flac,wav,image2,avi,asf,mpegts,mpegps,mpegvideo,rawvideo,mjpeg,m4v' --enable-muxer='mp4,mov,matroska,webm,ogg,flac,wav,image2,null,rawvideo,mjpeg,h264,hevc,obu,ivf,m4v,mpeg2video,avi,mpegts' --enable-protocol='file,pipe' --enable-libopus --enable-encoder=libopus --enable-decoder=libopus --enable-libvorbis --enable-encoder=libvorbis --enable-decoder=libvorbis --extra-cflags='-I/usr/local/cuda/include -I/usr/src/jetson_multimedia_api/include/' --extra-ldflags='-L/usr/local/cuda/lib64 -L/usr/lib/aarch64-linux-gnu/tegra' --extra-version=1ubuntu0.1 --toolchain=hardened --libdir=/usr/lib/aarch64-linux-gnu --incdir=/usr/include/aarch64-linux-gnu --arch=arm64
  libavutil      60.  8.100 / 60.  8.100
  libavcodec     62. 11.100 / 62. 11.100
  libavformat    62.  3.100 / 62.  3.100
  libavdevice    62.  1.100 / 62.  1.100
  libavfilter    11.  4.100 / 11.  4.100
  libswresample   6.  1.100 /  6.  1.100
ffmpeg is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.

ffmpeg is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with ffmpeg; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
ubuntu@jetson:~/ronak$
ubuntu@jetson:~/ronak$
ubuntu@jetson:~/ronak$ ffmpeg -buildconf
ffmpeg version n8.0.1-13-g54c507910a-1ubuntu0.1 Copyright (c) 2000-2025 the FFmpeg developers
  built with gcc 13 (Ubuntu 13.3.0-6ubuntu2~24.04.1)
  configuration: --prefix=/usr --enable-shared --disable-static --enable-pic --disable-everything --disable-doc --disable-autodetect --disable-network --disable-gpl --disable-nonfree --disable-version3 --disable-swscale --enable-zlib --enable-ffnvcodec --enable-cuvid --enable-nvenc --enable-nvv4l2dec --enable-libv4l2 --enable-nvbufsurface --disable-nvdec --disable-libnpp --disable-cuda-nvcc --enable-encoder='h264_nvenc,hevc_nvenc,av1_nvenc,nvjpegenc' --enable-encoder='flac,ffv1,ffvhuff,huffyuv,utvideo,magicyuv,vc2,png,mjpeg,qoi,pcm_s16le,pcm_s24le,pcm_f32le,rawvideo' --enable-decoder='h264_cuvid,hevc_cuvid,av1_cuvid,vp8_cuvid,vp9_cuvid,mjpeg_cuvid,mpeg1_cuvid,mpeg2_cuvid,mpeg4_cuvid,vc1_cuvid,nvjpegdec' --enable-decoder='h264_nvv4l2dec,hevc_nvv4l2dec,mpeg2_nvv4l2dec,mpeg4_nvv4l2dec,vp8_nvv4l2dec,vp9_nvv4l2dec' --enable-decoder='vp8,vp9,vp3,theora,opus,vorbis,flac,speex,png,mjpeg,ffv1,ffvhuff,huffyuv,utvideo,magicyuv,qoi,pcm_s16le,pcm_s24le,pcm_f32le,rawvideo' --enable-parser='h264,hevc,av1,vp8,vp9,mjpeg,mpegvideo,mpeg4video,vc1,opus,vorbis,flac' --enable-bsf='h264_mp4toannexb,hevc_mp4toannexb,av1_frame_merge,extract_extradata,mpeg4_unpack_bframes,null,av1_frame_split,vp9_superframe,vp9_superframe_split' --enable-filter='scale_cuda,overlay_cuda,yadif_cuda,bwdif_cuda,hwupload_cuda,pad_cuda,transpose_cuda,hwupload_nvbufsurface,nvbufsurftransform' --enable-filter='hwupload,hwdownload,hwmap,format,fps,setpts,null,copy,trim,settb,aresample' --enable-demuxer='mov,matroska,h264,hevc,av1,obu,ivf,ogg,flac,wav,image2,avi,asf,mpegts,mpegps,mpegvideo,rawvideo,mjpeg,m4v' --enable-muxer='mp4,mov,matroska,webm,ogg,flac,wav,image2,null,rawvideo,mjpeg,h264,hevc,obu,ivf,m4v,mpeg2video,avi,mpegts' --enable-protocol='file,pipe' --enable-libopus --enable-encoder=libopus --enable-decoder=libopus --enable-libvorbis --enable-encoder=libvorbis --enable-decoder=libvorbis --extra-cflags='-I/usr/local/cuda/include -I/usr/src/jetson_multimedia_api/include/' --extra-ldflags='-L/usr/local/cuda/lib64 -L/usr/lib/aarch64-linux-gnu/tegra' --extra-version=1ubuntu0.1 --toolchain=hardened --libdir=/usr/lib/aarch64-linux-gnu --incdir=/usr/include/aarch64-linux-gnu --arch=arm64
  libavutil      60.  8.100 / 60.  8.100
  libavcodec     62. 11.100 / 62. 11.100
  libavformat    62.  3.100 / 62.  3.100
  libavdevice    62.  1.100 / 62.  1.100
  libavfilter    11.  4.100 / 11.  4.100
  libswresample   6.  1.100 /  6.  1.100

  configuration:
    --prefix=/usr
    --enable-shared
    --disable-static
    --enable-pic
    --disable-everything
    --disable-doc
    --disable-autodetect
    --disable-network
    --disable-gpl
    --disable-nonfree
    --disable-version3
    --disable-swscale
    --enable-zlib
    --enable-ffnvcodec
    --enable-cuvid
    --enable-nvenc
    --enable-nvv4l2dec
    --enable-libv4l2
    --enable-nvbufsurface
    --disable-nvdec
    --disable-libnpp
    --disable-cuda-nvcc
    --enable-encoder='h264_nvenc,hevc_nvenc,av1_nvenc,nvjpegenc'
    --enable-encoder='flac,ffv1,ffvhuff,huffyuv,utvideo,magicyuv,vc2,png,mjpeg,qoi,pcm_s16le,pcm_s24le,pcm_f32le,rawvideo'
    --enable-decoder='h264_cuvid,hevc_cuvid,av1_cuvid,vp8_cuvid,vp9_cuvid,mjpeg_cuvid,mpeg1_cuvid,mpeg2_cuvid,mpeg4_cuvid,vc1_cuvid,nvjpegdec'
    --enable-decoder='h264_nvv4l2dec,hevc_nvv4l2dec,mpeg2_nvv4l2dec,mpeg4_nvv4l2dec,vp8_nvv4l2dec,vp9_nvv4l2dec'
    --enable-decoder='vp8,vp9,vp3,theora,opus,vorbis,flac,speex,png,mjpeg,ffv1,ffvhuff,huffyuv,utvideo,magicyuv,qoi,pcm_s16le,pcm_s24le,pcm_f32le,rawvideo'
    --enable-parser='h264,hevc,av1,vp8,vp9,mjpeg,mpegvideo,mpeg4video,vc1,opus,vorbis,flac'
    --enable-bsf='h264_mp4toannexb,hevc_mp4toannexb,av1_frame_merge,extract_extradata,mpeg4_unpack_bframes,null,av1_frame_split,vp9_superframe,vp9_superframe_split'
    --enable-filter='scale_cuda,overlay_cuda,yadif_cuda,bwdif_cuda,hwupload_cuda,pad_cuda,transpose_cuda,hwupload_nvbufsurface,nvbufsurftransform'
    --enable-filter='hwupload,hwdownload,hwmap,format,fps,setpts,null,copy,trim,settb,aresample'
    --enable-demuxer='mov,matroska,h264,hevc,av1,obu,ivf,ogg,flac,wav,image2,avi,asf,mpegts,mpegps,mpegvideo,rawvideo,mjpeg,m4v'
    --enable-muxer='mp4,mov,matroska,webm,ogg,flac,wav,image2,null,rawvideo,mjpeg,h264,hevc,obu,ivf,m4v,mpeg2video,avi,mpegts'
    --enable-protocol='file,pipe'
    --enable-libopus
    --enable-encoder=libopus
    --enable-decoder=libopus
    --enable-libvorbis
    --enable-encoder=libvorbis
    --enable-decoder=libvorbis
    --extra-cflags='-I/usr/local/cuda/include -I/usr/src/jetson_multimedia_api/include/'
    --extra-ldflags='-L/usr/local/cuda/lib64 -L/usr/lib/aarch64-linux-gnu/tegra'
    --extra-version=1ubuntu0.1
    --toolchain=hardened
    --libdir=/usr/lib/aarch64-linux-gnu
    --incdir=/usr/include/aarch64-linux-gnu
    --arch=arm64

Exiting with exit code 0

Users or customers who need additional components, such as the RTSP demuxer, can download the source package and rebuild FFmpeg with the components required for their use case.

Thanks @DaneLLL — that clears up the intent, and LGPL compliance is a reasonable goal. But I think the RTSP piece can be solved within LGPL, with no one having to build from source:

The RTSP demuxer, the network protocols (tcp/udp/rtp/rtcp/http/https), and swscale are all LGPL in FFmpeg — none of them require --enable-gpl. The components that force GPL are things like x264/x265, libxvid, and the GPL-only filters, and you’ve already disabled those. So an LGPL-only package can still enable:

--enable-network \
--enable-protocol=tcp,udp,rtp,rtcp,http,https,tls,crypto \
--enable-demuxer=rtsp,sdp,rtp \
--enable-muxer=rtp,rtsp \
--enable-swscale --enable-gnutls

and remain fully LGPL (gnutls is LGPLv2.1+, so the tls/https protocols are fine too). --disable-network / --disable-swscale aren’t required for LGPL — they just happen to also remove the RTSP demuxer and software scaling, which is exactly what breaks every NVR / IP-camera workflow on JP7.

If adding those to the shipped package isn’t on the table, could you at least keep 7:8.0.1-nvidia in the jetson/ffmpeg r39.2 repo as the supported path for RTSP users, and make sure the minimal build doesn’t silently become the default apt candidate? Right now a plain apt install ffmpeg / apt upgrade pulls the network-less build and breaks all RTSP input with no obvious cause — that’s the part that costs people the most time to diagnose.

Happy to test either outcome — a rebuilt LGPL package with RTSP enabled, or confirmation that the pin stays available — on both an AGX Orin and an Orin NX, and report back. thx