Nano LLM Studio(OpenVLA, Jetson AI Lab) WebRTC crash: 'sinkpad should not be nullptr' on Jetson Orin (JetPack 6.2 / r36.4.4)

log.txt (196 KB)

Hello,

I am running Jetson AI-Lab openVLA simulation+inference on my Jetson AGX Orin (JetPack 6.2.1 / L4T r36.4.4 / CUDA 12.6).

https://www.jetson-ai-lab.com/openvla.html#inference-simulation

When I open the Studio web interface in my browser, the page loads but as soon as WebRTC tries to start streaming, the application crashes with the following error and I attached log.xtx

ERROR:/opt/jetson-utils/codec/gstEncoder.cpp:876:
static void gstEncoder::onWebsocketMessage(WebRTCPeer*, const char*, size_t, void*):
'sinkpad' should not be nullptr
Fatal Python error: Aborted

What I tried:

  • Installed extra GStreamer packages inside the container (gstreamer1.0-plugins-bad, -good, -ugly, libav, etc.)

  • Installed libnice10, libnice-dev, avahi-utils, libnss-mdns as suggested in other forum posts

  • Tried disabling audio with NANO_STUDIO_WEBRTC=no-audio

  • Also attempted to run with NANO_STUDIO_WEBRTC=disabled

Unfortunately, the error still persists — as soon as WebRTC attempts to initialize, the process crashes with 'sinkpad' should not be nullptr.

Environment:

  • Hardware: Jetson AGX Orin Developer Kit

  • JetPack: 6.2.1 (L4T r36.4.4)

  • Container: dustynv/nano_llm:r36.4.0

  • Command:

    jetson-containers run $(autotag nano_llm) \
      python3 -m nano_llm.studio --load OpenVLA-MimicGen-INT4
    
    

Question:

  • Is this a known issue with Nano LLM Studio WebRTC on JetPack 6.2?

  • Are there additional dependencies or configuration steps required to fix the 'sinkpad should not be nullptr' crash?

  • Would using RTSP/RTP output instead of WebRTC be recommended for now?

Additional observation:
If I do not connect with a browser, the program continues to run normally and the log shows frames increasing (e.g., frame=100, 110, 120, ...). The crash only happens after opening the Studio web interface, when WebRTC starts.


