Gstreamer variable bitrate for UDP streaming

Hello everyone,

I am currently building a project where we aim to:

“Live stream a drone video over 4G network in real time (~500 ms Latency) and broadcast to a website”.

The process is as follow:

Gstreamer[HDMI video feed -> H264 encode -> RTP -> UDP sink] —> Kurento[rtp -> webRTC] --> [b]browser

[/b]We successfully live streamed over WAN via ethernet and achieved required latency. The result was good.
However when testing with 4G dongle (for real testing scenario), we are facing the issues with UDP streams being halted due to poor network condition depending on the location.

My question is: Does Gstreamer (omxh264enc and udpsink in particular) have variable/adaptive bitrate capability depending on network condition? I would like Gstreamer to automatically reduce the target bitrate if it detects that the network condition is poor and vice versa.

This is my current pipeline:

‘!’, ‘video/x-raw,width=1920,height=1080,framerate=30/1’,
‘!’, ‘videoconvert’,
‘!’, ‘omxh264enc control-rate=1, bitrate=800000’,
‘!’, ‘rtph264pay’,‘config-interval=1’,‘pt=96’,
‘!’, ‘udpsink’,ipStr,portStr,’-v’];

Another question: It seems that Gstreamer stops streaming completely if the network condition is too poor. Is there a way for Gstreamer to simply pause and wait when the network is bad, and continue streaming when the signal gets better?

Hi,
Dynamic bit rate is supported in omxh264enc. Attach a sample for your reference.

For questions related to gstreamer frameworks, please go to
http://gstreamer-devel.966125.n4.nabble.com/

Users in gstreamer forum are more experienced and may offer you better suggestion.
test2.zip (1.6 KB)