<div dir="ltr">Hi,<div><br></div><div>I have written a custom element in Python (named 'recovery'), which essentially chains from h264 to h264 to isolate the upstream from errors, and is intended to be inserted before an "flvmux ! rtmpsink" set of elements.</div><div>When the pipeline errors (because the network has failed), the element pauses the pipeline, removes the flvmux and rtmpsink, and replaces them with fresh ones, then resumes the pipeline.</div><div><br></div><div>Pipeline looks like this:</div><div><div>videotestsrc ! omxh264enc ! video/x-h264,profile=high \</div><div>! h264parse name=parse ! recover ! flvmux name=mux ! rtmpsink name=rtmp location=rtmp://server/wowza sync=false async=false</div></div><div><br></div><div>What I am seeing, is that the 'recovery' works - wowza server gets a new rtmp data stream as a result. However, the experience for someone who is watching the stream is this:</div><div> - stream is playing</div><div> - network dies, playback stops in the player</div><div> - gstreamer recovers and wowza reports incoming data again</div><div> - HOWEVER: the player does not recover (the user has to click stop/start to recover)</div><div><br></div><div>Note: if I KILL the gstreamer process, and start it again, then the clients player DOES recover.</div><div><br></div><div>I can only think that the recovered data stream is somehow bad, which upsets the player. Is there some kind of pre-roll header delivery that I need to force to happen during pipeline recovery? How do I do that?</div><div><br></div><div>Thanks,</div><div><br></div><div>Adam</div></div>
<img src="https://u2567673.ct.sendgrid.net/wf/open?upn=SqM5JSCW4zvvQIaoW1CDvMIem8taQSUrkrbhR3x77XRu7BshtfhBNpLhgP2ozglLPdHZ5RfWBWkQuMTUIxdFc4ZSDEJ12Ch-2FwhcDWlS9Q3OFgQ2Jm0n176Z8-2FaLho8bM-2BGGW16hMOdd5noO-2BUFxf-2BUxWnPdaxb1IjDQqJ5XqSznuC1R0wjQ-2Fmxr7gBxmMM1nBKLvAHeQC6CA-2Blpsg-2FFEbnwerg7r39YhXGEMtcMer9G1PPyhuowNOxD5z5Bi6DoP" alt="" width="1" height="1" border="0" style="height:1px !important;width:1px !important;border-width:0 !important;margin-top:0 !important;margin-bottom:0 !important;margin-right:0 !important;margin-left:0 !important;padding-top:0 !important;padding-bottom:0 !important;padding-right:0 !important;padding-left:0 !important;"/>