H265 Encoding is not working

Please provide complete information as applicable to your setup.

• Hardware Platform (Jetson / GPU) Jetson Xavier AGX
• DeepStream Version 5.0
• JetPack Version (valid for Jetson only) 4.4
• TensorRT Version 7.1.3
• NVIDIA GPU Driver Version (valid for GPU only)
If it I am using this code, it would run without any problem.

gst-launch-1.0 filesrc location=./test264.mkv ! matroskademux ! h264parse ! nvv4l2decoder ! queue ! m.sink_0 \
nvstreammux name=m batch-size=1 width=1280 height=720 ! queue ! nvinfer config-file-path=/opt/nvidia/deepstream/deepstream-5.0/samples/configs/deepstream-app/config_infer_primary.txt ! nvmultistreamtiler width=1280 height=720 rows=1 columns=1 ! nvvideoconvert ! nvdsosd ! queue ! tee name=deep \
deep. ! nvvideoconvert ! nvv4l2h264enc insert-sps-pps=true iframeinterval=10 ! tee name=h264 \
h264. ! h264parse ! matroskamux ! filesink name=file location=test-h264-0.mkv \
deep. ! nvvideoconvert ! nvegltransform ! nveglglessink sync=false -e

However, when I change the encoder to H265 as the following, it will freeze at the first frame.

gst-launch-1.0 filesrc location=./test264.mkv ! matroskademux ! h264parse ! nvv4l2decoder ! queue ! m.sink_0 \
nvstreammux name=m batch-size=1 width=1280 height=720 ! queue ! nvinfer config-file-path=/opt/nvidia/deepstream/deepstream-5.0/samples/configs/deepstream-app/config_infer_primary.txt ! nvmultistreamtiler width=1280 height=720 rows=1 columns=1 ! nvvideoconvert ! nvdsosd ! queue ! tee name=deep \
deep. ! nvvideoconvert ! nvv4l2h265enc insert-sps-pps=true iframeinterval=10 ! tee name=h265 \
h265. ! h265parse ! matroskamux ! filesink name=file location=test-h265-0.mkv \
deep. ! nvvideoconvert ! nvegltransform ! nveglglessink sync=false -e

Does anyone know the reason ? Thanks.

I have implemented the same pipeline with gst-python, gst-interpipe. The H265 encoding does not have problem in this case.

The pipeline paused in prerolling status. Can you add a “queue” in the “nvvideoconvert ! nvegltransform ! nveglglessink sync=false -e” branch?
Such as:
deep. ! queue ! nvvideoconvert ! nvegltransform ! nveglglessink sync=false -e

1 Like

Thank you very much. It works although I still do not know why a small change will lead to this problem.