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 EMSG events during DASH playbacks #2176

Closed
ChernyshovYuriy opened this issue Dec 10, 2016 · 10 comments
Closed

Support EMSG events during DASH playbacks #2176

ChernyshovYuriy opened this issue Dec 10, 2016 · 10 comments

Comments

@ChernyshovYuriy
Copy link

ChernyshovYuriy commented Dec 10, 2016

Hi,
In one of the closed issue (#1414) you mentioned that:

For DASH and SmoothStreaming custom data can be embedded directly into the media in 
EMSG boxes, which we'll be adding support for in 2.x.

Is there any updates on this case so far for the version 2.0.4?

@ojw28
Copy link
Contributor

ojw28 commented Dec 11, 2016

This is not supported yet. Let's use this issue to track the enhancement.

@ojw28 ojw28 changed the title EMSG for DASH stream. Support EMSG events during DASH playbacks Dec 11, 2016
@ChernyshovYuriy
Copy link
Author

Thanks for feedback!
Can you spot a class to start investigate from?
Perhaps, if you have not enough resources for this issue, I can start to implement and submit pull request later?

ojw28 added a commit that referenced this issue Jan 4, 2017
Issue: #2176

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=143554094
ojw28 added a commit that referenced this issue Jan 4, 2017
- Parse EMSG leaf atoms during FMP4 extraction (although
  currently they're just discarded).
- Add readNullTerminatedString to ParsableByteArray.

Issue: #2176

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=143555965
ojw28 added a commit that referenced this issue Jan 9, 2017
Note: End to end emsg support is still non-functional.
There's some additional plumbing that still needs to
be done.

Issue: #2176

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=143775147
ojw28 added a commit that referenced this issue Jan 9, 2017
Issue: #2176

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=143776526
ojw28 added a commit that referenced this issue Jan 10, 2017
This is analogous to what we do for text/subtitles, and
adds support for playlists where the type of metadata
changes from one playlist item to the next.

Issue: #2176

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=143948307
ojw28 added a commit that referenced this issue Jan 20, 2017
This is more consistent with our handling of DRM init data,
and is more correct. It'll be up to whoever's using the
manifest to look one layer deeper and figure out what event
streams are defined on all representations, if they wish to
do so.

Issue #2176

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=144968183
ojw28 added a commit that referenced this issue Jan 20, 2017
Issue #2176

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=144969838
ojw28 added a commit that referenced this issue Jan 20, 2017
Issue #2176

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=144998826
ojw28 added a commit that referenced this issue Jan 20, 2017
Issue #2176

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=144999302
ojw28 added a commit that referenced this issue Jan 20, 2017
Issue #2176

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=144999973
ojw28 added a commit that referenced this issue Jan 25, 2017
- Fix to use different track ids for EMSG + CEA608, so they can
  both be enabled at once.
- Tweaked extractor to output formats prior to endTracks() when
  parsing the initial moov box. This makes it easier to handle
  multiple tracks through the chunk package. It may or may not
  be made a requirement (it's already true for the MKV extractor).

Issue: #2362
Issue: #2176

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=145538757
@Rohit-Varma1
Copy link

Doesn't seem to work. Tested with 2 DASH streams using the DEMO app provided. Doesn't prints out the EMSG in the EventLogger. The same streams work in SHAKA player when tested on web.

@ojw28
Copy link
Contributor

ojw28 commented Feb 2, 2017

The work is not finished (which is why the issue hasn't been closed). It's not expected to work at this point.

@ChernyshovYuriy
Copy link
Author

@rohitvarma1986 , there is dedicated branch that works fine:
https://github.com/google/ExoPlayer/tree/dev-v2-emsg-experimental

@Rohit-Varma1
Copy link

@ojw28 : Thank you for the prompt reply. Is there any estimate at this point , regarding when it would be done ?

@jlacivita
Copy link

Hi @ojw28. For context, this feature is very important for ExoPlayer/DASH adoption in North America, particularly for OTT apps streaming content originally aired on TV. Nielsen provides a critical viewership measurement SDK that requires access to eMSG data during playback. Any OTT app considers Nielsen integration to be a requirement at some point, and they're all waiting for this.

Until we have eMSG data, north american OTT apps are forced to stick with HLS, which means they can't use DRM on Android.

@ojw28
Copy link
Contributor

ojw28 commented Feb 12, 2017

Note from ref'd issue: An additional test stream is available at http://se-mashup.fokus.fraunhofer.de:8080/dash/assets/adinsertion-samples/events/inband/dash.mpd

ojw28 added a commit that referenced this issue Feb 15, 2017
Issue: #2362
Issue: #2176

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=146243681
ojw28 added a commit that referenced this issue Feb 15, 2017
This allows binding by track type in ChunkExtractorWrapper, which
allows the EMSG and 608 tracks to be enabled on FragmentedMp4Extractor
in DefaultDashChunkSource. ChunkExtractorWrapper currently binds these
to DummyTrackOutputs.

Note: I wanted to pass the mimeType instead, since it's a more specific,
but unfortunately there's at least one place where it's not known at the
point of invoking track() (FlvExtractor).

Issue #2176

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=146471082
ojw28 added a commit that referenced this issue Feb 23, 2017
Issue #2176

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=148027655
ojw28 added a commit that referenced this issue Feb 23, 2017
Issue: #2362
Issue: #2176

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=148216614
ojw28 added a commit that referenced this issue Feb 28, 2017
This change exposes declared CEA-608 and EMSG tracks. The
tracks currently provide no samples.

Issue: #2362
Issue: #2176

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=148390849
ojw28 added a commit that referenced this issue Feb 28, 2017
Issue: #2362
Issue: #2176

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=148764237
ojw28 added a commit that referenced this issue Mar 10, 2017
Issue: #2362
Issue: #2176

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=149524412
ojw28 added a commit that referenced this issue Mar 10, 2017
I think it's likely we'll revert back to discarding media
in sync with the playback position for ExtractorMediaSource
and HlsMediaSource too, where the tracks are muxed with ones
we're requesting anyway.

Note: discardBuffer is named as it is because it'll also be
used to discard for enabled tracks soon, as a result of the
remaining TODO in ChunkSampleStream. For enabled tracks the
discard will also be conditional on the samples having been
consumed, obviously.

Issue: #2362
Issue: #2176

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=149525857
@ojw28
Copy link
Contributor

ojw28 commented Mar 12, 2017

This functionality should be working now in dev-v2. Please give it a try.

There's still one technical issue where events might go missing when seeking short distances and/or toggling the event tracks on and off, so the issue is kept open to track fixing that. It's unlikely to be much of an issue in practice, however.

@ojw28
Copy link
Contributor

ojw28 commented Mar 16, 2017

Marking as fixed. We'll track the remaining minor issue separately.

@ojw28 ojw28 closed this as completed Mar 16, 2017
@google google locked and limited conversation to collaborators Jul 15, 2017
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

4 participants