[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> fakesink0
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> pipeline0
13:48:40 | INFO | MimicGen | task=Stack_D2  episode=1  frame=10
13:48:43 | INFO | MimicGen | task=Stack_D2  episode=1  frame=20
13:48:47 | INFO | MimicGen | task=Stack_D2  episode=1  frame=30
13:48:50 | INFO | MimicGen | task=Stack_D2  episode=1  frame=40
13:48:53 | INFO | MimicGen | task=Stack_D2  episode=1  frame=50
13:48:57 | INFO | MimicGen | task=Stack_D2  episode=1  frame=60
13:49:00 | INFO | MimicGen | task=Stack_D2  episode=1  frame=70
13:49:03 | INFO | MimicGen | task=Stack_D2  episode=1  frame=80
13:49:07 | INFO | MimicGen | task=Stack_D2  episode=1  frame=90
13:49:10 | INFO | MimicGen | task=Stack_D2  episode=1  frame=100
13:49:14 | INFO | MimicGen | task=Stack_D2  episode=1  frame=110
13:49:17 | INFO | MimicGen | task=Stack_D2  episode=1  frame=120
13:49:20 | INFO | MimicGen | task=Stack_D2  episode=1  frame=130
13:49:24 | INFO | MimicGen | task=Stack_D2  episode=1  frame=140
13:49:27 | INFO | MimicGen | task=Stack_D2  episode=1  frame=150
13:49:30 | INFO | MimicGen | task=Stack_D2  episode=1  frame=160
13:49:34 | INFO | MimicGen | task=Stack_D2  episode=1  frame=170
13:49:37 | INFO | MimicGen | task=Stack_D2  episode=1  frame=180
13:49:40 | INFO | MimicGen | task=Stack_D2  episode=1  frame=190
13:49:44 | INFO | MimicGen | task=Stack_D2  episode=1  frame=200
13:49:47 | INFO | MimicGen | task=Stack_D2  episode=1  frame=210
13:49:50 | INFO | MimicGen | task=Stack_D2  episode=1  frame=220
13:49:54 | INFO | MimicGen | task=Stack_D2  episode=1  frame=230
13:49:57 | INFO | MimicGen | task=Stack_D2  episode=1  frame=240
13:50:00 | INFO | MimicGen | task=Stack_D2  episode=1  frame=250
13:50:04 | INFO | MimicGen | task=Stack_D2  episode=1  frame=260
13:50:07 | INFO | MimicGen | task=Stack_D2  episode=1  frame=270

Any guidance or workaround would be greatly appreciated.

Thank you!

Hi,

Thanks for reporting this.
We will test it and update more info to you.

Thanks.

Continuing the discussion from Nano LLM Studio(OpenVLA, Jetson AI Lab) WebRTC crash: ‘sinkpad should not be nullptr’ on Jetson Orin (JetPack 6.2 / r36.4.4):

Try using container dusty/nano_llm r36.3.0 at least you will get the video. I have lots of problems with

r36.4.4 concerning agent studio

Hopes this helps

Agent Studio.pdf (245.8 KB)

Produced the above using

dustynv/nano_llm r36.3.0 092a0301c196 13 months ago 29.6GB

I have had lots of problems with agent studio and r36.4.0

Hope this helps!

run_r36.3.txt (2.4 MB)

Thanks for your reply.
As you suggested, I tried running NanoLLM with the 36.3 version instead of 36.4.
It seems to start differently compared to when I ran it with 36.4, but now I’m hitting a new error:

CUDA error: the provided PTX was compiled with an unsupported toolchain.
Fatal Python error: Aborted

Do you know why this might be happening? (I attached log)

17:28:03 | INFO | mm_projector weights:  dict_keys(['fc1.bias', 'fc1.weight', 'fc2.bias', 'fc2.weight', 'fc3.bias', 'fc3.weight'])
17:28:03 | INFO | using chat template 'openvla' for model openvla-7b-mimicgen
17:28:03 | INFO | model 'openvla-7b-mimicgen', chat template 'openvla' stop tokens:  ['</s>'] -> [2]
CUDA error: the provided PTX was compiled with an unsupported toolchain.
Fatal Python error: Aborted

Current thread 0x0000fffe1d90f100 (most recent call first):
  File "/opt/NanoLLM/nano_llm/models/mlc.py", line 436 in prefill
  File "/opt/NanoLLM/nano_llm/models/mlc.py", line 442 in _generate
  File "/opt/NanoLLM/nano_llm/models/mlc.py", line 538 in _run
  File "/usr/lib/python3.10/threading.py", line 953 in run
  File "/usr/lib/python3.10/threading.py", line 1016 in _bootstrap_inner
  File "/usr/lib/python3.10/threading.py", line 973 in _bootstrap

Thread 0x0000fffe9ef7f100 (most recent call first):
  File "/usr/lib/python3.10/threading.py", line 324 in wait
  File "/usr/lib/python3.10/threading.py", line 607 in wait
  File "/usr/local/lib/python3.10/dist-packages/tqdm/_monitor.py", line 60 in run
  File "/usr/lib/python3.10/threading.py", line 1016 in _bootstrap_inner
  File "/usr/lib/python3.10/threading.py", line 973 in _bootstrap

Thread 0x0000ffff820e0ca0 (most recent call first):
  File "/usr/lib/python3.10/threading.py", line 320 in wait
  File "/usr/lib/python3.10/threading.py", line 607 in wait
  File "/opt/NanoLLM/nano_llm/chat/stream.py", line 104 in wait
  File "/opt/NanoLLM/nano_llm/models/mlc.py", line 359 in generate
  File "/opt/NanoLLM/nano_llm/vision/vla.py", line 101 in __init__
  File "/opt/NanoLLM/nano_llm/nano_llm.py", line 523 in init_vision
  File "/opt/NanoLLM/nano_llm/nano_llm.py", line 99 in from_pretrained
  File "/opt/NanoLLM/nano_llm/plugins/llm/nano_llm.py", line 62 in __init__
  File "/opt/NanoLLM/nano_llm/plugins/llm/nano_vla.py", line 35 in __init__
  File "/opt/NanoLLM/nano_llm/plugins/dynamic_plugin.py", line 35 in __new__
  File "/opt/NanoLLM/nano_llm/agents/dynamic_agent.py", line 65 in add_plugin
  File "/opt/NanoLLM/nano_llm/agents/dynamic_agent.py", line 241 in set_state_dict
  File "/usr/lib/python3.10/threading.py", line 953 in run
  File "/opt/NanoLLM/nano_llm/agents/dynamic_agent.py", line 207 in set_state_dict
  File "/opt/NanoLLM/nano_llm/agents/dynamic_agent.py", line 350 in load
  File "/opt/NanoLLM/nano_llm/agents/dynamic_agent.py", line 54 in __init__
  File "/opt/NanoLLM/nano_llm/studio.py", line 17 in <module>
  File "/usr/lib/python3.10/runpy.py", line 86 in _run_code
  File "/usr/lib/python3.10/runpy.py", line 196 in _run_module_as_main

Is this still an issue to support? Any result can be shared?

Hi,

We test the WebRTC with dustynv/nano_llm:r36.4.0 and it works correctly.
Our environment is AGX Orin + r36.4.4:

$ jetson-containers run $(autotag nano_llm)

< Copy a test video to /data/sample_720p.mp4 >

root@tegra-ubuntu:~# python3 -m nano_llm.test.video \
        --video-input /data/sample_720p.mp4  \
        --video-output webrtc://@:8554/output
/usr/local/lib/python3.10/dist-packages/transformers/utils/hub.py:124: FutureWarning: Using `TRANSFORMERS_CACHE` is deprecated and will be removed in v5 of Transformers. Use `HF_HOME` instead.
  warnings.warn(
[gstreamer] initialized gstreamer, version 1.20.3.0
[gstreamer] gstDecoder -- creating decoder for /data/sample_720p.mp4
sh: 1: lsmod: not found
sh: 1: modprobe: not found
Opening in BLOCKING MODE 
NvMMLiteOpen : Block : BlockType = 261 
NvMMLiteBlockCreate : Block : BlockType = 261 

(python3:96): GStreamer-CRITICAL **: 09:26:28.002: gst_debug_log_valist: assertion 'category != NULL' failed

(python3:96): GStreamer-CRITICAL **: 09:26:28.002: gst_debug_log_valist: assertion 'category != NULL' failed

(python3:96): GStreamer-CRITICAL **: 09:26:28.002: gst_debug_log_valist: assertion 'category != NULL' failed

(python3:96): GStreamer-CRITICAL **: 09:26:28.002: gst_debug_log_valist: assertion 'category != NULL' failed
[gstreamer] gstDecoder -- discovered video resolution: 1280x720  (framerate 30.000000 Hz)
[gstreamer] gstDecoder -- discovered video caps:  video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, level=(string)3.1, profile=(string)high, width=(int)1280, height=(int)720, framerate=(fraction)30/1, pixel-aspect-ratio=(fraction)1/1, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true
[gstreamer] gstDecoder -- pipeline string:
[gstreamer] filesrc location=/data/sample_720p.mp4 ! qtdemux ! queue ! h264parse ! nvv4l2decoder name=decoder enable-max-performance=1 ! video/x-raw(memory:NVMM) ! nvvidconv name=vidconv ! video/x-raw ! appsink name=mysink
[video]  created gstDecoder from file:///data/sample_720p.mp4
------------------------------------------------
gstDecoder video options:
------------------------------------------------
  -- URI: file:///data/sample_720p.mp4
     - protocol:  file
     - location:  /data/sample_720p.mp4
     - extension: mp4
  -- deviceType: file
  -- ioType:     input
  -- codec:      H264
  -- codecType:  v4l2
  -- width:      1280
  -- height:     720
  -- frameRate:  30
  -- numBuffers: 4
  -- zeroCopy:   true
  -- flipMethod: none
  -- loop:       0
  -- sslCert     /etc/ssl/private/localhost.cert.pem
  -- sslKey      /etc/ssl/private/localhost.key.pem
------------------------------------------------
[gstreamer] gstEncoder -- codec not specified, defaulting to H.264
failed to find/open file /proc/device-tree/model
[gstreamer] gstEncoder -- detected board 'NVIDIA Jetson AGX Orin Developer Kit'
[gstreamer] gstEncoder -- pipeline launch string:
[gstreamer] appsrc name=mysource is-live=true do-timestamp=true format=3 ! nvvidconv name=vidconv ! video/x-raw(memory:NVMM) ! nvv4l2h264enc name=encoder bitrate=4000000 insert-sps-pps=1 insert-vui=1 idrinterval=30 maxperf-enable=1 ! video/x-h264 ! rtph264pay config-interval=1 ! application/x-rtp,media=video,encoding-name=H264,clock-rate=90000,payload=96 ! tee name=videotee ! queue ! fakesink
[webrtc] WebRTC server started @ https://tegra-ubuntu:8554
[webrtc] WebRTC server thread running...
[webrtc] websocket route added /output
[video]  created gstEncoder from webrtc://@:8554/output
------------------------------------------------
gstEncoder video options:
------------------------------------------------
  -- URI: webrtc://@:8554/output
     - protocol:  webrtc
     - location:  0.0.0.0
     - port:      8554
  -- deviceType: ip
  -- ioType:     output
  -- codec:      H264
  -- codecType:  v4l2
  -- frameRate:  30
  -- bitRate:    4000000
  -- numBuffers: 4
  -- zeroCopy:   true
  -- latency     10
  -- sslCert     /etc/ssl/private/localhost.cert.pem
  -- sslKey      /etc/ssl/private/localhost.key.pem
------------------------------------------------
09:26:28 | INFO | plugin | connected VideoSource to on_video on channel 0
09:26:28 | INFO | plugin | connected VideoSource to VideoOutput on channel 0
[gstreamer] opening gstDecoder for streaming, transitioning pipeline to GST_STATE_PLAYING
Opening in BLOCKING MODE 
[gstreamer] gstreamer changed state from NULL to READY ==> mysink
[gstreamer] gstreamer changed state from NULL to READY ==> capsfilter2
[gstreamer] gstreamer changed state from NULL to READY ==> vidconv
[gstreamer] gstreamer changed state from NULL to READY ==> capsfilter1
[gstreamer] gstreamer changed state from NULL to READY ==> decoder
[gstreamer] gstreamer changed state from NULL to READY ==> h264parse1
[gstreamer] gstreamer changed state from NULL to READY ==> queue0
[gstreamer] gstreamer changed state from NULL to READY ==> qtdemux1
[gstreamer] gstreamer changed state from NULL to READY ==> filesrc0
[gstreamer] gstreamer changed state from NULL to READY ==> pipeline0
[gstreamer] gstreamer changed state from READY to PAUSED ==> capsfilter2
[gstreamer] gstreamer changed state from READY to PAUSED ==> vidconv
[gstreamer] gstreamer changed state from READY to PAUSED ==> capsfilter1
[gstreamer] gstreamer changed state from READY to PAUSED ==> decoder
[gstreamer] gstreamer changed state from READY to PAUSED ==> h264parse1
[gstreamer] gstreamer stream status CREATE ==> src
[gstreamer] gstreamer changed state from READY to PAUSED ==> queue0
[gstreamer] gstreamer stream status ENTER ==> src
[gstreamer] gstreamer stream status CREATE ==> sink
[gstreamer] gstreamer changed state from READY to PAUSED ==> qtdemux1
[gstreamer] gstreamer changed state from READY to PAUSED ==> filesrc0
[gstreamer] gstreamer stream status ENTER ==> sink
NvMMLiteOpen : Block : BlockType = 261 
NvMMLiteBlockCreate : Block : BlockType = 261 
[gstreamer] gstreamer message stream-start ==> pipeline0
[gstreamer] gstreamer message duration-changed ==> h264parse1
[gstreamer] gstDecoder -- onPreroll()
[gstreamer] gstreamer stream status CREATE ==> src
[gstreamer] gstreamer stream status ENTER ==> src
[gstreamer] gstreamer mysink taglist, video-codec=(string)"H.264\ /\ AVC", language-code=(string)en, bitrate=(uint)2454874;
[gstreamer] gstreamer mysink taglist, encoder=(string)Lavf57.83.100, container-format=(string)"ISO\ MP4/M4A";
[gstreamer] gstreamer mysink taglist, video-codec=(string)"H.264\ \(High\ Profile\)", language-code=(string)en, bitrate=(uint)2454874;
[gstreamer] gstBufferManager -- map buffer size was less than max size (1382400 vs 1382407)
[gstreamer] gstBufferManager recieve caps:  video/x-raw, width=(int)1280, height=(int)720, interlace-mode=(string)progressive, multiview-mode=(string)mono, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1, nvbuf-memory-type=(string)nvbuf-mem-surface-array, gpu-id=(int)0, format=(string)NV12, colorimetry=(string)bt601
[gstreamer] gstBufferManager -- recieved first frame, codec=H264 format=nv12 width=1280 height=720 size=1382407
[cuda]   allocated 4 ring buffers (1382407 bytes each, 5529628 bytes total)
[cuda]   allocated 4 ring buffers (8 bytes each, 32 bytes total)
[gstreamer] gstreamer changed state from READY to PAUSED ==> mysink
[gstreamer] gstreamer changed state from READY to PAUSED ==> pipeline0
[gstreamer] gstreamer message async-done ==> pipeline0
[gstreamer] gstreamer message latency ==> mysink
[gstreamer] gstreamer message new-clock ==> pipeline0
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> mysink
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> capsfilter2
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> vidconv
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> capsfilter1
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> decoder
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> h264parse1
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> queue0
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> qtdemux1
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> filesrc0
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> pipeline0
[cuda]   allocated 4 ring buffers (2764800 bytes each, 11059200 bytes total)
[cuda]   allocated 2 ring buffers (1382400 bytes each, 2764800 bytes total)
[gstreamer] gstEncoder -- starting pipeline, transitioning to GST_STATE_PLAYING
Opening in BLOCKING MODE 
[gstreamer] gstreamer changed state from NULL to READY ==> fakesink0
[gstreamer] gstreamer changed state from NULL to READY ==> queue1
[gstreamer] gstreamer changed state from NULL to READY ==> videotee
[gstreamer] gstreamer changed state from NULL to READY ==> capsfilter5
[gstreamer] gstreamer changed state from NULL to READY ==> rtph264pay0
[gstreamer] gstreamer changed state from NULL to READY ==> capsfilter4
[gstreamer] gstreamer changed state from NULL to READY ==> encoder
[gstreamer] gstreamer changed state from NULL to READY ==> capsfilter3
[gstreamer] gstreamer changed state from NULL to READY ==> vidconv
[gstreamer] gstreamer changed state from NULL to READY ==> mysource
[gstreamer] gstreamer changed state from NULL to READY ==> pipeline1
[gstreamer] gstreamer stream status CREATE ==> src
[gstreamer] gstreamer changed state from READY to PAUSED ==> queue1
[gstreamer] gstreamer changed state from READY to PAUSED ==> videotee
[gstreamer] gstreamer changed state from READY to PAUSED ==> capsfilter5
[gstreamer] gstreamer changed state from READY to PAUSED ==> rtph264pay0
[gstreamer] gstreamer changed state from READY to PAUSED ==> capsfilter4
[gstreamer] gstreamer changed state from READY to PAUSED ==> encoder
[gstreamer] gstreamer stream status ENTER ==> src
[gstreamer] gstreamer changed state from READY to PAUSED ==> capsfilter3
[gstreamer] gstreamer changed state from READY to PAUSED ==> vidconv
[gstreamer] gstreamer stream status CREATE ==> src
[gstreamer] gstreamer changed state from READY to PAUSED ==> mysource
[gstreamer] gstreamer changed state from READY to PAUSED ==> pipeline1
[gstreamer] gstreamer message new-clock ==> pipeline1
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> queue1
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> videotee
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> capsfilter5
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> rtph264pay0
[gstreamer] gstreamer stream status ENTER ==> src
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> capsfilter4
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> encoder
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> capsfilter3
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> vidconv
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> mysource
[gstreamer] gstEncoder -- new caps: video/x-raw, width=1280, height=720, format=(string)I420, framerate=30/1
NvMMLiteOpen : Block : BlockType = 4 
===== NvVideo: NVENC =====
NvMMLiteBlockCreate : Block : BlockType = 4 
[gstreamer] gstreamer message stream-start ==> pipeline1
[gstreamer] gstreamer message latency ==> encoder
[gstreamer] gstreamer stream status CREATE ==> src
H264: extProfile = 2 Level = 0 
NVMEDIA: Need to set EMC bandwidth : 376000 
NvVideo: bBlitMode is set to TRUE 
[gstreamer] gstreamer stream status ENTER ==> src
[gstreamer] gstreamer changed state from READY to PAUSED ==> fakesink0
[gstreamer] gstreamer message async-done ==> pipeline1
[gstreamer] gstreamer message latency ==> fakesink0
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> fakesink0
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> pipeline1
[gstreamer] gstreamer mysink taglist, video-codec=(string)"H.264\ \(High\ Profile\)", language-code=(string)en, bitrate=(uint)2454874, minimum-bitrate=(uint)7062240, maximum-bitrate=(uint)7062240;
[gstreamer] gstreamer mysink taglist, video-codec=(string)"H.264\ \(High\ Profile\)", language-code=(string)en, bitrate=(uint)2454874, minimum-bitrate=(uint)3430080, maximum-bitrate=(uint)7062240;
[gstreamer] gstreamer mysink taglist, video-codec=(string)"H.264\ \(High\ Profile\)", language-code=(string)en, bitrate=(uint)2454874, minimum-bitrate=(uint)2374800, maximum-bitrate=(uint)7062240;
[gstreamer] gstreamer mysink taglist, video-codec=(string)"H.264\ \(High\ Profile\)", language-code=(string)en, bitrate=(uint)2454874, minimum-bitrate=(uint)2336160, maximum-bitrate=(uint)7062240;
[gstreamer] gstreamer mysink taglist, video-codec=(string)"H.264\ \(High\ Profile\)", language-code=(string)en, bitrate=(uint)2454874, minimum-bitrate=(uint)2261520, maximum-bitrate=(uint)7062240;
[gstreamer] gstreamer mysink taglist, video-codec=(string)"H.264\ \(High\ Profile\)", language-code=(string)en, bitrate=(uint)2454874, minimum-bitrate=(uint)2193600, maximum-bitrate=(uint)7062240;
[gstreamer] gstreamer mysink taglist, video-codec=(string)"H.264\ \(High\ Profile\)", language-code=(string)en, bitrate=(uint)2454874, minimum-bitrate=(uint)2164080, maximum-bitrate=(uint)7062240;
[gstreamer] gstreamer mysink taglist, video-codec=(string)"H.264\ \(High\ Profile\)", language-code=(string)en, bitrate=(uint)2454874, minimum-bitrate=(uint)1883520, maximum-bitrate=(uint)7062240;
[gstreamer] gstreamer mysink taglist, video-codec=(string)"H.264\ \(High\ Profile\)", language-code=(string)en, bitrate=(uint)2454874, minimum-bitrate=(uint)1808400, maximum-bitrate=(uint)7062240;
[gstreamer] gstreamer mysink taglist, video-codec=(string)"H.264\ \(High\ Profile\)", language-code=(string)en, bitrate=(uint)2454874, minimum-bitrate=(uint)1106640, maximum-bitrate=(uint)7062240;
09:26:29 | INFO | captured 25 frames (1280x720) from /data/sample_720p.mp4
[gstreamer] gstreamer mysink taglist, video-codec=(string)"H.264\ \(High\ Profile\)", language-code=(string)en, bitrate=(uint)2454874, minimum-bitrate=(uint)834960, maximum-bitrate=(uint)7062240;
[gstreamer] gstreamer mysink taglist, video-codec=(string)"H.264\ \(High\ Profile\)", language-code=(string)en, bitrate=(uint)2454874, minimum-bitrate=(uint)834960, maximum-bitrate=(uint)8221920;
[gstreamer] gstreamer mysink taglist, video-codec=(string)"H.264\ \(High\ Profile\)", language-code=(string)en, bitrate=(uint)2454874, minimum-bitrate=(uint)496080, maximum-bitrate=(uint)8221920;
[gstreamer] gstreamer mysink taglist, video-codec=(string)"H.264\ \(High\ Profile\)", language-code=(string)en, bitrate=(uint)2454874, minimum-bitrate=(uint)429360, maximum-bitrate=(uint)8221920;
09:26:30 | INFO | captured 50 frames (1280x720) from /data/sample_720p.mp4
09:26:31 | INFO | captured 75 frames (1280x720) from /data/sample_720p.mp4
[gstreamer] gstreamer mysink taglist, video-codec=(string)"H.264\ \(High\ Profile\)", language-code=(string)en, bitrate=(uint)2454874, minimum-bitrate=(uint)429360, maximum-bitrate=(uint)9292320;
[gstreamer] gstreamer mysink taglist, video-codec=(string)"H.264\ \(High\ Profile\)", language-code=(string)en, bitrate=(uint)2454874, minimum-bitrate=(uint)377040, maximum-bitrate=(uint)9292320;
[gstreamer] gstreamer mysink taglist, video-codec=(string)"H.264\ \(High\ Profile\)", language-code=(string)en, bitrate=(uint)2454874, minimum-bitrate=(uint)291600, maximum-bitrate=(uint)9292320;
09:26:32 | INFO | captured 100 frames (1280x720) from /data/sample_720p.mp4
09:26:32 | INFO | captured 125 frames (1280x720) from /data/sample_720p.mp4
[gstreamer] gstreamer mysink taglist, video-codec=(string)"H.264\ \(High\ Profile\)", language-code=(string)en, bitrate=(uint)2454874, minimum-bitrate=(uint)291600, maximum-bitrate=(uint)9820800;
[gstreamer] gstreamer mysink taglist, video-codec=(string)"H.264\ \(High\ Profile\)", language-code=(string)en, bitrate=(uint)2454874, minimum-bitrate=(uint)291600, maximum-bitrate=(uint)12928800;
09:26:33 | INFO | captured 150 frames (1280x720) from /data/sample_720p.mp4
09:26:34 | INFO | captured 175 frames (1280x720) from /data/sample_720p.mp4
09:26:35 | INFO | captured 200 frames (1280x720) from /data/sample_720p.mp4
09:26:36 | INFO | captured 225 frames (1280x720) from /data/sample_720p.mp4
09:26:37 | INFO | captured 250 frames (1280x720) from /data/sample_720p.mp4
[gstreamer] gstreamer mysink taglist, video-codec=(string)"H.264\ \(High\ Profile\)", language-code=(string)en, bitrate=(uint)2454874, minimum-bitrate=(uint)291600, maximum-bitrate=(uint)23253360;
09:26:37 | INFO | captured 275 frames (1280x720) from /data/sample_720p.mp4
09:26:38 | INFO | captured 300 frames (1280x720) from /data/sample_720p.mp4
09:26:39 | INFO | captured 325 frames (1280x720) from /data/sample_720p.mp4
09:26:40 | INFO | captured 350 frames (1280x720) from /data/sample_720p.mp4
09:26:41 | INFO | captured 375 frames (1280x720) from /data/sample_720p.mp4
09:26:42 | INFO | captured 400 frames (1280x720) from /data/sample_720p.mp4
09:26:42 | INFO | captured 425 frames (1280x720) from /data/sample_720p.mp4
09:26:43 | INFO | captured 450 frames (1280x720) from /data/sample_720p.mp4
09:26:44 | INFO | captured 475 frames (1280x720) from /data/sample_720p.mp4
[gstreamer] gstreamer mysink taglist, video-codec=(string)"H.264\ \(High\ Profile\)", language-code=(string)en, bitrate=(uint)2454874, minimum-bitrate=(uint)235920, maximum-bitrate=(uint)23253360;
[gstreamer] gstreamer mysink taglist, video-codec=(string)"H.264\ \(High\ Profile\)", language-code=(string)en, bitrate=(uint)2454874, minimum-bitrate=(uint)221760, maximum-bitrate=(uint)23253360;
09:26:45 | INFO | captured 500 frames (1280x720) from /data/sample_720p.mp4
[gstreamer] gstreamer mysink taglist, video-codec=(string)"H.264\ \(High\ Profile\)", language-code=(string)en, bitrate=(uint)2454874, minimum-bitrate=(uint)221760, maximum-bitrate=(uint)31837920;
09:26:46 | INFO | captured 525 frames (1280x720) from /data/sample_720p.mp4
09:26:47 | INFO | captured 550 frames (1280x720) from /data/sample_720p.mp4
09:26:47 | INFO | captured 575 frames (1280x720) from /data/sample_720p.mp4
09:26:48 | INFO | captured 600 frames (1280x720) from /data/sample_720p.mp4
09:26:49 | INFO | captured 625 frames (1280x720) from /data/sample_720p.mp4
09:26:50 | INFO | captured 650 frames (1280x720) from /data/sample_720p.mp4
09:26:51 | INFO | captured 675 frames (1280x720) from /data/sample_720p.mp4
09:26:52 | INFO | captured 700 frames (1280x720) from /data/sample_720p.mp4
09:26:52 | INFO | captured 725 frames (1280x720) from /data/sample_720p.mp4
09:26:53 | INFO | captured 750 frames (1280x720) from /data/sample_720p.mp4
09:26:54 | INFO | captured 775 frames (1280x720) from /data/sample_720p.mp4
09:26:55 | INFO | captured 800 frames (1280x720) from /data/sample_720p.mp4
09:26:56 | INFO | captured 825 frames (1280x720) from /data/sample_720p.mp4
09:26:57 | INFO | captured 850 frames (1280x720) from /data/sample_720p.mp4
09:26:57 | INFO | captured 875 frames (1280x720) from /data/sample_720p.mp4
...

Thanks.

hi AastaLLL

Tried what you did as follows on (there is a comment between 2 rows of stars futher down this output , also at the bottom there are two command examples one works and other does not.

jetson-containers run $(autotag nano_llm:r36.4.0)

[Warn] Unknown L4T_VERSION: 36.4.7 ££££££££ I KNOW ITS NOT R36.4.4

Namespace(packages=[‘nano_llm:r36.4.0’], prefer=[‘local’, ‘registry’, ‘build’], disable=[‘’], user=‘dustynv’, output=‘/tmp/autotag’, quiet=False, verbose=False)
– L4T_VERSION=36.4.7 JETPACK_VERSION=6.2 CUDA_VERSION=12.6
– Finding compatible container image for [‘nano_llm:r36.4.0’]
dustynv/nano_llm:r36.4.0
V4L2_DEVICES: --device /dev/video0 --device /dev/video1

DISPLAY environmental variable is already set: “:1”

localuser:root being added to access control list

ARM64 architecture detected

Jetson Detected

SYSTEM_ARCH=tegra-aarch64

  • docker run --runtime nvidia --env NVIDIA_DRIVER_CAPABILITIES=compute,utility,graphics -it --rm --network host --shm-size=8g --volume /tmp/argus_socket:/tmp/argus_socket --volume /etc/enctune.conf:/etc/enctune.conf --volume /etc/nv_tegra_release:/etc/nv_tegra_release --volume /tmp/nv_jetson_model:/tmp/nv_jetson_model --volume /var/run/dbus:/var/run/dbus --volume /var/run/avahi-daemon/socket:/var/run/avahi-daemon/socket --volume /var/run/docker.sock:/var/run/docker.sock --volume /home/paul/jetson-containers/data:/data -v /etc/localtime:/etc/localtime:ro -v /etc/timezone:/etc/timezone:ro --device /dev/snd -e PULSE_SERVER=unix:/run/user/1000/pulse/native -v /run/user/1000/pulse:/run/user/1000/pulse --device /dev/bus/usb -e DISPLAY=:1 -v /tmp/.X11-unix/:/tmp/.X11-unix -v /tmp/.docker.xauth:/tmp/.docker.xauth -e XAUTHORITY=/tmp/.docker.xauth --device /dev/video0 --device /dev/video1 --device /dev/i2c-0 --device /dev/i2c-1 --device /dev/i2c-2 --device /dev/i2c-3 --device /dev/i2c-4 --device /dev/i2c-5 --device /dev/i2c-6 --device /dev/i2c-7 --device /dev/i2c-8 --device /dev/i2c-9 -v /run/jtop.sock:/run/jtop.sock --name jetson_container_20251023_163618 dustynv/nano_llm:r36.4.0
    root@orin:/# python3 -m nano_llm.test.video
    –video-input /data/images/party.mp4
    –video-output webrtc://@:8554/output
    /usr/local/lib/python3.10/dist-packages/transformers/utils/hub.py:124: FutureWarning: Using TRANSFORMERS_CACHE is deprecated and will be removed in v5 of Transformers. Use HF_HOME instead.
    warnings.warn(

(gst-plugin-scanner:46): GLib-GObject-WARNING **: 16:37:06.928: cannot register existing type ‘GstRtpSrc’

(gst-plugin-scanner:46): GLib-GObject-CRITICAL **: 16:37:06.928: g_type_add_interface_static: assertion ‘G_TYPE_IS_INSTANTIATABLE (instance_type)’ failed

(gst-plugin-scanner:46): GLib-CRITICAL **: 16:37:06.928: g_once_init_leave: assertion ‘result != 0’ failed

(gst-plugin-scanner:46): GStreamer-CRITICAL **: 16:37:06.928: gst_element_register: assertion ‘g_type_is_a (type, GST_TYPE_ELEMENT)’ failed

(gst-plugin-scanner:46): GLib-GObject-WARNING **: 16:37:06.928: cannot register existing type ‘GstRtpSink’

(gst-plugin-scanner:46): GLib-GObject-CRITICAL **: 16:37:06.928: g_type_add_interface_static: assertion ‘G_TYPE_IS_INSTANTIATABLE (instance_type)’ failed

(gst-plugin-scanner:46): GLib-CRITICAL **: 16:37:06.928: g_once_init_leave: assertion ‘result != 0’ failed

(gst-plugin-scanner:46): GStreamer-CRITICAL **: 16:37:06.928: gst_element_register: assertion ‘g_type_is_a (type, GST_TYPE_ELEMENT)’ failed
sh: 1: lsmod: not found
sh: 1: modprobe: not found
[gstreamer] initialized gstreamer, version 1.20.3.0
[gstreamer] gstDecoder – creating decoder for /data/images/party.mp4
sh: 1: lsmod: not found
sh: 1: modprobe: not found
Opening in BLOCKING MODE
NvMMLiteOpen : Block : BlockType = 261
NvMMLiteBlockCreate : Block : BlockType = 261

(python3:22): GStreamer-CRITICAL **: 16:37:08.416: gst_debug_log_valist: assertion ‘category != NULL’ failed

(python3:22): GStreamer-CRITICAL **: 16:37:08.416: gst_debug_log_valist: assertion ‘category != NULL’ failed

(python3:22): GStreamer-CRITICAL **: 16:37:08.416: gst_debug_log_valist: assertion ‘category != NULL’ failed

(python3:22): GStreamer-CRITICAL **: 16:37:08.416: gst_debug_log_valist: assertion ‘category != NULL’ failed

[gstreamer] gstDecoder – discovered video resolution: 1920x1080 (framerate 30.000000 Hz)
[gstreamer] gstDecoder – discovered video caps: video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, level=(string)4, profile=(string)main, width=(int)1920, height=(int)1080, framerate=(fraction)30/1, pixel-aspect-ratio=(fraction)1/1, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true
[gstreamer] gstDecoder – pipeline string:
[gstreamer] filesrc location=/data/images/party.mp4 ! qtdemux ! queue ! h264parse ! nvv4l2decoder name=decoder enable-max-performance=1 ! video/x-raw(memory:NVMM) ! nvvidconv name=vidconv ! video/x-raw ! appsink name=mysink
[video] created gstDecoder from file:///data/images/party.mp4

gstDecoder video options:

– URI: file:///data/images/party.mp4

  • protocol: file
  • location: /data/images/party.mp4
  • extension: mp4
    – deviceType: file
    – ioType: input
    – codec: H264
    – codecType: v4l2
    – width: 1920
    – height: 1080
    – frameRate: 30
    – numBuffers: 4
    – zeroCopy: true
    – flipMethod: none
    – loop: 0
    – sslCert /etc/ssl/private/localhost.cert.pem
    – sslKey /etc/ssl/private/localhost.key.pem

[gstreamer] gstEncoder – codec not specified, defaulting to H.264

failed to find/open file /proc/device-tree/model
[gstreamer] gstEncoder – detected board ‘NVIDIA Jetson AGX Orin Developer Kit’
[gstreamer] gstEncoder – pipeline launch string:
[gstreamer] appsrc name=mysource is-live=true do-timestamp=true format=3 ! nvvidconv name=vidconv ! video/x-raw(memory:NVMM) ! nvv4l2h264enc name=encoder bitrate=4000000 insert-sps-pps=1 insert-vui=1 idrinterval=30 maxperf-enable=1 ! video/x-h264 ! rtph264pay config-interval=1 ! application/x-rtp,media=video,encoding-name=H264,clock-rate=90000,payload=96 ! tee name=videotee ! queue ! fakesink
[webrtc] WebRTC server started @ https://orin:8554
[webrtc] websocket route added /output
[video] created gstEncoder from webrtc://@:8554/output

gstEncoder video options:

– URI: webrtc://@:8554/output

[webrtc] WebRTC server thread running…

  • protocol: webrtc
  • location: 0.0.0.0
  • port: 8554
    – deviceType: ip
    – ioType: output
    – codec: H264
    – codecType: v4l2
    – frameRate: 30
    – bitRate: 4000000
    – numBuffers: 4
    – zeroCopy: true
    – latency 10
    – sslCert /etc/ssl/private/localhost.cert.pem
    – sslKey /etc/ssl/private/localhost.key.pem

16:37:08 | INFO | plugin | connected VideoSource to on_video on channel 0
16:37:08 | INFO | plugin | connected VideoSource to VideoOutput on channel 0
[gstreamer] opening gstDecoder for streaming, transitioning pipeline to GST_STATE_PLAYING
Opening in BLOCKING MODE
[gstreamer] gstreamer changed state from NULL to READY ==> mysink
[gstreamer] gstreamer changed state from NULL to READY ==> capsfilter2
[gstreamer] gstreamer changed state from NULL to READY ==> vidconv
[gstreamer] gstreaERROR:/opt/jetson-utils/codec/gstEncoder.cpp:876:static void gstEncoder::onWebsocketMessage(WebRTCPeer*, const char*, size_t, void*): ‘sinkpad’ should not be nullptr
Bail out! ERROR:/opt/jetson-utils/codec/gstEncoder.cpp:876:static void gstEncoder::onWebsocketMessage(WebRTCPeer*, const char*, size_t, void*): ‘sinkpad’ should not be nullptrmer changed state from NULL to READY ==> capsfilter1
[gstreamer] gstreamer changed state from NULL to READY ==> decoder
[gstreamer] gstreamer changed state from NULL to READY ==> h264parse1
[gstreamer] gstreamer changed state from NULL to READY ==> queue0
[gstreamer] gstreamer changed state from NULL to READY ==> qtdemux1
[gstreamer] gstreamer changed state from NULL to READY ==> filesrc0
[gstreamer] gstreamer changed state from NULL to READY ==> pipeline0
[gstreamer] gstreamer changed state from READY to PAUSED ==> capsfilter2
[gstreamer] gstreamer changed state from READY to PAUSED ==> vidconv
[gstreamer] gstreamer changed state from READY to PAUSED ==> capsfilter1
[gstreamer] gstreamer changed state from READY to PAUSED ==> decoder
[gstreamer] gstreamer changed state from READY to PAUSED ==> h264parse1
[gstreamer] gstreamer stream status CREATE ==> src
[gstreamer] gstreamer changed state from READY to PAUSED ==> queue0
[gstreamer] gstreamer stream status ENTER ==> src
[gstreamer] gstreamer stream status CREATE ==> sink
[gstreamer] gstreamer changed state from READY to PAUSED ==> qtdemux1
[gstreamer] gstreamer changed state from READY to PAUSED ==> filesrc0
[gstreamer] gstreamer stream status ENTER ==> sink
NvMMLiteOpen : Block : BlockType = 261
NvMMLiteBlockCreate : Block : BlockType = 261
[gstreamer] gstreamer message stream-start ==> pipeline0
[gstreamer] gstreamer message duration-changed ==> h264parse1
[gstreamer] gstDecoder – onPreroll()
[gstreamer] gstreamer stream status CREATE ==> src
[gstreamer] gstreamer stream status ENTER ==> src
[gstreamer] gstreamer mysink taglist, video-codec=(string)“H.264\ /\ AVC”, bitrate=(uint)19009659;
[gstreamer] gstreamer mysink taglist, datetime=(datetime)2014-08-16T18:02:03Z, container-format=(string)“ISO\ MP4/M4A”;
[gstreamer] gstreamer mysink taglist, video-codec=(string)“H.264\ /\ AVC”, bitrate=(uint)19009659;
[gstreamer] gstreamer mysink taglist, video-codec=(string)“H.264\ (Main\ Profile)”, bitrate=(uint)19009659;
[gstreamer] gstBufferManager – map buffer size was less than max size (3110400 vs 3110407)
[gstreamer] gstBufferManager recieve caps: video/x-raw, width=(int)1920, height=(int)1080, interlace-mode=(string)progressive, multiview-mode=(string)mono, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1, nvbuf-memory-type=(string)nvbuf-mem-surface-array, gpu-id=(int)0, format=(string)NV12, colorimetry=(string)bt601
[gstreamer] gstBufferManager – recieved first frame, codec=H264 format=nv12 width=1920 height=1080 size=3110407
[cuda] allocated 4 ring buffers (3110407 bytes each, 12441628 bytes total)
[cuda] allocated 4 ring buffers (8 bytes each, 32 bytes total)
[gstreamer] gstreamer changed state from READY to PAUSED ==> mysink
[gstreamer] gstreamer changed state from READY to PAUSED ==> pipeline0
[gstreamer] gstreamer message async-done ==> pipeline0
[gstreamer] gstreamer message latency ==> mysink
[gstreamer] gstreamer message new-clock ==> pipeline0
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> mysink
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> capsfilter2
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> vidconv
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> capsfilter1
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> decoder
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> h264parse1
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> queue0
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> qtdemux1
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> filesrc0
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> pipeline0
[cuda] allocated 4 ring buffers (6220800 bytes each, 24883200 bytes total)
[cuda] allocated 2 ring buffers (3110400 bytes each, 6220800 bytes total)
[gstreamer] gstEncoder – starting pipeline, transitioning to GST_STATE_PLAYING
Opening in BLOCKING MODE
[gstreamer] gstreamer changed state from NULL to READY ==> fakesink0
[gstreamer] gstreamer changed state from NULL to READY ==> queue1
[gstreamer] gstreamer changed state from NULL to READY ==> videotee
[gstreamer] gstreamer changed state from NULL to READY ==> capsfilter5
[gstreamer] gstreamer changed state from NULL to READY ==> rtph264pay0
[gstreamer] gstreamer changed state from NULL to READY ==> capsfilter4
[gstreamer] gstreamer changed state from NULL to READY ==> encoder
[gstreamer] gstreamer changed state from NULL to READY ==> capsfilter3
[gstreamer] gstreamer changed state from NULL to READY ==> vidconv
[gstreamer] gstreamer changed state from NULL to READY ==> mysource
[gstreamer] gstreamer changed state from NULL to READY ==> pipeline1
[gstreamer] gstreamer stream status CREATE ==> src
[gstreamer] gstreamer changed state from READY to PAUSED ==> queue1
[gstreamer] gstreamer changed state from READY to PAUSED ==> videotee
[gstreamer] gstreamer changed state from READY to PAUSED ==> capsfilter5
[gstreamer] gstreamer stream status ENTER ==> src
[gstreamer] gstreamer changed state from READY to PAUSED ==> rtph264pay0
[gstreamer] gstreamer changed state from READY to PAUSED ==> capsfilter4
[gstreamer] gstreamer changed state from READY to PAUSED ==> encoder
[gstreamer] gstreamer changed state from READY to PAUSED ==> capsfilter3
[gstreamer] gstreamer changed state from READY to PAUSED ==> vidconv
[gstreamer] gstreamer stream status CREATE ==> src
[gstreamer] gstreamer changed state from READY to PAUSED ==> mysource
[gstreamer] gstreamer changed state from READY to PAUSED ==> pipeline1
[gstreamer] gstreamer message new-clock ==> pipeline1
[gstreamer] gstreamer stream status ENTER ==> src
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> queue1
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> videotee
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> capsfilter5
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> rtph264pay0
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> capsfilter4
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> encoder
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> capsfilter3
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> vidconv
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> mysource
[gstreamer] gstEncoder – new caps: video/x-raw, width=1920, height=1080, format=(string)I420, framerate=30/1
NvMMLiteOpen : Block : BlockType = 4
===== NvVideo: NVENC =====
NvMMLiteBlockCreate : Block : BlockType = 4
[gstreamer] gstreamer message stream-start ==> pipeline1
[gstreamer] gstreamer message latency ==> encoder
H264: extProfile = 2 Level = 0
[gstreamer] gstreamer stream status CREATE ==> src
[gstreamer] gstreamer stream status ENTER ==> src
NVMEDIA: Need to set EMC bandwidth : 846000
NvVideo: bBlitMode is set to TRUE
[gstreamer] gstreamer changed state from READY to PAUSED ==> fakesink0
[gstreamer] gstreamer message async-done ==> pipeline1
[gstreamer] gstreamer message latency ==> fakesink0
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> fakesink0
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> pipeline1
[gstreamer] gstreamer mysink taglist, video-codec=(string)“H.264\ (Main\ Profile)”, bitrate=(uint)19009659, minimum-bitrate=(uint)16441680, maximum-bitrate=(uint)16441680;
[gstreamer] gstreamer mysink taglist, video-codec=(string)“H.264\ (Main\ Profile)”, bitrate=(uint)19009659, minimum-bitrate=(uint)16277520, maximum-bitrate=(uint)16441680;
[gstreamer] gstreamer mysink taglist, video-codec=(string)“H.264\ (Main\ Profile)”, bitrate=(uint)19009659, minimum-bitrate=(uint)15774240, maximum-bitrate=(uint)16441680;
[gstreamer] gstreamer mysink taglist, video-codec=(string)“H.264\ (Main\ Profile)”, bitrate=(uint)19009659, minimum-bitrate=(uint)15774240, maximum-bitrate=(uint)16534320;
[gstreamer] gstreamer mysink taglist, video-codec=(string)“H.264\ (Main\ Profile)”, bitrate=(uint)19009659, minimum-bitrate=(uint)15774240, maximum-bitrate=(uint)17225760;
[gstreamer] gstreamer mysink taglist, video-codec=(string)“H.264\ (Main\ Profile)”, bitrate=(uint)19009659, minimum-bitrate=(uint)15774240, maximum-bitrate=(uint)17371440;
[gstreamer] gstreamer mysink taglist, video-codec=(string)“H.264\ (Main\ Profile)”, bitrate=(uint)19009659, minimum-bitrate=(uint)15774240, maximum-bitrate=(uint)17552880;
16:37:09 | INFO | captured 25 frames (1920x1080) from /data/images/party.mp4
[gstreamer] gstreamer mysink taglist, video-codec=(string)“H.264\ (Main\ Profile)”, bitrate=(uint)19009659, minimum-bitrate=(uint)15774240, maximum-bitrate=(uint)18179760;
[gstreamer] gstreamer mysink taglist, video-codec=(string)“H.264\ (Main\ Profile)”, bitrate=(uint)19009659, minimum-bitrate=(uint)15774240, maximum-bitrate=(uint)18200160;
[gstreamer] gstreamer mysink taglist, video-codec=(string)“H.264\ (Main\ Profile)”, bitrate=(uint)19009659, minimum-bitrate=(uint)15774240, maximum-bitrate=(uint)58823760;
[gstreamer] gstreamer mysink taglist, video-codec=(string)“H.264\ (Main\ Profile)”, bitrate=(uint)19009659, minimum-bitrate=(uint)14495040, maximum-bitrate=(uint)58823760;
16:37:10 | INFO | captured 50 frames (1920x1080) from /data/images/party.mp4
16:37:11 | INFO | captured 75 frames (1920x1080) from /data/images/party.mp4
[gstreamer] gstreamer mysink taglist, video-codec=(string)“H.264\ (Main\ Profile)”, bitrate=(uint)19009659, minimum-bitrate=(uint)14470560, maximum-bitrate=(uint)58823760;
16:37:12 | INFO | captured 100 frames (1920x1080) from /data/images/party.mp4
16:37:13 | INFO | captured 125 frames (1920x1080) from /data/images/party.mp4
16:37:13 | INFO | captured 150 frames (1920x1080) from /data/images/party.mp4
16:37:14 | INFO | captured 175 frames (1920x1080) from /data/images/party.mp4
[gstreamer] gstreamer mysink taglist, video-codec=(string)“H.264\ (Main\ Profile)”, bitrate=(uint)19009659, minimum-bitrate=(uint)14373600, maximum-bitrate=(uint)58823760;
16:37:15 | INFO | captured 200 frames (1920x1080) from /data/images/party.mp4
[gstreamer] gstreamer mysink taglist, video-codec=(string)“H.264\ (Main\ Profile)”, bitrate=(uint)19009659, minimum-bitrate=(uint)14256480, maximum-bitrate=(uint)58823760;
[gstreamer] gstreamer mysink taglist, video-codec=(string)“H.264\ (Main\ Profile)”, bitrate=(uint)19009659, minimum-bitrate=(uint)12642960, maximum-bitrate=(uint)58823760;
16:37:16 | INFO | captured 225 frames (1920x1080) from /data/images/party.mp4
16:37:17 | INFO | captured 250 frames (1920x1080) from /data/images/party.mp4
16:37:18 | INFO | captured 275 frames (1920x1080) from /data/images/party.mp4
16:37:18 | INFO | captured 300 frames (1920x1080) from /data/images/party.mp4
16:37:19 | INFO | captured 325 frames (1920x1080) from /data/images/party.mp4
16:37:20 | INFO | captured 350 frames (1920x1080) from /data/images/party.mp4
16:37:21 | INFO | captured 375 frames (1920x1080) from /data/images/party.mp4
16:37:22 | INFO | captured 400 frames (1920x1080) from /data/images/party.mp4
16:37:23 | INFO | captured 425 frames (1920x1080) from /data/images/party.mp4
16:37:23 | INFO | captured 450 frames (1920x1080) from /data/images/party.mp4
16:37:24 | INFO | captured 475 frames (1920x1080) from /data/images/party.mp4
16:37:25 | INFO | captured 500 frames (1920x1080) from /data/images/party.mp4
16:37:26 | INFO | captured 525 frames (1920x1080) from /data/images/party.mp4
16:37:27 | INFO | captured 550 frames (1920x1080) from /data/images/party.mp4
[gstreamer] gstreamer mysink taglist, video-codec=(string)“H.264\ (Main\ Profile)”, bitrate=(uint)19009659, minimum-bitrate=(uint)11967840, maximum-bitrate=(uint)58823760;
16:37:28 | INFO | captured 575 frames (1920x1080) from /data/images/party.mp4
16:37:28 | INFO | captured 600 frames (1920x1080) from /data/images/party.mp4
16:37:29 | INFO | captured 625 frames (1920x1080) from /data/images/party.mp4
16:37:30 | INFO | captured 650 frames (1920x1080) from /data/images/party.mp4
[webrtc] HTTPS 192.168.1.143 GET ‘/’
[webrtc] /
16:37:31 | INFO | captured 675 frames (1920x1080) from /data/images/party.mp4
[webrtc] HTTPS 192.168.1.143 GET ‘/favicon.ico’
[webrtc] /favicon.ico
[webrtc] websocket /output – new connection opened by 192.168.1.143 (peer_id=0)
[webrtc] new WebRTC peer connecting (192.168.1.143, peer_id=0)

********************************************

WHEN TRYING THE WEB BROWSER I GET THE FOLLOWING LINE

*********************************************
ERROR:/opt/jetson-utils/codec/gstEncoder.cpp:876:static void gstEncoder::onWebsocketMessage(WebRTCPeer*, const char*, size_t, void*): ‘sinkpad’ should not be nullptr
Bail out! ERROR:/opt/jetson-utils/codec/gstEncoder.cpp:876:static void gstEncoder::onWebsocketMessage(WebRTCPeer*, const char*, size_t, void*): ‘sinkpad’ should not be nullptr
Fatal Python error: Aborted

Thread 0x0000ffff37e9f120 (most recent call first):
File “/usr/lib/python3.10/threading.py”, line 324 in wait
File “/usr/lib/python3.10/threading.py”, line 607 in wait
File “/opt/NanoLLM/nano_llm/plugin.py”, line 335 in process_inputs
File “/opt/NanoLLM/nano_llm/plugin.py”, line 321 in run
File “/usr/lib/python3.10/threading.py”, line 1016 in _bootstrap_inner
File “/usr/lib/python3.10/threading.py”, line 973 in _bootstrap

Thread 0x0000ffff17abf120 (most recent call first):
File “/opt/NanoLLM/nano_llm/plugins/video/video_source.py”, line 97 in capture
File “/opt/NanoLLM/nano_llm/plugins/video/video_source.py”, line 159 in run
File “/usr/lib/python3.10/threading.py”, line 1016 in _bootstrap_inner
File “/usr/lib/python3.10/threading.py”, line 973 in _bootstrap

Thread 0x0000ffff920336c0 (most recent call first):
File “/usr/lib/python3.10/threading.py”, line 1116 in _wait_for_tstate_lock
File “/usr/lib/python3.10/threading.py”, line 1096 in join
File “/opt/NanoLLM/nano_llm/test/video.py”, line 34 in
File “/usr/lib/python3.10/runpy.py”, line 86 in _run_code
File “/usr/lib/python3.10/runpy.py”, line 196 in _run_module_as_main

Extension modules: numpy.core._multiarray_umath, numpy.core._multiarray_tests, numpy.linalg._umath_linalg, numpy.fft._pocketfft_internal, numpy.random._common, numpy.random.bit_generator, numpy.random._bounded_integers, numpy.random._mt19937, numpy.random.mtrand, numpy.random._philox, numpy.random._pcg64, numpy.random._sfc64, numpy.random._generator, torch._C, torch._C._fft, torch._C._linalg, torch._C._nested, torch._C._nn, torch._C._sparse, torch._C._special, zstandard.backend_c, charset_normalizer.md, yaml._yaml, sentencepiece._sentencepiece, psutil._psutil_linux, psutil._psutil_posix, PIL._imaging, PIL._imagingft, google.protobuf.pyext._message, jetson_utils_python, cuda._lib.utils, cuda._cuda.ccuda, cuda.ccuda, cuda.cuda, cuda._cuda.cnvrtc, cuda.cnvrtc, cuda.nvrtc, cuda._lib.ccudart.utils, cuda._lib.ccudart.ccudart, cuda.ccudart, cuda.cudart, _cffi_backend, pyaudio._portaudio, markupsafe._speedups, websockets.speedups, regex._regex, scipy._lib._ccallback_c, numba.core.typeconv._typeconv, numba._helperlib, numba._dynfunc, numba._dispatcher, numba.core.runtime._nrt_python, numba.np.ufunc._internal, numba.experimental.jitclass._box, h5py._errors, h5py.defs, h5py._objects, h5py.h5, h5py.utils, h5py.h5t, h5py.h5s, h5py.h5ac, h5py.h5p, h5py.h5r, h5py._proxy, h5py._conv, h5py.h5z, h5py.h5a, h5py.h5d, h5py.h5ds, h5py.h5g, h5py.h5i, h5py.h5f, h5py.h5fd, h5py.h5pl, h5py.h5o, h5py.h5l, h5py._selector (total: 78)
Aborted (core dumped)
root@orin:/#

********************************************************

jetson-containers run $(autotag nano_llm:r36.3.0) python3 -m nano_llm.agents.video_query --api=mlc --model Efficient-Large-Model/VILA1.5-3b --max-context-len 256 --max-new-tokens 32 --video-input /data/images/party.mp4 --video-output webrtc://@:8554/output

THE ABOVE WORKS FINE

BELOW GIVES THE FOLLOWING ERROR

jetson-containers run $(autotag nano_llm:r36.4.0) python3 -m nano_llm.agents.video_query --api=mlc --model Efficient-Large-Model/VILA1.5-3b --max-context-len 256 --max-new-tokens 32 --video-input /data/images/party.mp4 --video-output webrtc://@:8554/output

ERROR:/opt/jetson-utils/codec/gstEncoder.cpp:876:static void gstEncoder::onWebsocketMessage(WebRTCPeer*, const char*, size_t, void*): ‘sinkpad’ should not be nullptr
Bail out! ERROR:/opt/jetson-utils/codec/gstEncoder.cpp:876:static void gstEncoder::onWebsocketMessage(WebRTCPeer*, const char*, size_t, void*): ‘sinkpad’ should not be nullptr

Thanks for looking r36.3.0 works for me including everything I have done with agent studio. I have now moved on.

Cheers

Hi,

How about the following command?

python3 -m nano_llm.test.video \
        --video-input /data/sample_720p.mp4  \
        --video-output webrtc://@:8554/output

Could you try it on the r36.4.0 container?

We can run it normally on the r36.4.0 container.
If it can also run on your side, we might just need to update the nano_llm.agents.video_query API.

Thanks.

Hi AastaLLL

running

nano llm r36.4.0

When I access the web browser then operation bombs out.

Cheers

root@orin:/# python3 -m nano_llm.test.video --video-input /data/images/party.mp4 --video-output webrtc://@:8554/output
/usr/local/lib/python3.10/dist-packages/transformers/utils/hub.py:124: FutureWarning: Using TRANSFORMERS_CACHE is deprecated and will be removed in v5 of Transformers. Use HF_HOME instead.
warnings.warn(
[gstreamer] initialized gstreamer, version 1.20.3.0
[gstreamer] gstDecoder – creating decoder for /data/images/party.mp4
sh: 1: lsmod: not found
sh: 1: modprobe: not found
Opening in BLOCKING MODE
NvMMLiteOpen : Block : BlockType = 261
NvMMLiteBlockCreate : Block : BlockType = 261

(python3:70): GStreamer-CRITICAL **: 09:07:12.646: gst_debug_log_valist: assertion ‘category != NULL’ failed

(python3:70): GStreamer-CRITICAL **: 09:07:12.646: gst_debug_log_valist: assertion ‘category != NULL’ failed

(python3:70): GStreamer-CRITICAL **: 09:07:12.646: gst_debug_log_valist: assertion ‘category != NULL’ failed

(python3:70): GStreamer-CRITICAL **: 09:07:12.646: gst_debug_log_valist: assertion ‘category != NULL’ failed

[gstreamer] gstDecoder – discovered video resolution: 1920x1080 (framerate 30.000000 Hz)
[gstreamer] gstDecoder – discovered video caps: video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, level=(string)4, profile=(string)main, width=(int)1920, height=(int)1080, framerate=(fraction)30/1, pixel-aspect-ratio=(fraction)1/1, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true
[gstreamer] gstDecoder – pipeline string:
[gstreamer] filesrc location=/data/images/party.mp4 ! qtdemux ! queue ! h264parse ! nvv4l2decoder name=decoder enable-max-performance=1 ! video/x-raw(memory:NVMM) ! nvvidconv name=vidconv ! video/x-raw ! appsink name=mysink
[video] created gstDecoder from file:///data/images/party.mp4

gstDecoder video options:

– URI: file:///data/images/party.mp4

  • protocol: file
  • location: /data/images/party.mp4
  • extension: mp4
    – deviceType: file
    – ioType: input
    – codec: H264
    – codecType: v4l2
    – width: 1920
    – height: 1080
    – frameRate: 30
    – numBuffers: 4
    – zeroCopy: true
    – flipMethod: none
    – loop: 0
    – sslCert /etc/ssl/private/localhost.cert.pem
    – sslKey /etc/ssl/private/localhost.key.pem

[gstreamer] gstEncoder – codec not specified, defaulting to H.264

failed to find/open file /proc/device-tree/model
[gstreamer] gstEncoder – detected board ‘NVIDIA Jetson AGX Orin Developer Kit’
[gstreamer] gstEncoder – pipeline launch string:
[gstreamer] appsrc name=mysource is-live=true do-timestamp=true format=3 ! nvvidconv name=vidconv ! video/x-raw(memory:NVMM) ! nvv4l2h264enc name=encoder bitrate=4000000 insert-sps-pps=1 insert-vui=1 idrinterval=30 maxperf-enable=1 ! video/x-h264 ! rtph264pay config-interval=1 ! application/x-rtp,media=video,encoding-name=H264,clock-rate=90000,payload=96 ! tee name=videotee ! queue ! fakesink
[webrtc] WebRTC server started @ https://orin:8554
[webrtc] WebRTC server thread running…
[webrtc] websocket route added /output
[video] created gstEncoder from webrtc://@:8554/output

gstEncoder video options:

– URI: webrtc://@:8554/output

  • protocol: webrtc
  • location: 0.0.0.0
  • port: 8554
    – deviceType: ip
    – ioType: output
    – codec: H264
    – codecType: v4l2
    – frameRate: 30
    – bitRate: 4000000
    – numBuffers: 4
    – zeroCopy: true
    – latency 10
    – sslCert /etc/ssl/private/localhost.cert.pem
    – sslKey /etc/ssl/private/localhost.key.pem

09:07:12 | INFO | plugin | connected VideoSource to on_video on channel 0
09:07:12 | INFO | plugin | connected VideoSource to VideoOutput on channel 0
[gstreamer] opening gstDecoder for streaming, transitioning pipeline to GST_STATE_PLAYING
Opening in BLOCKING MODE
[gstreamer] gstreamer changed state from NULL to READY ==> mysink
[gstreamer] gstreamer changed state from NULL to READY ==> capsfilter2
[gstreamer] gstreamer changed state from NULL to READY ==> vidconv
[gstreamer] gstreamer changed state from NULL to READY ==> capsfilter1
[gstreamer] gstreamer changed state from NULL to READY ==> decoder
[gstreamer] gstreamer changed state from NULL to READY ==> h264parse1
[gstreamer] gstreamer changed state from NULL to READY ==> queue0
[gstreamer] gstreamer changed state from NULL to READY ==> qtdemux1
[gstreamer] gstreamer changed state from NULL to READY ==> filesrc0
[gstreamer] gstreamer changed state from NULL to READY ==> pipeline0
[gstreamer] gstreamer changed state from READY to PAUSED ==> capsfilter2
[gstreamer] gstreamer changed state from READY to PAUSED ==> vidconv
[gstreamer] gstreamer changed state from READY to PAUSED ==> capsfilter1
[gstreamer] gstreamer changed state from READY to PAUSED ==> decoder
[gstreamer] gstreamer changed state from READY to PAUSED ==> h264parse1
[gstreamer] gstreamer stream status CREATE ==> src
[gstreamer] gstreamer changed state from READY to PAUSED ==> queue0
[gstreamer] gstreamer stream status ENTER ==> src
[gstreamer] gstreamer stream status CREATE ==> sink
[gstreamer] gstreamer changed state from READY to PAUSED ==> qtdemux1
[gstreamer] gstreamer changed state from READY to PAUSED ==> filesrc0
[gstreamer] gstreamer stream status ENTER ==> sink
NvMMLiteOpen : Block : BlockType = 261
NvMMLiteBlockCreate : Block : BlockType = 261
[gstreamer] gstreamer message stream-start ==> pipeline0
[gstreamer] gstreamer message duration-changed ==> h264parse1
[gstreamer] gstDecoder – onPreroll()
[gstreamer] gstreamer stream status CREATE ==> src
[gstreamer] gstreamer stream status ENTER ==> src
[gstreamer] gstreamer mysink taglist, video-codec=(string)“H.264\ /\ AVC”, bitrate=(uint)19009659;
[gstreamer] gstreamer mysink taglist, datetime=(datetime)2014-08-16T18:02:03Z, container-format=(string)“ISO\ MP4/M4A”;
[gstreamer] gstreamer mysink taglist, video-codec=(string)“H.264\ /\ AVC”, bitrate=(uint)19009659;
[gstreamer] gstreamer mysink taglist, video-codec=(string)“H.264\ (Main\ Profile)”, bitrate=(uint)19009659;
[gstreamer] gstBufferManager – map buffer size was less than max size (3110400 vs 3110407)
[gstreamer] gstBufferManager recieve caps: video/x-raw, width=(int)1920, height=(int)1080, interlace-mode=(string)progressive, multiview-mode=(string)mono, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1, nvbuf-memory-type=(string)nvbuf-mem-surface-array, gpu-id=(int)0, format=(string)NV12, colorimetry=(string)bt601
[gstreamer] gstBufferManager – recieved first frame, codec=H264 format=nv12 width=1920 height=1080 size=3110407
[cuda] allocated 4 ring buffers (3110407 bytes each, 12441628 bytes total)
[cuda] allocated 4 ring buffers (8 bytes each, 32 bytes total)
[gstreamer] gstreamer changed state from READY to PAUSED ==> mysink
[gstreamer] gstreamer changed state from READY to PAUSED ==> pipeline0
[gstreamer] gstreamer message async-done ==> pipeline0
[gstreamer] gstreamer message latency ==> mysink
[gstreamer] gstreamer message new-clock ==> pipeline0
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> mysink
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> capsfilter2
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> vidconv
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> capsfilter1
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> decoder
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> h264parse1
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> queue0
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> qtdemux1
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> filesrc0
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> pipeline0
[cuda] allocated 4 ring buffers (6220800 bytes each, 24883200 bytes total)
[cuda] allocated 2 ring buffers (3110400 bytes each, 6220800 bytes total)
[gstreamer] gstEncoder – starting pipeline, transitioning to GST_STATE_PLAYING
Opening in BLOCKING MODE
[gstreamer] gstreamer changed state from NULL to READY ==> fakesink0
[gstreamer] gstreamer changed state from NULL to READY ==> queue1
[gstreamer] gstreamer changed state from NULL to READY ==> videotee
[gstreamer] gstreamer changed state from NULL to READY ==> capsfilter5
[gstreamer] gstreamer changed state from NULL to READY ==> rtph264pay0
[gstreamer] gstreamer changed state from NULL to READY ==> capsfilter4
[gstreamer] gstreamer changed state from NULL to READY ==> encoder
[gstreamer] gstreamer changed state from NULL to READY ==> capsfilter3
[gstreamer] gstreamer changed state from NULL to READY ==> vidconv
[gstreamer] gstreamer changed state from NULL to READY ==> mysource
[gstreamer] gstreamer changed state from NULL to READY ==> pipeline1
[gstreamer] gstreamer stream status CREATE ==> src
[gstreamer] gstreamer changed state from READY to PAUSED ==> queue1
[gstreamer] gstreamer changed state from READY to PAUSED ==> videotee
[gstreamer] gstreamer changed state from READY to PAUSED ==> capsfilter5
[gstreamer] gstreamer stream status ENTER ==> src
[gstreamer] gstreamer changed state from READY to PAUSED ==> rtph264pay0
[gstreamer] gstreamer changed state from READY to PAUSED ==> capsfilter4
[gstreamer] gstreamer changed state from READY to PAUSED ==> encoder
[gstreamer] gstreamer changed state from READY to PAUSED ==> capsfilter3
[gstreamer] gstreamer changed state from READY to PAUSED ==> vidconv
[gstreamer] gstreamer stream status CREATE ==> src
[gstreamer] gstreamer changed state from READY to PAUSED ==> mysource
[gstreamer] gstreamer changed state from READY to PAUSED ==> pipeline1
[gstreamer] gstreamer message new-clock ==> pipeline1
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> queue1
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> videotee
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> capsfilter5
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> rtph264pay0
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> capsfilter4
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> encoder
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> capsfilter3
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> vidconv
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> mysource
[gstreamer] gstreamer stream status ENTER ==> src
[gstreamer] gstEncoder – new caps: video/x-raw, width=1920, height=1080, format=(string)I420, framerate=30/1
NvMMLiteOpen : Block : BlockType = 4
===== NvVideo: NVENC =====
NvMMLiteBlockCreate : Block : BlockType = 4
[gstreamer] gstreamer message stream-start ==> pipeline1
[gstreamer] gstreamer message latency ==> encoder
H264: extProfile = 2 Level = 0
[gstreamer] gstreamer stream status CREATE ==> src
[gstreamer] gstreamer stream status ENTER ==> src
NVMEDIA: Need to set EMC bandwidth : 846000
NvVideo: bBlitMode is set to TRUE
[gstreamer] gstreamer changed state from READY to PAUSED ==> fakesink0
[gstreamer] gstreamer message async-done ==> pipeline1
[gstreamer] gstreamer message latency ==> fakesink0
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> fakesink0
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> pipeline1
[gstreamer] gstreamer mysink taglist, video-codec=(string)“H.264\ (Main\ Profile)”, bitrate=(uint)19009659, minimum-bitrate=(uint)16441680, maximum-bitrate=(uint)16441680;
[gstreamer] gstreamer mysink taglist, video-codec=(string)“H.264\ (Main\ Profile)”, bitrate=(uint)19009659, minimum-bitrate=(uint)16277520, maximum-bitrate=(uint)16441680;
[gstreamer] gstreamer mysink taglist, video-codec=(string)“H.264\ (Main\ Profile)”, bitrate=(uint)19009659, minimum-bitrate=(uint)15774240, maximum-bitrate=(uint)16441680;
[gstreamer] gstreamer mysink taglist, video-codec=(string)“H.264\ (Main\ Profile)”, bitrate=(uint)19009659, minimum-bitrate=(uint)15774240, maximum-bitrate=(uint)16534320;
[gstreamer] gstreamer mysink taglist, video-codec=(string)“H.264\ (Main\ Profile)”, bitrate=(uint)19009659, minimum-bitrate=(uint)15774240, maximum-bitrate=(uint)17225760;
[gstreamer] gstreamer mysink taglist, video-codec=(string)“H.264\ (Main\ Profile)”, bitrate=(uint)19009659, minimum-bitrate=(uint)15774240, maximum-bitrate=(uint)17371440;
[gstreamer] gstreamer mysink taglist, video-codec=(string)“H.264\ (Main\ Profile)”, bitrate=(uint)19009659, minimum-bitrate=(uint)15774240, maximum-bitrate=(uint)17552880;
09:07:14 | INFO | captured 25 frames (1920x1080) from /data/images/party.mp4
[gstreamer] gstreamer mysink taglist, video-codec=(string)“H.264\ (Main\ Profile)”, bitrate=(uint)19009659, minimum-bitrate=(uint)15774240, maximum-bitrate=(uint)18179760;
[gstreamer] gstreamer mysink taglist, video-codec=(string)“H.264\ (Main\ Profile)”, bitrate=(uint)19009659, minimum-bitrate=(uint)15774240, maximum-bitrate=(uint)18200160;
[gstreamer] gstreamer mysink taglist, video-codec=(string)“H.264\ (Main\ Profile)”, bitrate=(uint)19009659, minimum-bitrate=(uint)15774240, maximum-bitrate=(uint)58823760;
[gstreamer] gstreamer mysink taglist, video-codec=(string)“H.264\ (Main\ Profile)”, bitrate=(uint)19009659, minimum-bitrate=(uint)14495040, maximum-bitrate=(uint)58823760;
09:07:14 | INFO | captured 50 frames (1920x1080) from /data/images/party.mp4
09:07:15 | INFO | captured 75 frames (1920x1080) from /data/images/party.mp4
[gstreamer] gstreamer mysink taglist, video-codec=(string)“H.264\ (Main\ Profile)”, bitrate=(uint)19009659, minimum-bitrate=(uint)14470560, maximum-bitrate=(uint)58823760;
09:07:16 | INFO | captured 100 frames (1920x1080) from /data/images/party.mp4
09:07:17 | INFO | captured 125 frames (1920x1080) from /data/images/party.mp4
09:07:18 | INFO | captured 150 frames (1920x1080) from /data/images/party.mp4
09:07:19 | INFO | captured 175 frames (1920x1080) from /data/images/party.mp4
[gstreamer] gstreamer mysink taglist, video-codec=(string)“H.264\ (Main\ Profile)”, bitrate=(uint)19009659, minimum-bitrate=(uint)14373600, maximum-bitrate=(uint)58823760;
09:07:19 | INFO | captured 200 frames (1920x1080) from /data/images/party.mp4
[gstreamer] gstreamer mysink taglist, video-codec=(string)“H.264\ (Main\ Profile)”, bitrate=(uint)19009659, minimum-bitrate=(uint)14256480, maximum-bitrate=(uint)58823760;
[gstreamer] gstreamer mysink taglist, video-codec=(string)“H.264\ (Main\ Profile)”, bitrate=(uint)19009659, minimum-bitrate=(uint)12642960, maximum-bitrate=(uint)58823760;
09:07:20 | INFO | captured 225 frames (1920x1080) from /data/images/party.mp4
09:07:21 | INFO | captured 250 frames (1920x1080) from /data/images/party.mp4
09:07:22 | INFO | captured 275 frames (1920x1080) from /data/images/party.mp4
09:07:23 | INFO | captured 300 frames (1920x1080) from /data/images/party.mp4
09:07:24 | INFO | captured 325 frames (1920x1080) from /data/images/party.mp4
09:07:24 | INFO | captured 350 frames (1920x1080) from /data/images/party.mp4
09:07:25 | INFO | captured 375 frames (1920x1080) from /data/images/party.mp4
09:07:26 | INFO | captured 400 frames (1920x1080) from /data/images/party.mp4
[webrtc] HTTPS 192.168.1.143 GET ‘/’
[webrtc] /
[webrtc] HTTPS 192.168.1.143 GET ‘/favicon.ico’
[webrtc] /favicon.ico
[webrtc] websocket /output – new connection opened by 192.168.1.143 (peer_id=0)
[webrtc] new WebRTC peer connecting (192.168.1.143, peer_id=0)
09:07:27 | INFO | captured 425 frames (1920x1080) from /data/images/party.mp4
**
ERROR:/opt/jetson-utils/codec/gstEncoder.cpp:876:static void gstEncoder::onWebsocketMessage(WebRTCPeer*, const char*, size_t, void*): ‘sinkpad’ should not be nullptr
Bail out! ERROR:/opt/jetson-utils/codec/gstEncoder.cpp:876:static void gstEncoder::onWebsocketMessage(WebRTCPeer*, const char*, size_t, void*): ‘sinkpad’ should not be nullptr
Fatal Python error: Aborted

Thread 0x0000fffecf3ef120 (most recent call first):
File “/usr/lib/python3.10/threading.py”, line 324 in wait
File “/usr/lib/python3.10/threading.py”, line 607 in wait
File “/opt/NanoLLM/nano_llm/plugin.py”, line 335 in process_inputs
File “/opt/NanoLLM/nano_llm/plugin.py”, line 321 in run
File “/usr/lib/python3.10/threading.py”, line 1016 in _bootstrap_inner
File “/usr/lib/python3.10/threading.py”, line 973 in _bootstrap

Thread 0x0000fffecd336120 (most recent call first):
File “/opt/NanoLLM/nano_llm/plugins/video/video_source.py”, line 97 in capture
File “/opt/NanoLLM/nano_llm/plugins/video/video_source.py”, line 159 in run
File “/usr/lib/python3.10/threading.py”, line 1016 in _bootstrap_inner
File “/usr/lib/python3.10/threading.py”, line 973 in _bootstrap

Thread 0x0000ffffabc476c0 (most recent call first):
File “/usr/lib/python3.10/threading.py”, line 1116 in _wait_for_tstate_lock
File “/usr/lib/python3.10/threading.py”, line 1096 in join
File “/opt/NanoLLM/nano_llm/test/video.py”, line 34 in
File “/usr/lib/python3.10/runpy.py”, line 86 in _run_code
File “/usr/lib/python3.10/runpy.py”, line 196 in _run_module_as_main

Extension modules: numpy.core._multiarray_umath, numpy.core._multiarray_tests, numpy.linalg._umath_linalg, numpy.fft._pocketfft_internal, numpy.random._common, numpy.random.bit_generator, numpy.random._bounded_integers, numpy.random._mt19937, numpy.random.mtrand, numpy.random._philox, numpy.random._pcg64, numpy.random._sfc64, numpy.random._generator, torch._C, torch._C._fft, torch._C._linalg, torch._C._nested, torch._C._nn, torch._C._sparse, torch._C._special, zstandard.backend_c, charset_normalizer.md, yaml._yaml, sentencepiece._sentencepiece, psutil._psutil_linux, psutil._psutil_posix, PIL._imaging, PIL._imagingft, google.protobuf.pyext._message, jetson_utils_python, cuda._lib.utils, cuda._cuda.ccuda, cuda.ccuda, cuda.cuda, cuda._cuda.cnvrtc, cuda.cnvrtc, cuda.nvrtc, cuda._lib.ccudart.utils, cuda._lib.ccudart.ccudart, cuda.ccudart, cuda.cudart, _cffi_backend, pyaudio._portaudio, markupsafe._speedups, websockets.speedups, regex._regex, scipy._lib._ccallback_c, numba.core.typeconv._typeconv, numba._helperlib, numba._dynfunc, numba._dispatcher, numba.core.runtime._nrt_python, numba.np.ufunc._internal, numba.experimental.jitclass._box, h5py._errors, h5py.defs, h5py._objects, h5py.h5, h5py.utils, h5py.h5t, h5py.h5s, h5py.h5ac, h5py.h5p, h5py.h5r, h5py._proxy, h5py._conv, h5py.h5z, h5py.h5a, h5py.h5d, h5py.h5ds, h5py.h5g, h5py.h5i, h5py.h5f, h5py.h5fd, h5py.h5pl, h5py.h5o, h5py.h5l, h5py._selector (total: 78)

Aborted (core dumped)
root@orin:/#

Hi,
Please try this and see if it works:
webRTC crashed when a client browser connects - #13 by DaneLLL