I have a usecase where I would like to capture the gpu framebuffer from my jetson nano (for recording purposes) for any arbitrary display output. I can’t rely on compiled in vulkan or opengl capture methods. Using the xorg based
x11grab from ffmpeg or the similarly named device from gstreamer are not options as they have a high CPU toll and are not able to capture at very high framerates due to this.
I can’t capture /dev/fb# directly as this is only used before nvgpu initializes to show the kernel log on screen. Once nvgpu initializes, some other buffer is used as the framebuffer and this does not seem to be available or at least I do not know about it.
NvFBC (as available on desktop gpus, libnvidia-fbc.so) is not available on the jetsons, is there any other similar api or a direct memory location available for capturing the framebuffer?
I already wrote that x11 based capture methods are not feasible because they require too much CPU resources and can only capture low framerate/resolutions, that includes both ffmpeg
x11grab and gstreamers
both links you sent are either not helpful (because they use the ximagesrc) or are for linux when using the fbdev driver to capture via /dev/fb#. nvgpu does not use /dev/fb# once it initializes, you should know this.
I will ask my question again then, is there any way to get the framebuffer on the jetsons in a way similar to NvFBC (like available on desktop GPUs) or is there a particular ram address that can be obtained and pointed at to obtain the current front buffer?
We don’t have the function to get the frame buffer directly. There is security concern in directly accessing the frame buffers so it would need to go through other software stacks.
This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.