In the “Technical Specifications” section of https://developer.nvidia.com/embedded/jetson-nano-developer-kit
Jetson Nano Developer Kit is able to decode 18x 720p @ 30 (H.264/H.265).
This is perfect for me, because my application needs to play many videos at the same time. For example, 16 videos in 4x4 grid on one monitor, or 18 videos in 3x3 grid on two monitors.
I’m trying to implement it on my Jetson Nano Developer Kit, but I haven’t found a good solution yet.
One of the strategies is to start a pipeline for each video, but I have to choose a sink first.
I like nvoverlaysink because “overlay-x/y/w/h” and “display-id” make it very convenient to play multiple videos on dual monitors, but there is hardware limitation and it can’t play enough videos for me.
I tried nvdrmvideosink. Its properties “offset-x/y”, “plane-id”, and “conn-id” are useful. But there are errors when I play 5 or 6 videos.
nveglglessink seems better. The properties “window-x/y/width/height” are nice. But I didn’t find any way to play video on the second monitor. I tried something like “DISPLAY=:1” but it didn’t work. Another problem is it requires either X11 or wayland backend, which I’m trying to avoid, but I can go with it if there is no better option.
Another strategy is to use one pipeline for all videos. I’m still not sure how the whole pipeline will be affected by individual videos. For example, some videos might become unavailable while playing. Or, the user may change the source of some videos at any time. I’m hoping the whole pipeline doesn’t need to be restarted in those cases. I tried glvideomixer and compositor, but the performance is unacceptable. Hopefully nvstreammux should have better performance, I might give it a try.
Any advice will be appreciated.