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

Support EventStream #462

Closed
baconz opened this issue Jul 26, 2016 · 7 comments
Closed

Support EventStream #462

baconz opened this issue Jul 26, 2016 · 7 comments
Assignees
Labels
status: archived Archived and locked; will not be updated type: enhancement New feature or request
Milestone

Comments

@baconz
Copy link
Contributor

baconz commented Jul 26, 2016

Per sections 5.3.2.4 and 5.3.3.7 of the IOP, we should support EventStream in DASH manifests. An EventStream contains Event elements that reference ranges in the timeline. When the playhead hits one of these ranges, the event fires, and delivers the payload of the underlying Event element.

The IOP is not very clear on how this functionality should be implemented, but we have three example use-cases that might inform the behavior:

  1. Fire a beacon when a user views an ad
  2. Change the page context when an ad is in-progress (eg different banner)
  3. Prevent users from scrubbing past ad pods, or take action when they attempt to scrub past ad pods

I can imagine three types of events that Shaka fires, all would contain the payload and the range covered by the event.

  1. timelineeventstart: fired when the playhead hits a point referenced by an Event element. Maybe we can listen to timeupdate on the video element for this?
  2. timelineeventend: fired when the playhead leaves a point referenced by an Event element.
  3. timelineeventcreated: fired when a new event is added to the timeline. This gives us an easy way to track the positions of the events for use-cases like the third listed above.

This is related to, but distinct from EMSG box support, referenced in #259.

If we can agree on a design, I'm happy to put up a PR.

@joeyparrish joeyparrish added the type: enhancement New feature or request label Jul 26, 2016
@joeyparrish joeyparrish added this to the v2+ milestone Jul 26, 2016
@joeyparrish
Copy link
Member

This seems pretty reasonable, but I'd like to defer it until after we wrap up v2.0.0.

@birme
Copy link
Contributor

birme commented Oct 18, 2016

One use case I have been working with is to repackage HLS with SCTE35 base encoded data to multi period MPEG DASH [1] where I add

xmlns:scte35="urn:scte:scte35:2014:xml+bin" 

to MPD root element and then adds an EventStream with this payload:

  <Period id="2470350023" start="PT27448.333589S">
    <EventStream timescale="90000" schemeIdUri="urn:scte:scte35:2014:xml+bin">
      <Event duration="21690000" id="1">
       <scte35:Signal>
         <scte35:Binary>
           /DAlAAAAAAAAAP/wFAUAAAAEf+/+kybGyP4BSvaQAAEBAQAArky/3g==
         </scte35:Binary>
       </scte35:Signal>
      </Event>
    </EventStream>

It would be great if this use case also could be supported and I am happy to contribute with a PR if it sounds like a good idea to support.

[1] https://github.com/Eyevinn/hls-to-dash

@baconz
Copy link
Contributor Author

baconz commented Dec 12, 2016

@joeyparrish is this on your roadmap for the near/medium term? If not, we can take a stab at it.

@joeyparrish
Copy link
Member

We have not scheduled this work. A PR would be welcome, and I have no issues with the three-event design you laid out in the original post. Thanks!

@joeyparrish joeyparrish added the flag: seeking PR We are actively seeking PRs for this; we do not currently expect the core team will resolve this label Dec 14, 2016
@joeyparrish
Copy link
Member

@baconz, are you working on this at the moment? If not, I will try to schedule it for our team.

@baconz
Copy link
Contributor Author

baconz commented Jan 10, 2017

@joeyparrish we have not started on it yet. If you could schedule it that would be great.

@joeyparrish joeyparrish modified the milestones: Backlog, v2.1.0 Jan 10, 2017
@joeyparrish joeyparrish removed the flag: seeking PR We are actively seeking PRs for this; we do not currently expect the core team will resolve this label Jan 10, 2017
@TheModMaker TheModMaker self-assigned this Jan 10, 2017
shaka-bot pushed a commit that referenced this issue Jan 20, 2017
This add the groundwork for event regions that occur while playing.
When the playhead enters (or plays through) a specified region it will
fire enter/exit events for it.  They are not fired when seeking over.

Issue #462

Change-Id: I9e280796bd012ad74d0319aa2056c6f6aa28890d
@TheModMaker
Copy link
Contributor

Now we will fire JavaScript events for the EventStream elements. The design is similar to @baconz design, but the event names are a little different. The three events are timelineregionadded, timelineregionenter, and timelineregionexit.

We also do not parse the Event node. So if you want to get the scte35 info (or anything that is in the Event), you have to parse it in the app.

@shaka-project shaka-project locked and limited conversation to collaborators Mar 22, 2018
@shaka-bot shaka-bot added the status: archived Archived and locked; will not be updated label Apr 15, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
status: archived Archived and locked; will not be updated type: enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

5 participants