Comments (2)
@peaBerberian we are checking with the provider of the streaming platform in what way we can further "tweak" the streams in order to start at the beginning of the inserted pre-rolls ads. Once I have an update on this I will share the results.
from rx-player.
Hi,
First sorry I know we had another channel of discussion and didn't take the time to answer there yet (I now just did a little late).
As discussed, the first segment the RxPlayer can load is determined through a complex combination of multiple MPD attributes. The most important ones seen on the MPD you communicated were: the UTCTiming
element (providing here the live position), the MPD@availabilityStartTime
attribute (providing the base offset), the MPD@timeShiftBufferDepth
attribute (providing the buffer depth server-side, which we for now consider as a delta from the live position derived from the value extracted from the UTCTiming element) and the list of announced segments (to simplify, we determine the intersection of both time ranges derived from [live position - timeShiftBufferDepth, live position]
and the one derived from [time of first segment, time of last segment]
to understand what segments are actually available).
Here it seems that the timeShiftBufferDepth
is I would say "pessimistic" as it did not include the full range of the ad inserted before the actual live content, thus the RxPlayer believes that older segments for the pre-roll ad announced in the MPD are already to old to be requested.
I think that not setting the timeShiftBufferDepth
or setting one high enough will allow the RxPlayer to understand that those segments are still valid but I understand that the tool you have to produce the stream's MPD is not able to do that.
I'm not convinced by the idea of indicating through some API that all segments seen in the initial MPD are all valid because of several issues:
-
after some times, old segments will be removed (if not for the dynamically-inserted pre-roll, at least it will be the case for the first segments of the live content after enough time). So there is still the need to really rely here on the
MPD@timeShiftBufferDepth
attribute in some capacity -
This way of including pre-rolls in a live stream kind-of look like a hack mimicking this is a live content (though I guess most of such solutions are hacky) where it is actually a concatenation of a VoD + live content and the limitation to me seems more tool-related than about the RxPlayer's interpretation of what constitutes a "requestable" segment.
To me, being able to update the
MPD@timeshiftBufferDepth
solution on the MPD seems like a proper way of communicating that dynamic inclusion/exclusions of segments as the MPD is refreshed, though this is not perfect either (as live is actually treated differently than the pre-roll here - I'm not sure that DASH allows for this). -
We tested other live pre-roll solutions, including one from Google, which do work with the RxPlayer (though we still considered those solutions "hacky") without having to perform any updates on the treatment of those attributes (e.g. Google only reported to us a possible optimization but it wasn't related to the aforementioned issue) - so we know that the feature can still work without having to provide and maintain complex player APIs.
So I would first prefer to exchange with the provider of this ad-insertion tool to be able to find a solution which would be more viable.
from rx-player.
Related Issues (20)
- Check Dolby Atmos and Dolby Vision in current stream HOT 3
- Unable to play some streams in Edge browser on RxPlayer v3.30.0 HOT 11
- Streams freeze on first frame with audio only playback on Edge browser (and probably Chrome) HOT 6
- Safari 17 brings MSE to iOS HOT 10
- Some DASH/Widevine streams are looping on a Vestel MB130 HOT 3
- First playback of PlayReady content fails on EDGE browsers HOT 3
- PIPELINE_ERROR_DECODE error observed in Edge browser when zapping live channels HOT 2
- Safari 17.1 issue with playback DRM content HOT 3
- playing MKV VOD with multi Audio track HOT 7
- Infinity loading state on Safari Mobile when autoplay is false HOT 17
- Arrêt brutal du player en Replay sur le mycanal sur HOT 4
- PIPELINE_ERROR_INVALID_STATE error when using Playready/Dash stream (mixed encrypted/unecrypted content) HOT 9
- Freezed VOD stream and lot of audio discontinuities on Samsung Tizen 2017 HOT 11
- Pre-fetching DRM licenses for current and future content
- Widevine LD fallback not triggering in RxPlayer HOT 7
- dashif:laurl not parsed after recent changes
- Resolve base url not correct when root MPD base url start with `/` HOT 2
- DRM: Zero filled TENC KID cause a NO_PLAYABLE_REPRESENTATION error HOT 4
- MEDIA_ERR_DECODE errors are being thrown by rxPlayer when starting the stream HOT 8
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rx-player.