Gstreamer, how recover from (rtmpsink)error

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Gstreamer, how recover from (rtmpsink)error

KPAXIT
Hi list,

I´m building streaming application in python.
Applications writes data to rtmpsink and to filesink using tee element. Starting and streaming works fine in ideal environment(network) but what to do if there is disconnect with streaming server for example? I'm trying to figure out how I at least can make pipeline write data to filesink and block streaming part(rtmpsink)...


What I'm trying to archive:
step 1) At least I would like to keep my archive file(filesink) after error in streaming part(rtmpsink) occur. Hereby we have some backup if error happens.
step 2) Manually reconnect to streaming server.
step 3) Build some mechanism to check for connection

Question(s):
Is it possible to archive what I'm trying to do?
How can it be archived (dynamic pipeline / probes / extra elements )?
 
Any explanation, example or point to right direction will be very much appreciated.

note:
Gst version: gstreamer 1.3.90 (rtmpsink, faac, x264enc)
OS: ubuntu 14.04 LTS
Streaming server: wowza 4.x

Test application (code): link

Pipeline after startup(OK): link


Pipeline after rtmpsink error(Failed to write data): link

Log snippet after rtmpsink error(Failed to write data): link




Reply | Threaded
Open this post in threaded view
|

Re: Gstreamer, how recover from (rtmpsink)error

lestoilfante
Hello,
did you solved this situation?

I'm currently stuck with same problem. Actually I have a valve element before rtmpsink and when rtmpsink fire an error on bus I put valve in drop state but this doesn't solve, pipeline stop to write on filesink aniway... Btw rtmpsink as async=false

Thank you

On Tue, Dec 30, 2014 at 6:16 PM, KPAXIT <[hidden email]> wrote:
Hi list,

I´m building streaming application in python.
Applications writes data to rtmpsink and to filesink using tee element.
Starting and streaming works fine in ideal environment(network) but what to
do if there is disconnect with streaming server for example? I'm trying to
figure out how I at least can make pipeline write data to filesink and block
streaming part(rtmpsink)...


*What I'm trying to archive:*
step 1) At least I would like to keep my archive file(filesink) after error
in streaming part(rtmpsink) occur. Hereby we have some backup if error
happens.
step 2) Manually reconnect to streaming server.
step 3) Build some mechanism to check for connection

*Question(s):*
Is it possible to archive what I'm trying to do?
How can it be archived (dynamic pipeline / probes / extra elements )?

Any explanation, example or point to right direction will be very much
appreciated.

*note:*
Gst version: gstreamer 1.3.90 (rtmpsink, faac, x264enc)
OS: ubuntu 14.04 LTS
Streaming server: wowza 4.x

*Test application (code):*  link
<https://dl.dropboxusercontent.com/u/75885675/gst-test-error.py>

*Pipeline after startup(OK):*  link
<https://dl.dropboxusercontent.com/u/75885675/gst_startup.png>


*Pipeline after rtmpsink error(Failed to write data):*  link
<https://dl.dropboxusercontent.com/u/75885675/gst_error_rtmp.png>

*Log snippet after rtmpsink error(Failed to write data):*  link
<https://dl.dropboxusercontent.com/u/75885675/gst_log.txt>








--
View this message in context: http://gstreamer-devel.966125.n4.nabble.com/Gstreamer-how-recover-from-rtmpsink-error-tp4670055.html
Sent from the GStreamer-devel mailing list archive at Nabble.com.
_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Gstreamer, how recover from (rtmpsink)error

Sebastian Dröge-3
ceyThe logOn Mi, 2016-03-09 at 23:11 +0100, lestoilfante wrote:
> Hello,
> did you solved this situation?
>
> I'm currently stuck with same problem. Actually I have a valve
> element before rtmpsink and when rtmpsink fire an error on bus I put
> valve in drop state but this doesn't solve, pipeline stop to write on
> filesink aniway... Btw rtmpsink as async=false

There are two things here:
1) flow returns: take a look at the errorignore element from gst-
plugins-bad. That allows you to ignore flow errors from downstream to
keep upstream running

2) error messages: usually you would shut down the pipeline completely
if you receive an error message. In your case you probably don't want
that. Best solution for this is a GstBin subclass where in
GstBin::handle_message() you specifically handle error messages that
you want to ignore instead of forwarding them. And could then somehow
signal your application that this output is having an error and should
e.g. be removed.

--
Sebastian Dröge, Centricular Ltd · http://www.centricular.com


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

signature.asc (968 bytes) Download Attachment