-
Notifications
You must be signed in to change notification settings - Fork 0
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
Be able to report interval-based metrics to a 3rd party location via query-arg or header. #117
Comments
Excellent idea. In CMCDv1, it is possible for the client to transmit CMCD data in JSON files (I have not followed CMCDv1 effort so I have never really understood the motivation for it). Do you want to extend this JSON transmission mode with the destination (by default it would be the regular server) and the interval (by default it would be every request)? or do you want to create a separate CMCD transmission? If the latter, would this transmission to an external "CMCD Collector" mean duplicates CMCD transmission (i.e., the client transmits both its regular CMCD report to the CDN server and its beaconed CMCD report to the CMCD collector) or substituting CMCD transmission (i.e., the client transmits only the beaconed CMCD report).
Ideally, these properties would be in the manifest files, wouldn't they? In the case of content steering, is there any "content steering v2" working group in which we could study the integration of such a "CMCD collector" into the spec? Note that the aforementioned duplicated or substituted modes could be part of this spec.
In CMCD, the client emits one report per request. In the case of an interval of say 10 requests, the client should transmit a report that is representative of the 10 reports. In the case of sid, the value is easy to determine since sid is constant.
In the case of bl, the value fluctuates during the whole interval time. Do you want to let the player decide whether it chooses the max, the min, the median, the mean, any percentile?
Here, the player emitted 10 discrete values. Should it send the 10 values? Or again the unique result of any function having the 10 values in input (by default the average)? |
@wilaw : thanks for the summary. As discussed in our last call, there is also a substantial value in adding additional error information in case of a fatal error, which causes the playback to fail or the player to crash. This information is needed to detect playback failures such as broken media streams, codec incompatibilities, DRM problems, etc. To fully understand this To capture these information, we propose to add two new properties:
|
Considering this functionality and a context of multiple CDNs (content steering), I believe we should consider adding a key to indicate the CDN used in the interval. Also consider adding a way to allow custom data |
Meeting:
Summary by Paul - there is value here to do something. Will proceed. Should have downward pressure on the complexity. |
Wanted to note that a potentially very valuable use case we can focus on is providing key data to a content steering service without the service needing to access and process all the cdn logs. It could be a very valuable use case and provide some focus for this feature up front. This also provides more accurate and complete data than just basic throughput which they receive from currently such. I think enabling the option to configure which properties and the interval they are sent could be very useful to a steering service as well as other use cases. |
Paul: Talk about the potential for just error reporting? |
In regards to reporting an error. Possible generic errors - Are they fatal to playback? Yes, they should be fatal. Should also be easy to report and be readily available to the player.
Should we open a different issue? yes. Chairs to open. |
I want to suggest splitting this issue into at least two parts. I believe one is related to defining beaconing, with the minimum set of keys already existing in CMCD v1 and those already defined in CMCD v2. Regarding the addition of new keys like network error or the CDN identifier, I think it's best to have another issue so we can make incremental progress in the spec. |
I fully agree. We had noted that we would split this issue, but I'm holding off until we can hone in on what it is we would like to achieve. My thoughts are we could go a couple ways with this:
I'm sure there are more ways to go with this, but I think we need this to agree on a use case and let that be our guide. |
Jordan: Also mentioned using content steering as the out of band place to do the reporting Letting this marinate another 2 weeks. |
Will: aggregates are hard. we would have to come up with timeframes, player would have to hold state and do calculation Will: I'll take the action to put a strawman in the document |
The SVTA QoE group recently started to work on a new "Standardized Player Error Codes" nomenclature project, maybe that would be a good topic to sync on. |
Talking about 3 proposed data transmission modes. Nick: For mode 2 where we report to a different place than where the media is coming from, shouldn't that be a post? Tightened up new key definitions for url and timestamp. |
Will: Do we do time or state change based? |
With regard to ad plays, there is enough complexity and heterogeneity in players on how ad plays happen, and it shouldn't be assumed that we can get specific CMCD behavior across all players with regard to ad plays. It could even be ad plays are in separate players. That being said, there is a lot of value in understanding a session across ad plays. Regarding the interstitial boolean, made a change such that instead of sending it while an ad is playing, send it on requests for segments for ad content. That way if we get requests to increase buffer on the main content while an add is playing, we can not muddy the waters and also send a player state for the primary content requests like p (paused) for prioritization. Still some open questions here:
|
Paul: would like to close this issue out today and if necessary, spawn new issues. Group consensus to close #117 as fixed. |
💯 |
Today to ingest CMCD data , a distributor must consume CDN logs and extract the data. There is some utility in having the player report a subset of metrics at an interval to a 3rd party collector. This collector may be a QoE system, a content steering server, or some other collector of real-time information. The sending will be triggered by a combination of events and interval reporting.
The player would need to be supplied with two additional properties
The following keys would then be sent, triggered by either an event or the interval:
Instead of sending videoBitrate,videoTopBitrate,audioBitrate,audioTopBirtate,bufferlengthbuffertarget, we could just send just the ratio for compactness: videoBitratePercentage, audioBitratePercentage, bufferPercentage
The text was updated successfully, but these errors were encountered: