Hi,
The following pipeline is working for me as server (nvidia latest jetpack):
gst-launch-1.0 -e nvarguscamerasrc maxperf=1 ! 'video/x-raw(memory:NVMM), width=(int)3280, height=(int)2464, format=(string)NV12, framerate=(fraction)21/1' ! omxh265enc bitrate=8000000 iframeinterval=40 ! video/x-h265,stream-format=byte-stream ! rtph265pay ! udpsink host=192.168.1.47 port=5000 sync=false async=false
client pipeline on Windows (with latest gst 1.16.1):
gst-launch-1.0 -vvv udpsrc port=5000 ! application/x-rtp,encoding-name=H265,payload=96 ! rtph265depay ! h265parse ! queue ! avdec_h265 ! autovideosink sync=false async=false -e
i was trying to replace the server pipeline to use the nvv4l2h265enc:
gst-launch-1.0 -e nvarguscamerasrc maxperf=1 ! 'video/x-raw(memory:NVMM), width=(int)3280, height=(int)2464, format=(string)NV12, framerate=(fraction)21/1' ! nvv4l2h265enc bitrate=8000000 ! h265parse ! rtph265pay mtu=1400 ! udpsink host=192.168.1.47 port=5000 sync=false async=false
but client is not able to render the stream on windows.
Any help is appreciated. All the documentation i have seen is matching the above pipelines.
and thanks to nvidia for this board
Not sure, but in latter case with nvv4l2h265enc you’ve removed the byte-stream format. If not deliberate, you may try to specify it again:
gst-launch-1.0 -e nvarguscamerasrc maxperf=1 ! 'video/x-raw(memory:NVMM), width=(int)3280, height=(int)2464, format=(string)NV12, framerate=(fraction)21/1' ! nvv4l2h265enc bitrate=8000000 ! h265parse ! <b>video/x-h265,stream-format=byte-stream</b> ! rtph265pay ! udpsink host=192.168.1.47 port=5000 sync=false async=false
Note I’ve also removed the mtu option since it was working without in the first case.
thanks @Honey_Patouceul , while I’m testing your pipeline, I came to see what is the difference between nvv4l2h265enc & omxh265enc.
In case of omxh265enc, receiver pipeline will work whether the sender/transmitter pipeline starts before the receiver pipeline or after that.
In case of nvv4l2h265enc, receiver pipeline will only work in case sender pipeline starts after the receiver pipeline which makes things difficult i.e. i need to run the decoder pipeline and leave it open until the server starts up.
I’m not sure if this has anything to do with insert-spsppsatidr not being supported for nvv4l2h265enc. (omxh265enc supports insert-spsppsatidr)
I’m not sure if anything can be done here
Sorry, I have no Nano nor any R32 running and I have no knowledge of nvv4l2 plugins, so this is just 3 cents speculation…
Can you view it locally if you stream to localhost ?
Very unsure it helps, but you might try :
a lower resolution. If this improves, it might be related to socket kernel buffer max size on receiver side.
adding config-interval=1 in rtph265pay options (even more unsure, same option for h265parse)
specifying different h265 profiles in caps after nvv4l2h265enc
adding queue after nvv4l2h265enc (and maybe another one after udpsrc on receiver side)
changing sync/async options
You may also try this . Looks more relevant with your observations.
adding config-interval=1 in rtph265pay options (even more unsure, same option for h265parse)
thank you @Honey_Patouceul , indeed adding config-interval=1 solves the issue