Corrupt video output using Gst-nvvideo4linux2

Please provide complete information as applicable to your setup.

• Hardware Platform (Jetson / GPU) GPU
• DeepStream Version 6.2
• JetPack Version (valid for Jetson only) -
• TensorRT Version 8.5.2
• NVIDIA GPU Driver Version (valid for GPU only) 525.105.17
• Issue Type( questions, new requirements, bugs) bug
• How to reproduce the issue ? (This is for bugs. Including which sample app is using, the configuration files content, the command line used and other details for reproducing)

I am using the Gst-nvvideo4linux2 inside my detection pipeline. But since the Update to DeepStream 6.2 the resulting video is broken. Here is a simplified example of the pipeline

filesrc location=input.mkv ! decodebin name=decode  ! nvvideoconvert ! nvv4l2h264enc ! h264parse ! matroskamux ! filesink location=output.mkv

It seems the output video is not created properly, one reason might be wrong iframes. Checking output.mkv with

ffprobe -v error -skip_frame nokey -show_entries frame=pkt_pts_time -select_streams v -of csv=p=0 test.mkv

results in a single iframe

0.000000

Two possible workarounds I have found are:

  1. using x264enc instead of nvv4l2h264enc. But this is much slower.
  2. Setting the property tuning-info-id=1 HighQualityPreset instead of the default 2 LowLatencyPreset.

Both produce a correct video with ffprobe output

0.000000
12.500000
25.000000
37.500000
50.000000

Am I missing something here when switching from DeepStream 6.1 to 6.2?

2 Likes

What is your GPU? I can not reproduce the corruption with T4 GPU.

I tested on T4 and RTX2080ti. Both resulted in the corrupted video.

Can you upload the corrupted videos?

Here is an example with the default settings and with tuning-info-id=1. The missing iframes lead to errors in my pipeline when I try to stream the video.
conv_test_out_default.mkv (8.1 MB)
conv_test_out_tuning-info-id=1.mkv|attachment (8.1 MB)

So your problem is that the I frame interval is too long for streaming, right? The encoded video is fine.
You can use “gst-inspect-1.0 nvv4l2h264enc” to query the properties. The “iframeinterval” property will help to generate I frames in peroid you set. Gst-nvvideo4linux2 — DeepStream 6.0.1 Release documentation

I have already tried that. Unfortunately, the option had no effect on the streamed video or on the result I am getting from the video file when using the the ffprobe command from my original post.

I find same problem and solved by setting tuning -info -id.
The same issue not found in deepstream 6.1

It’s also fixed in DS6.3.

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