After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 774128 - rtmp: add is-live to rtmpsrc
rtmp: add is-live to rtmpsrc
Status: RESOLVED NOTABUG
Product: GStreamer
Classification: Platform
Component: gst-plugins-bad
git master
Other All
: Normal enhancement
: git master
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2016-11-09 05:49 UTC by Sean-Der
Modified: 2018-10-01 09:45 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
Patch against git master (2.32 KB, patch)
2016-11-09 05:49 UTC, Sean-Der
none Details | Review
Example pipeline showing compositor behavior when one input has a DROP=true valve (1.09 KB, text/x-csrc)
2016-11-10 05:55 UTC, Sean-Der
  Details

Description Sean-Der 2016-11-09 05:49:33 UTC
Created attachment 339362 [details] [review]
Patch against git master

Add the is-live property to rtmpsrc
Comment 1 Sebastian Dröge (slomo) 2016-11-09 07:27:19 UTC
What problem does that solve for you, how can this problem be reproduced?

rtmpsrc is not really a live source in GStreamer terms
Comment 2 Nicolas Dufresne (ndufresne) 2016-11-09 15:08:31 UTC
I think I've seen a discussion somewhere, please provide a appropriate context to open the discussion. Also, commit messages should explain why you think adding this today make sense for you. (I know is has something to do with the Aggregators, but isn't it better to force the aggregator to be live instead of this lie ?)
Comment 3 Sean-Der 2016-11-10 05:54:02 UTC
I compositing multiple RTMP sources, but having a hard time getting my pipeline to 'degrade gracefully' under heavy load. If my CPU can keep up with 30 FPS (FPS of RTMP cameras it works great) but if it can only do 28 FPS it quickly falls gets very bad.

I noticed that the compositor was blocking every time a video would hang, and was investigating why. Then I noticed the behavior in the attached .c, if one pad of a `non-live source` is not getting buffers it will block all other `non-live sources` as well.

Maybe I am barking up the wrong tree, but just trying to alleviate an overloaded compositor OR overloaded encoder
Comment 4 Sean-Der 2016-11-10 05:55:22 UTC
Created attachment 339426 [details]
Example pipeline showing compositor behavior when one input has a DROP=true valve
Comment 5 Sean-Der 2016-11-10 06:20:48 UTC
@stormer Is it possible to force the aggregator to be live right now? For me this behavior exists on a per pad basis. So two live sources, and two non-live sources against the same VideoAggregator have different behaviors.

I am still learning GStreamer, but the use of `is-live` is confusing for me. I stumbled upon this behavior of is-live+VideoAggregator and just assumed this patch could be helpful for others.
Comment 6 Olivier Crête 2016-11-10 22:10:39 UTC
Just add a "identity sync=true" between the source and the compositor somewhere, it will make the non-live stream into a "fake" live stream.
Comment 7 Ilya Smelykh 2018-10-01 09:45:41 UTC
This patch solves the problem with gst-rtsp-server with retransmitting streams from rtmp to rtsp. 
gst-rtsp-server code from current master performs seek to the time from rtsp play command if upstream is seekable, most opensource rtsp clients implementation always uses 'Range: npt=0.000-' in PLAY request (tested on ffplay, vlc). 
As rtmpsrc reports that it's seekable and current rtmp time could be not 0 gst-rtsp-server fails on seek to time 0 on start.