# VST Video Exporting Error

**URL:** <https://forums.developer.nvidia.com/t/vst-video-exporting-error/374424>\
**Category:** DeepStream SDK\
**Tags:** vst, deepstream, jetson\
**Created:** [June 25, 2026, 5:38am UTC](https://forums.developer.nvidia.com/t/vst-video-exporting-error/374424 "2026-06-25T05:38:44Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![jetson.developer](https://developer.download.nvidia.com/images/forums/profile-default-devtalk-84.png) [@jetson.developer](https://forums.developer.nvidia.com/u/jetson.developer)\
**Post date:** [June 25, 2026, 5:38am UTC](https://forums.developer.nvidia.com/t/vst-video-exporting-error/374424/1 "2026-06-25T05:38:44Z")

</div>

**• Hardware Platform: Jetson AGX Orin**  
**• DeepStream Version: 7.1**  
**• JetPack Version: 6.1**  
**• TensorRT Version:10.3**  
**• Issue Type: Bug**

Hi, I have VST ([nvcr.io/nvidia/deepstream:7.1-triton-multiarch](http://nvcr.io/nvidia/deepstream:7.1-triton-multiarch)) running, almost everything works correctly. RTSP streams are being recorded in 1 minute clips as expected on disk.

However, I cannot export the clips using the [API](https://docs.nvidia.com/moj/vst_API/index.html#/) ([/v1/storage/file/{streamId}](https://docs.nvidia.com/moj/vst_API/index.html#/:~:text=GET-,%2Fv1%2Fstorage%2Ffile%2F%7BstreamId)). I have confirmed that the video file is there and is not corrupted. The API seems to fail as soon as it starts processing the video:

```auto
[2026-6-25T4:33:48.966Z:281468894637024:gst_utils.cpp:848: demuxer_pad_added_cb] Received new pad video_0 from splitmuxsrc4
[2026-6-25T4:33:48.999Z:281468919999456:gst_utils.cpp:758: identity_cb_for_last_frame_timestamp] IDR Detected : m_lastFrameTimestamp 1000951
[2026-6-25T4:33:48.999Z:281471184268256:gst_utils.cpp:1025: getInfoForTranscodingGOP] EOS Message received
...
[2026-6-25T4:33:49.12Z:281471184268256:gst_utils.cpp:1764: downloadVideoFile] Unable to set the pipeline to the pause state

```

See full log below:

```auto
[2026-6-25T4:33:48.939Z:281471184268256:storage_management_apis.cpp:220: handleStorageFileAPIrequest] Storage Management API handler requestApi:/api/v1/storage/file/add35849-ceae-4c07-9266-eb73bbabad39 requestMethod:GET queryString:startTime=2026-06-25T02:30:01.000Z&endTime=2026-06-25T02:30:59.000Z
[2026-6-25T4:33:48.939Z:281471184268256:storage_management_apis.cpp:247: handleStorageFileAPIrequest] API path: add35849-ceae-4c07-9266-eb73bbabad39
[2026-6-25T4:33:48.940Z:281471184268256:storage_management_apis.cpp:293: handleStorageFileAPIrequest] 2026-06-25T02:30:01.000Z 2026-06-25T02:30:59.000Z
[2026-6-25T4:33:48.940Z:281471184268256:gst_utils.cpp:1884: makeVideoFile] Enter makeVideoFile
[2026-6-25T4:33:48.940Z:281471184268256:gst_utils.cpp:1242: downloadVideoFile] Start Time: 2026-06-25T02:30:01.000Z End Time: 2026-06-25T02:30:59.000Z
[2026-6-25T4:33:48.940Z:281471184268256:gst_utils.cpp:1278: downloadVideoFile] Epoch Start Time: 1782354601000
[2026-6-25T4:33:48.940Z:281471184268256:gst_utils.cpp:1283: downloadVideoFile] Epoch End Time: 1782354659000
[2026-6-25T4:33:48.940Z:281471184268256:sqlite_helper.cpp:2363: getFileList] DBHelper::getFileList sensor id: add35849-ceae-4c07-9266-eb73bbabad39 startTime: 1782354601000 endTime: 1782354659000
[2026-6-25T4:33:48.940Z:281471184268256:sqlite_helper.cpp:912: readVideoRecord] SQL query: SELECT * FROM VIDEO_RECORD_DETAILS WHERE STREAM_ID = "add35849-ceae-4c07-9266-eb73bbabad39" AND (START_TIME + FILE_DURATION >= 1782354601000OR START_TIME = 1782354601000 ) AND START_TIME < 1782354659000;
[2026-6-25T4:33:48.944Z:281471184268256:gst_utils.cpp:1309: downloadVideoFile] Total files: 1
[2026-6-25T4:33:48.944Z:281471184268256:gst_utils.cpp:1310: downloadVideoFile] File base timestamp: 1782354600092
[2026-6-25T4:33:48.944Z:281471184268256:storage_management.cpp:487: addFileInProtectList] Added file into thein protect list filePath:/data/vst-volume/video/add35849-ceae-4c07-9266-eb73bbabad39/1920x1080/2026/06/25/3/1782354600092.mkv removeOrAdd:1
[2026-6-25T4:33:48.959Z:281471184268256:gst_utils.cpp:964: getInfoForTranscodingGOP] Setting PAUSE State
[2026-6-25T4:33:48.960Z:281471184268256:gst_utils.cpp:976: getInfoForTranscodingGOP] Seek Start Position = 908
[2026-6-25T4:33:48.961Z:281471184268256:gst_utils.cpp:977: getInfoForTranscodingGOP] Seek End Position = 58908
[2026-6-25T4:33:48.966Z:281468894637024:gst_utils.cpp:848: demuxer_pad_added_cb] Received new pad video_0 from splitmuxsrc4
[2026-6-25T4:33:48.999Z:281468919999456:gst_utils.cpp:758: identity_cb_for_last_frame_timestamp] IDR Detected : m_lastFrameTimestamp 1000951
[2026-6-25T4:33:48.999Z:281471184268256:gst_utils.cpp:1025: getInfoForTranscodingGOP] EOS Message received
[2026-6-25T4:33:49.10Z:281471184268256:gst_utils.cpp:1053: getInfoForTranscodingGOP] Exiting getInfoForTranscodingGOP
[2026-6-25T4:33:49.11Z:281471184268256:gst_utils.cpp:1381: downloadVideoFile] m_lastFrameTimestamp: 1000951 m_profile: main m_level: 5 m_tier: main
[2026-6-25T4:33:49.12Z:281471184268256:gst_utils.cpp:1693: downloadVideoFile] Creating output file : COL - Camera1_2026-06-25T02:30:01.000Z_2026-06-25T02:30:59.000Z.ts
[2026-6-25T4:33:49.12Z:281471184268256:gst_utils.cpp:1760: downloadVideoFile] Setting PAUSE State
[2026-6-25T4:33:49.12Z:281471184268256:gst_utils.cpp:1764: downloadVideoFile] Unable to set the pipeline to the pause state
[2026-6-25T4:33:49.13Z:281471184268256:storage_management.cpp:487: addFileInProtectList] Added file into thein protect list filePath:/data/vst-volume/video/add35849-ceae-4c07-9266-eb73bbabad39/1920x1080/2026/06/25/3/1782354600092.mkv removeOrAdd:0
[2026-6-25T4:33:49.29Z:281471184268256:gst_utils.cpp:1899: makeVideoFile] Downloading video file failed
[2026-6-25T4:33:49.29Z:281471184268256:gst_utils.cpp:1902: makeVideoFile] Exit makeVideoFile

```

Does VST support exporting video snippets on the Jetson platform? This post seems to suggest that it does not: [Recording in VST(Video storage toolkit)](https://forums.developer.nvidia.com/t/recording-in-vst-video-storage-toolkit/300392#:%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C%5C~:text=24-,You,dGPU,-%3F) . However, this fact is not claimed anywhere else that I can find. If it is meant to work please assist me in troubleshooting this issue.

---

<div class="post-metadata">

**Author:** ![MarkusHoHo](https://sea2.discourse-cdn.com/nvidia/user_avatar/forums.developer.nvidia.com/markushoho/32/233145_2.png) [@MarkusHoHo](https://forums.developer.nvidia.com/u/MarkusHoHo)\
**Post date:** [June 25, 2026, 6:01am UTC](https://forums.developer.nvidia.com/t/vst-video-exporting-error/374424/2 "2026-06-25T06:01:42Z")

</div>

Hello @jetson.developer!

Based on the title and content of your topic, it looks like it may receive better visibility and feedback in a different category. We took the liberty of moving it for you.

If this was an incorrect assessment, please send me a direct message.

_Disclaimer: this moderation suggestion and message were generated with AI assistance._

---

<div class="post-metadata">

**Author:** ![junshengy](https://sea2.discourse-cdn.com/nvidia/user_avatar/forums.developer.nvidia.com/junshengy/32/251332_2.png) [@junshengy](https://forums.developer.nvidia.com/u/junshengy)\
**Post date:** [June 25, 2026, 12:30pm UTC](https://forums.developer.nvidia.com/t/vst-video-exporting-error/374424/5 "2026-06-25T12:30:40Z")

</div>

Could you provide more details on how you deployed the VST and how you are using the recording function? This will help me reproduce the issue.

Since I am not sure about your specific workflow, I cannot offer any suggestions at the moment.

---

<div class="post-metadata">

**Author:** ![jetson.developer](https://developer.download.nvidia.com/images/forums/profile-default-devtalk-84.png) [@jetson.developer](https://forums.developer.nvidia.com/u/jetson.developer)\
**Post date:** [June 26, 2026, 1:35am UTC](https://forums.developer.nvidia.com/t/vst-video-exporting-error/374424/6 "2026-06-26T01:35:37Z")

</div>

Hi [junshengy](https://forums.developer.nvidia.com/u/junshengy), thanks for responding!

I have replicated the issue with the provided docker compose for the VST service. I appended `-001` to the container names and storage paths to avoid any clashes whilst testing this issue, I also ensured my existing VST was down when testing. The recording function is just the default of recording everything, the ‘alwaysOn’ setting.

```auto
version: '2'
services:
  jps-init-vst-001:
    image: nvcr.io/nvidia/jps/jps-init-container:v1.0.2_arm64v8
    network_mode: "host"
    environment:
      PORTS: "6379" # "6379,30080"
    deploy:
      restart_policy:
        condition: on-failure

  vst-001:
    image: nvcr.io/nvidia/jps/vst:1.3.0-24.07.1-aarch64
    user: "2000:150"
    network_mode: "host"
    runtime: nvidia
    logging:
      driver: "json-file"
      options:
        max-size: "8192m"
        max-file: "3"
    container_name: vst
    entrypoint: sh -c '/opt/vst_release/launch_vst --debug-level 3 2>&1 | tee -a /opt/vst_release/webroot/log/vst.log'
    volumes:
      - ./config/vst_config.json:/opt/vst_release/configs/vst_config.json
      - ./config/vst_storage.json:/opt/vst_release/configs/vst_storage.json
      - /data/vst-volume-001:/data/vst-volume
      - /data/logging-volume-001:/opt/vst_release/webroot/log
      - /usr/lib/aarch64-linux-gnu/nvidia/:/usr/lib/aarch64-linux-gnu/tegra/
      - /tmp/:/tmp/
    depends_on:
        jps-init-vst-001:            
          condition: service_completed_successfully
    deploy:
      resources:
        limits:
          memory: 5600M
      restart_policy:
        condition: always

```

These paths retain the correct ownership:

```auto
root@jetson:/# ls -al /data 
drwxrwxr-x 2 logging logusers 4096 Jun 26 10:09 logging-volume-001
drwxr-xr-x 5 vst logusers 4096 Jun 26 10:14 vst-volume-001

```

I added a RTSP stream to this test VST and can see the stream in the web interface and with:

```auto
curl -X GET "http://localhost:30080/vst/api/v1/sensor/streams"
[
        {
                "620f0791-4abc-46c5-862b-730a948be047" : 
                [
                        {
                                "isMain" : true,
                                "metadata" : 
                                {
                                        "bitrate" : "",
                                        "codec" : "H265",
                                        "framerate" : "25.000000",
                                        "govlength" : "",
                                        "resolution" : "1920x1080"
                                },
                                "name" : "SENSOR",
                                "streamId" : "620f0791-4abc-46c5-862b-730a948be047",
                                "url" : "rtsp://192.168.1.102:8554/live/620f0791-4abc-46c5-862b-730a948be047"
                        }
                ]
        }
]

```

I call the API with:

```auto
curl -X GET "http://localhost:30080/vst/api/v1/storage/file/620f0791-4abc-46c5-862b-730a948be047" \
  -G \
  --data-urlencode "startTime=2026-06-26T01:11:01.000Z" \
  --data-urlencode "endTime=2026-06-26T01:11:59.000Z"

OR

http://localhost:30080/vst/api/v1/storage/file/620f0791-4abc-46c5-862b-730a948be047?startTime=2026-06-26T01:11:01.000Z&endTime=2026-06-26T01:11:59.000Z

```

and receive:

```auto
{
        "error_code" : "VMSInternalError",
        "error_message" : "Unable to get requested file, please try after sometime"
}

```

The logs show:

```auto
[2026-6-26T1:13:38.463Z:281470706052064:storage_management_apis.cpp:220: handleStorageFileAPIrequest] Storage Management API handler requestApi:/api/v1/storage/file/620f0791-4abc-46c5-862b-730a948be047 requestMethod:GET queryString:startTime=2026-06-26T01%3a11%3a01.000Z&endTime=2026-06-26T01%3a11%3a59.000Z
[2026-6-26T1:13:38.463Z:281470706052064:storage_management_apis.cpp:247: handleStorageFileAPIrequest] API path: 620f0791-4abc-46c5-862b-730a948be047
[2026-6-26T1:13:38.464Z:281470706052064:storage_management_apis.cpp:293: handleStorageFileAPIrequest] 2026-06-26T01:11:01.000Z 2026-06-26T01:11:59.000Z
[2026-6-26T1:13:38.464Z:281470706052064:gst_utils.cpp:1884: makeVideoFile] Enter makeVideoFile
[2026-6-26T1:13:38.464Z:281470706052064:gst_utils.cpp:1242: downloadVideoFile] Start Time: 2026-06-26T01:11:01.000Z End Time: 2026-06-26T01:11:59.000Z
[2026-6-26T1:13:38.464Z:281470706052064:gst_utils.cpp:1278: downloadVideoFile] Epoch Start Time: 1782436261000
[2026-6-26T1:13:38.464Z:281470706052064:gst_utils.cpp:1283: downloadVideoFile] Epoch End Time: 1782436319000
[2026-6-26T1:13:38.464Z:281470706052064:sqlite_helper.cpp:2363: getFileList] DBHelper::getFileList sensor id: 620f0791-4abc-46c5-862b-730a948be047 startTime: 1782436261000 endTime: 1782436319000
[2026-6-26T1:13:38.464Z:281470706052064:sqlite_helper.cpp:912: readVideoRecord] SQL query: SELECT * FROM VIDEO_RECORD_DETAILS WHERE STREAM_ID = "620f0791-4abc-46c5-862b-730a948be047" AND (START_TIME + FILE_DURATION >= 1782436261000OR START_TIME = 1782436261000 ) AND START_TIME < 1782436319000;
[2026-6-26T1:13:38.464Z:281470706052064:gst_utils.cpp:1309: downloadVideoFile] Total files: 2
[2026-6-26T1:13:38.464Z:281470706052064:gst_utils.cpp:1310: downloadVideoFile] File base timestamp: 1782436240867
[2026-6-26T1:13:38.464Z:281470706052064:storage_management.cpp:487: addFileInProtectList] Added file into thein protect list filePath:/data/vst-volume/video/620f0791-4abc-46c5-862b-730a948be047/1920x1080/2026/06/26/2/1782436240867.mkv removeOrAdd:1
[2026-6-26T1:13:38.482Z:281470706052064:storage_management.cpp:487: addFileInProtectList] Added file into thein protect list filePath:/data/vst-volume/video/620f0791-4abc-46c5-862b-730a948be047/1920x1080/2026/06/26/2/1782436301062.mkv removeOrAdd:1
[2026-6-26T1:13:38.510Z:281470706052064:gst_utils.cpp:964: getInfoForTranscodingGOP] Setting PAUSE State
[2026-6-26T1:13:38.511Z:281470706052064:gst_utils.cpp:976: getInfoForTranscodingGOP] Seek Start Position = 20133
[2026-6-26T1:13:38.511Z:281470706052064:gst_utils.cpp:977: getInfoForTranscodingGOP] Seek End Position = 78133
[2026-6-26T1:13:38.514Z:281467028065248:gst_utils.cpp:848: demuxer_pad_added_cb] Received new pad video_0 from splitmuxsrc32
[2026-6-26T1:13:38.533Z:281466963438560:gst_utils.cpp:758: identity_cb_for_last_frame_timestamp] IDR Detected : m_lastFrameTimestamp 1020158
[2026-6-26T1:13:38.533Z:281470706052064:gst_utils.cpp:1025: getInfoForTranscodingGOP] EOS Message received
[2026-6-26T1:13:38.540Z:281470706052064:gst_utils.cpp:1053: getInfoForTranscodingGOP] Exiting getInfoForTranscodingGOP
[2026-6-26T1:13:38.540Z:281470706052064:gst_utils.cpp:1381: downloadVideoFile] m_lastFrameTimestamp: 1020158 m_profile: main m_level: 5 m_tier: main
[2026-6-26T1:13:38.542Z:281470706052064:gst_utils.cpp:1693: downloadVideoFile] Creating output file : SENSOR_2026-06-26T01:11:01.000Z_2026-06-26T01:11:59.000Z.ts
[2026-6-26T1:13:38.542Z:281470706052064:gst_utils.cpp:1760: downloadVideoFile] Setting PAUSE State
[2026-6-26T1:13:38.542Z:281470706052064:gst_utils.cpp:1764: downloadVideoFile] Unable to set the pipeline to the pause state
[2026-6-26T1:13:38.543Z:281470706052064:storage_management.cpp:487: addFileInProtectList] Added file into thein protect list filePath:/data/vst-volume/video/620f0791-4abc-46c5-862b-730a948be047/1920x1080/2026/06/26/2/1782436240867.mkv removeOrAdd:0
[2026-6-26T1:13:38.556Z:281470706052064:storage_management.cpp:487: addFileInProtectList] Added file into thein protect list filePath:/data/vst-volume/video/620f0791-4abc-46c5-862b-730a948be047/1920x1080/2026/06/26/2/1782436301062.mkv removeOrAdd:0
[2026-6-26T1:13:38.589Z:281470706052064:gst_utils.cpp:1899: makeVideoFile] Downloading video file failed
[2026-6-26T1:13:38.589Z:281470706052064:gst_utils.cpp:1902: makeVideoFile] Exit makeVideoFile

```

The 1 minute video snippets are present:

```auto
/data/vst-volume-001/video/620f0791-4abc-46c5-862b-730a948be047/
└── 1920x1080
    └── 2026
        └── 06
            └── 26
                ├── 1
                │ ├── 1782432936166.mkv
                │ ├── 1782432996188.mkv
                │ ├── 1782433056383.mkv
                │ ├── 1782433116578.mkv
                │ ├── 1782433176775.mkv
                │ ├── 1782433236776.mkv
                │ ├── 1782433296777.mkv
                │ ├── 1782433356968.mkv
                │ ├── 1782433416968.mkv
                │ ├── 1782433477161.mkv
                │ ├── 1782433537162.mkv
                │ ├── 1782433597360.mkv
                │ ├── 1782433657559.mkv
                │ ├── 1782433717756.mkv
                │ ├── 1782433777758.mkv
                │ ├── 1782433837761.mkv
                │ ├── 1782433897779.mkv
                │ ├── 1782433957972.mkv
                │ ├── 1782434017977.mkv
                │ ├── 1782434077988.mkv
                │ ├── 1782434138187.mkv
                │ ├── 1782434198383.mkv
                │ ├── 1782434258390.mkv
                │ ├── 1782434318405.mkv
                │ ├── 1782434378416.mkv
                │ ├── 1782434438424.mkv
                │ ├── 1782434498623.mkv
                │ ├── 1782434558822.mkv
                │ ├── 1782434618825.mkv
                │ ├── 1782434678832.mkv
                │ ├── 1782434738844.mkv
                │ ├── 1782434798845.mkv
                │ ├── 1782434859044.mkv
                │ ├── 1782434919058.mkv
                │ ├── 1782434979257.mkv
                │ ├── 1782435039259.mkv
                │ ├── 1782435099259.mkv
                │ ├── 1782435159260.mkv
                │ ├── 1782435219263.mkv
                │ ├── 1782435279286.mkv
                │ ├── 1782435339296.mkv
                │ ├── 1782435399489.mkv
                │ ├── 1782435459494.mkv
                │ ├── 1782435519503.mkv
                │ └── 1782435579701.mkv
                └── 2
                    ├── 1782435639704.mkv
                    ├── 1782435699897.mkv
                    ├── 1782435760087.mkv
                    ├── 1782435820090.mkv
                    ├── 1782435880096.mkv
                    ├── 1782435940096.mkv
                    ├── 1782436000295.mkv
                    ├── 1782436060484.mkv
                    ├── 1782436120484.mkv
                    ├── 1782436180673.mkv
                    ├── 1782436240867.mkv
                    ├── 1782436301062.mkv
                    ├── 1782436361068.mkv
                    ├── 1782436421070.mkv
                    ├── 1782436481266.mkv
                    ├── 1782436541273.mkv
                    ├── 1782436601457.mkv
                    ├── 1782436661655.mkv
                    ├── 1782436721853.mkv
                    ├── 1782436782051.mkv
                    ├── 1782436842057.mkv
                    └── 1782436902061.mkv

```

And the files in question can be viewed in the desktop and is successfully checked (inside the container) with:

```auto
I have no name!@jetson:/opt/vst_release$ gst-launch-1.0 filesrc location=/data/vst-volume/video/620f0791-4abc-46c5-862b-730a948be047/1920x1080/2026/06/26/2/1782436240867.mkv ! matroskademux ! h265parse ! fakesink
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Redistribute latency...
Got EOS from element "pipeline0".
Execution ended after 0:00:00.058227669
Setting pipeline to NULL ...
Freeing pipeline ...
I have no name!@jetson:/opt/vst_release$ gst-launch-1.0 filesrc location=/data/vst-volume/video/620f0791-4abc-46c5-862b-730a948be047/1920x1080/2026/06/26/2/1782436301062.mkv ! matroskademux ! h265parse ! fakesink
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
Redistribute latency...
New clock: GstSystemClock
Got EOS from element "pipeline0".
Execution ended after 0:00:00.051112346
Setting pipeline to NULL ...
Freeing pipeline ...

```

This is with the out of the box VST compose file (with only the minor changes explained above). Any video exports fail even when using the web interface. If this is expected to work please help me troubleshoot this problem.

---

<div class="post-metadata">

**Author:** ![junshengy](https://sea2.discourse-cdn.com/nvidia/user_avatar/forums.developer.nvidia.com/junshengy/32/251332_2.png) [@junshengy](https://forums.developer.nvidia.com/u/junshengy)\
**Post date:** [June 26, 2026, 11:44am UTC](https://forums.developer.nvidia.com/t/vst-video-exporting-error/374424/7 "2026-06-26T11:44:52Z")

</div>

> [@jetson.developer](#):
>
> `user: "2000:150"`

This error is caused by insufficient permissions.Two solutions  
1.

```auto
# user: "2000:150" # delete it
or
user: "0:0"

```

2.Make the /opt/vst\_release volume writable.

```auto
    volumes:
      - /data/vst-release-workdir:/opt/vst_release
      - /data/vst-volume-001:/data/vst-volume
      - /data/logging-volume-001:/opt/vst_release/webroot/log

```

```auto
  sudo mkdir -p /data/vst-release-workdir
  sudo chown -R 2000:150 /data/vst-release-workdir

```

---

<div class="post-metadata">

**Author:** ![jetson.developer](https://developer.download.nvidia.com/images/forums/profile-default-devtalk-84.png) [@jetson.developer](https://forums.developer.nvidia.com/u/jetson.developer)\
**Post date:** [June 29, 2026, 1:03am UTC](https://forums.developer.nvidia.com/t/vst-video-exporting-error/374424/8 "2026-06-29T01:03:02Z")

</div>

Thanks for your response, it helped me head in the right direction!

For those that follow using `user: "0:0"` did in fact make it work, however, I don’t like that approach. In retrospect I probably should have tried it when debugging; the VST logs didn’t hint at a permission issue so I didn’t investigate it, my mistake…

Anyway, within the container I used `strace` to find the permission issue:

```auto
root@jetson:/opt/vst_release# sudo -u \#2000 -g \#150 strace -f -q -e trace=open,openat,access /opt/vst_release/launch_vst 2>&1 >/dev/null | grep EACCES
[pid 739] openat(AT_FDCWD, "/root/vst_release/prebuilts/aarch64/libnvds_logger.so", O_RDONLY|O_CLOEXEC) = -1 EACCES (Permission denied)
[pid 739] openat(AT_FDCWD, "/root/vst_release/prebuilts/aarch64/libnvds_redis_proto.so", O_RDONLY|O_CLOEXEC) = -1 EACCES (Permission denied)
[pid 739] openat(AT_FDCWD, "./webroot/config.js", O_WRONLY|O_CREAT|O_TRUNC, 0666) = -1 EACCES (Permission denied)
[pid 739] openat(AT_FDCWD, "/root/vst_release/prebuilts/aarch64/libnvrtspserver.so", O_RDONLY|O_CLOEXEC) = -1 EACCES (Permission denied)
[pid 739] openat(AT_FDCWD, "/root/vst_release/prebuilts/aarch64/libnvstreamrecorder.so", O_RDONLY|O_CLOEXEC) = -1 EACCES (Permission denied)
[pid 739] openat(AT_FDCWD, "/root/vst_release/prebuilts/aarch64/libnvstoragemanagement.so", O_RDONLY|O_CLOEXEC) = -1 EACCES (Permission denied)
[pid 739] openat(AT_FDCWD, "/root/vst_release/prebuilts/aarch64/libnvsensormanagement.so", O_RDONLY|O_CLOEXEC) = -1 EACCES (Permission denied)
[pid 739] openat(AT_FDCWD, "/root/vst_release/prebuilts/aarch64/libnvds_logger.so", O_RDONLY|O_CLOEXEC) = -1 EACCES (Permission denied)
[pid 739] openat(AT_FDCWD, "/root/vst_release/prebuilts/aarch64/libnvds_redis_proto.so", O_RDONLY|O_CLOEXEC) = -1 EACCES (Permission denied)
[pid 739] openat(AT_FDCWD, "./cfg_redis.txt", O_WRONLY|O_CREAT|O_TRUNC, 0666) = -1 EACCES (Permission denied)
[pid 739] openat(AT_FDCWD, "/root/vst_release/prebuilts/aarch64/libnvpeerconnection_live.so", O_RDONLY|O_CLOEXEC) = -1 EACCES (Permission denied)
[pid 739] openat(AT_FDCWD, "/root/vst_release/prebuilts/aarch64/libnvpeerconnection_replay.so", O_RDONLY|O_CLOEXEC) = -1 EACCES (Permission denied)
[pid 739] openat(AT_FDCWD, "/root/vst_release/prebuilts/aarch64/libnvstreambridge.so", O_RDONLY|O_CLOEXEC) = -1 EACCES (Permission denied)
[pid 739] openat(AT_FDCWD, "/root/vst_release/prebuilts/aarch64/libllosd.so", O_RDONLY|O_CLOEXEC) = -1 EACCES (Permission denied)
[pid 739] openat(AT_FDCWD, "/root/vst_release/prebuilts/aarch64/libgstcuosdmeta.so", O_RDONLY|O_CLOEXEC) = -1 EACCES (Permission denied)
[pid 859] openat(AT_FDCWD, "./webroot/recording_qos_2026-06-29T00:22:49Z.csv", O_WRONLY|O_CREAT|O_APPEND, 0666) = -1 EACCES (Permission denied)
[pid 803] openat(AT_FDCWD, "disconnected_device_2026-06-26T04:01:46.606Z_2026-06-26T04:01:48.391Z.ts", O_WRONLY|O_CREAT|O_TRUNC, 0666) = -1 EACCES (Permission denied)

```

From this the last line is generated when I use the export API. It seems to want to create a temporary file in the binary directory. So `/opt/vst_release/<here>`, by default this has the following permissions:

```auto
drwxr-xr-x 1 root root 4096 Aug 1 2024 vst_release

```

Changing only the application directory (not recursively) fixes this issue and files can now be downloaded using the VST API:

```auto
root@jetson:/opt/vst_release# chown 2000:150 /opt/vst_release/
root@jetson:/opt/vst_release# ls -al /opt/
total 24
drwxr-xr-x 1 root root 4096 Aug 1 2024 .
drwxr-xr-x 1 root root 4096 Jun 29 00:14 ..
drwxr-xr-x 1 root root 4096 Aug 19 2023 nvidia
drwxr-xr-x 1 vst logusers 4096 Aug 1 2024 vst_release

# For this output I manually made the users/group.

```

* * *

On an aside, it seems that the binary looks first for the compiled libraries in the user’s home directory, I assume it finds the correct ones in `/opt/vst_release/prebuilts/*` after the fact (no need to verify).

It also by default is missing permissions to `/opt/vst_release/webroot/config.js` which the application also wants, but again I assume it must just use a default when it fails.

* * *

So to fix the issues identified here, I would recommend using a dockerfile:

```auto
FROM nvcr.io/nvidia/jps/vst:1.3.0-24.07.1-aarch64

ARG HOST_UID=2000
ARG HOST_GID=150

RUN groupadd -g ${HOST_GID} logusers && \
    useradd -m -u ${HOST_UID} -g ${HOST_GID} vst

RUN chown vst:logusers /opt/vst_release && \
    chown vst:logusers /opt/vst_release/webroot/config.js

```

And replace the image line in the docker compose with the build line:

```auto
# image: nvcr.io/nvidia/jps/vst:1.3.0-24.07.1-aarch64
build: 
   context: .
   dockerfile: dockerfile

```

You could just recursively run the one command `chown -R vst:logusers /opt/vst_release` instead. This may fix other issues in addition to the ones highlighted here, but for the ones specifically identified in this post the dockerfile above corrected them. I myself will just use the recursive command to hopefully avoid any other permission issues:

```auto
FROM nvcr.io/nvidia/jps/vst:1.3.0-24.07.1-aarch64

ARG HOST_UID=2000
ARG HOST_GID=150

RUN groupadd -g ${HOST_GID} logusers && \
    useradd -m -u ${HOST_UID} -g ${HOST_GID} vst

RUN chown vst:logusers -R /opt/vst_release

```

Please let me know if I should make any further changes!

---

<div class="post-metadata">

**Author:** ![system](https://sea2.discourse-cdn.com/nvidia/user_avatar/forums.developer.nvidia.com/system/32/68080_2.png) [@system](https://forums.developer.nvidia.com/u/system)\
**Post date:** [July 13, 2026, 1:03am UTC](https://forums.developer.nvidia.com/t/vst-video-exporting-error/374424/9 "2026-07-13T01:03:39Z")

</div>

Closed on July 13, 2026, 1:03am UTC

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.
