No video encoding (NVENC) support in DeepStream SDK 3.0?

Hi,

From various descriptions and recent webinar on DeepStream SDK 3.0 (slide #7), I got the impression that the SDK contains both video decoder and encoders for use together in a full pipeline as driven by GStreamer. These would be in the form of GStreamer plugins accessing the NVDEC and NVENC feature blocks. But there does not seem to be any video encoders included among the NVIDIA GStreamer plugins, only a set of decoders. Note that I did only look in the SDK for Tesla (actually through the official docker image) and not in the SDK variant for Jetson, which might include such encoders through the “usual” omx* plugins. In our case, we are looking for a solution running on Tesla and similar workstation and data center GPUs (e.g. Quadro).

This is really part of a broader question, i.e. what is the official way to integrate NVENC video encoding with GStreamer on any NVIDIA GPU platform but I might post that separately (and in another forum)…

Thanks.

jsa_tm

Hi Jsa_tm

Can you share your case of NVENC request?
We don’t have NVENC gst-plugin now. Deepstream 4.0 will have this feature.
You can implement it by your self based on video codec sdk 9.0 NVIDIA VIDEO CODEC SDK | NVIDIA Developer
You can also use x264enc

Hi Chris,

Our case is likely quite common and more-or-less as illustrated in the webinar: We receive (uncompressed) video data from cameras that apart from the processing (e.g. tracking) needs to be recorded and thus encoded. The recorded data is for subsequent analysis, debugging, reprocessing, etc.

When is the expected release of DeepStream 4.0? Will source code for the GST plugins be available?

I know we can implement an nvenc GStreamer plugin ourselves using the Video Codec SDK but I do think it would make sense that there would be an official implementation available. There is little point in that everyone needs to do such implementations. You would be the best ones to do such an impl. We can live with a binary-only impl. from you for now, but I would also urge you to make it open-source eventually (the sooner the better). For instance contribute to the work there is already there in gst-plugins-bad ([url]Files · master · GStreamer / gst-plugins-bad · GitLab). This would allow the community to both support and enhance the plugins.

So, please consider a single common implementation for nvenc support (and also for nvdec) in GStreamer, and not tied to just the DeepStream SDK, and preferably make it open-source.

Thanks.

Deepstream 4.0 will be released in about June of this year. A lot of plugins code will open source.

Hi Chris,

Thanks for info. Sounds interesting with the 4.0 release. Will the video codec plugins also be open-source?

We are working on a project where we have an very urgent need for the video encoding part (as in more-or-less now). Would it be possible to use/evaluate the video encoder plugins now (assuming they are in a reasonable beta-state)?

Thanks.

Hi Jsa

Video encoder plugin is on the design reivew. It’s not available now.
I think you can download our low level video codec SDK 9.0 NVIDIA VIDEO CODEC SDK | NVIDIA Developer. There are NVENC sample code. It’s very clear and simple. You can get the NV12 buffer in the deepstream application and then do encoding by using our low level API.

Hi Chris,

Thanks for info. Looking forward to the 4.0 release then.