I have a pipeline that displays a camera and streams it.
(This is an app I deploy). I did a check for CARRIER on the network before I multicast it.
I recently had a problem: The app-machine (linux) is plugged in but not to a DHCP server. So there was CARRIER, but no IP and video failed.
I want to decouple UDP and display so that even if network is bad or fails the display (and record) continues.
RidgeRun’s interpipe seems ideal but when I played with it, early days of development so it may be another cause, it seemed to get CPU usage from 50% to 100% (4 cameras, text overlay, clockoverlay, record, display and multicast)
Any suggestions so the UDP pipeline can freeze without affecting the display
What happens now in this case?
Will udpsink
return an error or?
If so, you could add an errorignore
element between the upstream tee
and your udpsink
(might want to set the property to make it turn errors into flow-ok instead of flow-notlinked).
Note that this won’t stop the sink from posting error messages, but it will prevent upstream elements from seeing the error and stopping streaming.
In the application you can check the source of the error message and ignore it.
UDP-1 start main pipe. Status:GST_STATE_VOID_PENDING no pending state
UDP-1 [error] received from element udpsink0: Could not get/set settings from/on resource.
UDP-1 [error] received from element udpsink0: GStreamer error: state change failed and some element failed to post a proper error message with the reason for the failure.
Thanks I’ll add the errorignore and try that
You could perhaps create a multiudpsink
with no recipients initially and then add recipients with the add-client
action signal once the interface is up, although I guess it will still fail to bind if there’s no interface.
The errorignore solution seems to be just-the-ticket