Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Manifest refresh for livestreams #77

Closed
quthla opened this issue Sep 23, 2017 · 15 comments
Closed

Manifest refresh for livestreams #77

quthla opened this issue Sep 23, 2017 · 15 comments

Comments

@quthla
Copy link

quthla commented Sep 23, 2017

Unfortunately, e.g. for pvr.zattoo, the manifest is not being refreshed and as such if one seeked back before, it is impossible to return to live unless stream is restarted.

Would be nice to have a fileitem prop defining an interval in which the manifest should be refreshed completely.

@peak3d
Copy link
Contributor

peak3d commented Nov 10, 2017

Is this one still open?
b.t.w. its wrong to let addon tell inputream.adaptive how often refresh is called.
It depends on the segment size of the fragmented stream parts and is nothing wich should steered from outside.

@quthla
Copy link
Author

quthla commented Dec 21, 2017

Yes, it's still open.

Also I noticed that Inputstream won't work if number of segments exceeds uint16_t max (65535) in cases of high timeshift buffer. Would be nice if that could be fixed as well.

@quthla
Copy link
Author

quthla commented Dec 21, 2017

https://github.com/peak3d/pvr.zattoo/blob/adb34867704ba994394c4bcff45a4a0e68739663/src/client.cpp

Just stumpled upon that commit which never made it to upstream. The manifest update parameter makes the tree update itself regularly?

@peak3d
Copy link
Contributor

peak3d commented Dec 21, 2017

Yes, but for K18 only IIRC, I had some discussion with @rbuehlma in the past about this.

Edit: Just looked again, its as well in the Krypton branch, so all good to go.

@rbuehlma
Copy link
Contributor

Oh, interesting. shall I cherry pick this commit?:

Is mimetype really required?

@peak3d
Copy link
Contributor

peak3d commented Dec 21, 2017

@rbuehlma mimetype speeds up stream start (if you include the SetContentLookup(False) because Kodi does not make the extra HEAD request to detect the mime-type.

In general manifest update can be simple (full) which means that after each processed segment the manifest is again retrieved and merged to the existing one.
But there are cases (YouTube e.g.) which provide more intelligent logic to only retrieve changed segments. This helps to reduce download bandwidth.

Best would be to play zattoo in web browser and analyze if manifest update include special headers as etag or sequence / start number attributes. If we know if zattoo uses parameters for this to reduce download size, pls. let me know.
There are already some possibilituies in inputstream.adaptive.

@rbuehlma
Copy link
Contributor

Great. I'll do that and post the result here. Thanks for the explanation.

@quthla
Copy link
Author

quthla commented Dec 21, 2017

I think I tried it already with update parameter "full" but if I remember it correctly, it didn't change anything about the issue.

Regarding Zattoo web: Manifest is requested every 8 seconds and the client receives the full manifest back.

@peak3d: Is there any fix for the high timeshift buffer issue? You probably know better which variable causes the issue if segment count > 65535

@rbuehlma
Copy link
Contributor

Actually, the manifest update does work for me :) I have cherry-picked your commit. Thank you both.

@rbuehlma
Copy link
Contributor

How should i include "SetContentLookup". I think this would require a change in Kodi itself or is there a way to set it from the addon?

@rbuehlma
Copy link
Contributor

missed to mention that I had the binary PVR API in mind :) but in any case, this issue is solve from my point of view.

@peak3d
Copy link
Contributor

peak3d commented Dec 22, 2017

You can do the same in binary addon IIRC, have seen it recently but forgotten how :-(

@peak3d
Copy link
Contributor

peak3d commented Dec 22, 2017

xbmc/xbmc#12755
SetContentLookup(false) is called internally if you use the mimetype property

@rbuehlma
Copy link
Contributor

Perfekt. Thanks for checking. The start of a stream is already such quick that i cant feel a difference. :) but there will probabaly more for slower internet connections.

@peak3d peak3d closed this as completed Mar 10, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants