How the workflow should be for video playback application using NVDEC?


I’m working on to develop a video playback application using hardware decoder NVDEC, and my platform is Jetson Orin NX 8GB. Based on the existing samples in jetson multimedia api, all of them aim to decode the entire h264/265 video file and display on the screen frame by frame continuously. However, for the real video playback application, functionalities like “play/pause, jump to specific timestamp” are very common. I’m not that familiar with such application, so would anyone give some suggestion on the workflow?

Some random thoughts of mine:

  • Load the video data and decode it, save the decoded NvBuffer one by one aside. However, I know the maximum # of frame buffer is 1024. Then it’s not achievable. Also due to the memory limit, Orin NX 8GB’s ram won’t fit much frames in 4K.


There are existing implementations in gstreamer. Please try to run gst-play-1.0 command like:

$ DISPLAY=:0 gst-play-1.0 file:///tmp/test.mp4

Hi Dane,

Firstly, wish you a merry Christmas! Thanks for reply, I will try the gstreamer command, but is there any reference to implementation of a “video player” using NVDEC in C++? as I mentioned, I need to develop the functionalities like, pause/play, jumping to desired timestamp (frame number) programmatically.


You may try ffplay in ffmpeg. For downloading the source code, please refer to
【jetpack 5.1.2】Error while loading shared libraries: - #10 by DaneLLL
The sample is in


Somehow we are not able to build the sample. Please explore on this and would be great if you can figure it out and share us the steps.

For gstreamer-based samples, you can go to gstreamer website to download source code of gst-play-1.0, or download nvgstplayer-1.0 from

Driver Package (BSP) Sources

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