I am trying to display 2 videos as a quad using nvcompositor and then send that composite image to an rtsp-server. My videos are pulled from a udpsrc (30 fps, bitrate=1000000).
When I send a single video through the rtspserver, it plays beautifully. But the composite image only looks good for 2 seconds before pixelation and blockiness and weird color gradients start to accumulate in the stream. I inherited these pipelines, so I’m not entirely sure the rhyme or reason for how the composite pipeline is written. Most tutorials I have found for the compositor has had very simple examples. Nothing like the acrobatic pipeline I have inherited :-p
I have 2 questions.
Why is the pipeline for a single video so simple: src–> caps → queue → depay -->pay
But the pipeline for the composite so complicated with decodebins, nvvidconvs, and so many caps?
Any ideas on how to improve the video quality in the composite?
Here is the pipeline I use for the single video that is streamed beautifully.
I would also like to add that if I were to change the encoding on the udpsrc to be H264, and replace all the H265s in the above pipeline to H264, the streaming quality instantly improves.
I’m attaching a screenshot so you can get an idea of what I mean by pixelation and weird colors. I’m holding a rainbow stuffy in the screenshot.
Hi,
It seems like iframeinterval=100 may triggers the issue. For real-time streaming the value looks to be too large. Would suggest try small value such as 15, 30, 60.
For further investigation please break down the pipeline and also try gst-launch-1.0 command. Such as use nvoverlaysink to display directly:
Thanks for the suggestions. I tried removing the iframeinterval=100, but it did not help.
I also tried a smaller pipeline launched using gst_parse_launch and streamed to the nveglglessink to see if the issue remained. The issue was still there.
Here is the smaller pipeline without using the composite, and the stream looks fine:
Hi Dane,
I have tried saving to a local file as you suggested. And the pixilation is still present in the recorded stream. Do you have any suggestions on how to work around NOT using rtph265pay and rtph265depay? Are there other plugins/elements I could use?
I really appreciate all your help so far. Thanks for the much more concise pipeline to try. Unfortunately, the video stream still shows pixilation and weird colors. The stream starts off looking fine, but within a few seconds it begins to deteriorate.
I also tried replacing the nvcompositor element with the generic compositor element. That did not make things better.
I also tried feeding a videotestsrc to port 10106 to see if that would make the composite feed look better. It did look better!
This made me suspect my video source, so I tried this pipeline to check that the video source is fine. This pipeline produced a fine stream.