bmdtools icon indicating copy to clipboard operation
bmdtools copied to clipboard

Continue after stream interruption

Open glennolsen opened this issue 8 years ago • 8 comments

Using avconv to pull an RTMP stream off of the rtmp Nginx module and sent it to bmdplay for output on a Blackmagic SDI card. If the RTMP stream is interrupted at all avconv will display non monotnic DTS errors (makes sense) and eventually settles down and is happy again, but it appears that bmdplay stop receiving from the pipe and avconv starts to buffer. I am starting to look into code, but is bmdplay capable of handling stream interruptions gracefully? Is there an option flag I am missing?

avconv -r 30 -max_delay 1000 -probesize 500000 -analyzeduration 3000000 -fflags nobuffer -i rtmp://localhost:1935/AV2015Local/stream1 -f nut -strict experimental -c:v copy -c:a pcm_s16le - | /home/vidcontrol/Builds/'Blackmagic DeckLink SDK 10.4.1'/Linux/Samples/bmdtools-master/bmdplay -m 13 -C 0 -f pipe:0

Glenn

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/24156690-continue-after-stream-interruption?utm_campaign=plugin&utm_content=tracker%2F256764&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F256764&utm_medium=issues&utm_source=github).

glennolsen avatar Jul 11 '15 20:07 glennolsen

bmdplay is really simple and I'm adding complexity as the need arises, I never had this problem though if no data is fed normally bmdplay would just quit (so you can put it on a simple loop).

lu-zero avatar Jul 12 '15 10:07 lu-zero

Hi Glennolsen, maybe you should consider to instruct avconv to exit if errors occur and restart (simple while/do loop). -xerror option should handle this if I'm not wrong

felixdreinulldrei avatar Aug 29 '15 11:08 felixdreinulldrei

Hi lu-zero, Is this behavior still the same. I also got this issue, do we have a solution for this behavior. Thanks.

mfnahmed avatar Jul 04 '17 12:07 mfnahmed

If the stream is interrupted the chain of programs should be terminated and then restarted.

Exactly how are you causing this condition? Could you make a sample file to reproduce the issue in a predictable way?

I have plans to rewrite some of the bmdplay to rely less on avconv (and not die because piping 4K content makes memcpying the buffers too wasteful), but I'm currently a bit busy with my paying job :).

lu-zero avatar Jul 04 '17 12:07 lu-zero

Hi,

This is not an issue of bmdplay. I use "another" project than avconv and I use librtmp with that. I modified librtmp to resume after net interrupts in meanwhile making sender side buffer and push the delayed packets. Using bmdplay with a suitable buffer works like a arq protocol.

ggnull35 avatar Jul 04 '17 12:07 ggnull35

You can provide the patches to Libav as well : P

lu-zero avatar Jul 04 '17 12:07 lu-zero

I released on the "other" project, they didnt like the coding :) Maybe I send you, you can review it. (BTW, it is really dirty coding - as I am capable of :D -, but does the job.)

ggnull35 avatar Jul 04 '17 13:07 ggnull35

Thanks for quick response. It's an HLS stream that I make source to avconv and pipe to the bmdplay. when there is a fluctuation in the network bandwidth or some other reason the input video gets stuck. Then suddenly the video output from the bmdplay freezes. Normally the source quickly get recovers and the start steaming but what I can see a frozen frame from the The memory usage of bmdplay increases and at some point. Following message appears. "Queue size **** problems ahead" In the meantime the RAM usage of bmdplay increases until it reaches near 100% and it get killed automatically. The glitch of video source makes the bmdplay to hold two to three minutes to get resumed when I use a infinite loop to make it run again.

mfnahmed avatar Jul 05 '17 17:07 mfnahmed