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 CEA-608/708 on DASH #1404

Closed
avelad opened this issue Apr 11, 2018 · 30 comments
Closed

Support CEA-608/708 on DASH #1404

avelad opened this issue Apr 11, 2018 · 30 comments
Assignees
Labels
status: archived Archived and locked; will not be updated type: enhancement New feature or request
Milestone

Comments

@avelad
Copy link
Member

avelad commented Apr 11, 2018

Have you read the FAQ and checked for duplicate open issues?: Yes

What version of Shaka Player are you using?: 2.3.5

Can you reproduce the issue with our latest release version?: Yes

Can you reproduce the issue with the latest code from master?: Yes

Are you using the demo app or your own custom app?: Demo app

What browser and OS are you using?: Amy

What are the manifest and license server URIs?:
VOD CEA-608:
https://vm2.dashif.org/dash/vod/testpic_2s/cea608.mpd
Live CEA-608:
https://vm2.dashif.org/livesim/testpic_2s/cea608.mpd
VOD CEA-608 + TTML
https://vm2.dashif.org/dash/vod/testpic_2s/cea608_and_segs.mpd
Live CEA-608 + TTML
https://vm2.dashif.org/livesim/testpic_2s/cea608_and_segs.mpd

According to https://dashif.org/docs/DASH-IF-IOP-v4.2-clean.pdf

6.4.3.3. Signaling CEA-608 caption service metadata

The Accessibility descriptor shall be provided with @schemeIdUri set to urn:scte:dash:cc:cea-608:2015, and an optional @value attribute to describe the captions. If the @value attribute is not present, the Representation contains a CEA-608 based closed captioning service.
DASH-IF Interoperability Points v4.1 141
If present, the @value attribute shall contain a description of caption service(s) provided in the stream as a list of channel-language pairs. Alternatively, a simple list of language codes may be provided, but this is strongly discouraged as it will not provide sufficient information to map the language with the appropriate caption channel.
The @value syntax shall be as described in the ABNF below.
@value = (channel *3 [";" channel]) / (language *3[";" language])
channel = channel-number "=" language
channel-number = CC1 | CC2 | CC3 | CC4
language = 3ALPHA ; language code per ISO 639.2/B

Examples:
Simple signaling of presence of CEA-608 based closed caption service (Note: Not signaling languages is a discouraged practice)
<Accessibility schemeIdUri="urn:scte:dash:cc:cea-608:2015"/>
Signaling of presence of CEA-608 closed caption service languages in English and German
<Accessibility schemeIdUri="urn:scte:dash:cc:cea-608:2015" value="eng;deu"/>
Signaling of presence of CEA-608 closed caption service in English and German, with channel assignments
<Accessibility schemeIdUri="urn:scte:dash:cc:cea-608:2015" value="CC1=eng;CC3=deu"/>
Signaling of presence of CEA-708 closed caption service in English and German
<Accessibility schemeIdUri="urn:scte:dash:cc:cea-708:2015" value="1=lang:eng;2=lang:deu"/>
Signaling of presence of CEA-708 closed caption service in English and easy reader English
<Accessibility schemeIdUri="urn:scte:dash:cc:cea-708:2015" value="1=lang:eng;2=lang:eng,war:1,er:1"/>

Note: In DASH-IF player, it works (http://reference.dashif.org/dash.js/v2.6.7/samples/dash-if-reference-player/index.html)

@avelad
Copy link
Member Author

avelad commented Apr 11, 2018

@joeyparrish
Copy link
Member

We currently only support CEA608/708 in TS segments, so we would need to investigate how to extract them from MP4 segments. Also, our current CEA608/708 support is based on the parser provided by mux.js. We would need to investigate whether or not it makes sense for mux.js to do this for MP4, as well.

@joeyparrish joeyparrish added type: enhancement New feature or request and removed needs triage labels Apr 11, 2018
@shaka-bot shaka-bot added this to the Backlog milestone Apr 11, 2018
@forbesjo
Copy link

We're actually planning this quarter on parsing fmp4 608/708 in mux.js in order to handle fmp4 HLS and DASH. Stay tuned!

@avelad
Copy link
Member Author

avelad commented Apr 13, 2018

@forbesjo, Do you have in mind to support multiple CC in the same MP4?

@forbesjo
Copy link

@avelad yes that should be supported

@joeyparrish
Copy link
Member

Blocked on videojs/mux.js#190

@chrisfillmore
Copy link
Contributor

@avelad @joeyparrish Are either of you aware of whether DASH specifies how subtitles should be prioritized, if DASH content has both CEA-608/708 in the video stream, but also side-loaded text tracks?

I would assume that the presence of side-loaded text tracks means that they should be prioritized over those embedded in the streams. But section 6.4.5 of IOP (Guidelines for side-loaded TTML and WebVTT files) does not specify.

@joeyparrish
Copy link
Member

@chrisfillmore, I'm not sure of the answer, but in Shaka Player, we give applications control over track selection.

@dsparacio
Copy link
Contributor

dsparacio commented May 4, 2018

@joeyparrish Hi Joey been a while hope all is well? Wondering if you guys are looking at https://github.com/Dash-Industry-Forum/cea608.js for implementation. HLS.js used this and of course we used it for Dash.js. Feel free to use this if it suites your needs!

Update
I guess I overlooked the mention on that url so you are aware. just wanted to make sure!

@joeyparrish
Copy link
Member

@dsparacio, thanks for the link! We'll keep it mind if we decide to explore alternatives to mux.js.

@forbesjo
Copy link

forbesjo commented Jul 2, 2018

This is the mux.js PR for reference videojs/mux.js#197

@avelad
Copy link
Member Author

avelad commented Jul 17, 2018

mux.js has released version 4.5.0 with support for CEA608 in mp4.

@ronenneumark
Copy link

ronenneumark commented Jul 22, 2018

@joeyparrish - on which shake player version supporting CEA608 in mp4 will be available?

@rbond
Copy link

rbond commented Jul 26, 2018

Second that on 608 on mp4. We have many use cases for pulling captions in band.

@ronenneumark
Copy link

@rbond - can you share the supported in band cases?

@joeyparrish
Copy link
Member

Hi all,

When we update mux.js, there will probably still be integration work to complete on our side. As a new feature, this would not appear until v2.5 at the earliest.

shaka-bot pushed a commit that referenced this issue Aug 17, 2018
Upgrade mux.js to verison 4.5.1 since it supports CEA608/708 closed
captions parsing for Dash now.

Issue: #1404.
Change-Id: I09c26dc44ba2e68734f201f58ba8856c836ed55e
shaka-bot pushed a commit that referenced this issue Aug 17, 2018
Dash and Hls manifests have tags and values to indicate that the content
may have CEA608/708 closed captions embedded in the video content.
Adding a closedCaptions field in Stream to represent that, and adding
parsing closed captions tag for DASH parser.

Reference:
HLS: https://tools.ietf.org/html/draft-pantos-http-live-streaming-23#section-4.3.4.2
DASH: https://dashif.org/wp-content/uploads/2018/04/DASH-IF-IOP-v4.2-clean.pdf

Issue: #1404.

Change-Id: I3c58b6043f7fe294dd642bdada8d2451caec9b55
shaka-bot pushed a commit that referenced this issue Sep 1, 2018
Changed the ClosedCaptions field in Stream from an object to an
array of ClosedCaption objects, so that it can be iterated through
and accessed easier.

Issue: #1404.
Change-Id: I67980cf4d5b5746785ba29f95718970fe89056f4
shaka-bot pushed a commit that referenced this issue Sep 12, 2018
This reverts commit 59920fa.
Issue #1404

Change-Id: I90cf8a274949c15779f0193783076ab687fcb9fb
@TheJohnBowers
Copy link
Contributor

Just want to leave a +1 on this one. We have two features we really hope make it into Shaka 2.5 and this is one of them. -- The other is the support for key rotation in the manifest.

@joeyparrish
Copy link
Member

Hi everyone,

We are hard at work on this, and it is a priority for us for v2.5. As soon as we have something to show for it, we will release another v2.5 beta. The final v2.5.0 will wait on both this and src= support (which enables both progressive mp4 playback and FairPlay support on macOS and iOS).

@avelad
Copy link
Member Author

avelad commented Oct 29, 2018

I see that the issue is on backlog. @joeyparrish , can you change it to 2.5?

@joeyparrish
Copy link
Member

Which issue?

@ismena
Copy link
Contributor

ismena commented Oct 29, 2018

@joeyparrish This one! :)
@avelad Let me do it :)

@ismena ismena removed this from the Backlog milestone Oct 29, 2018
@ismena ismena added this to the v2.5 milestone Oct 29, 2018
@TheJohnBowers
Copy link
Contributor

I have another live test stream that you can validate against here if it is useful:
manifest url: https://content.downlynk.com/channel/34b1b0717d9d44f6809c89ab130a16bf.mpd
license server: https://content.downlynk.com/wv

@joeyparrish
Copy link
Member

Thanks, @ismena! I miss the obvious sometimes. And thanks, @TheJohnBowers, for the content! Very helpful.

shaka-bot pushed a commit that referenced this issue Nov 6, 2018
Adding support for CEA closed captions embedded in video streams for
Dash.
1. Dash parser reads and parses closed captions' channel and language
information.
2. Player creates text streams for the closed captions.
3. Media Source Engine calls mux.js Caption Parser API to get the closed
captions embedded in the video streams.
4. Text Engine stores the closed captions, and text displayer shows the
captions.

TODO:
1. Add test cases, will send out another CL.
2. Change closed captions support for hls to the similar way we handle
dash closed captions, will send out another CL.
3. Handle dash content that's missing language indication from the manifest.

Issue: #1404
Change-Id: Ibae8f69623c13561415ec860107d7f5bc86e19e9
shaka-bot pushed a commit that referenced this issue Nov 8, 2018
When the dash content has CEA closed captions signal but no detail
information about channel number and language, we show the default
caption information.

Issue #1404

Change-Id: Ie6ca77739a043d24832efc5a28d4ba708dc4b17f
shaka-bot pushed a commit that referenced this issue Nov 9, 2018
Issue #1404

Change-Id: I35e679ef985ac5cef1f8d8673192845cae29b114
shaka-bot pushed a commit that referenced this issue Nov 9, 2018
Removing a few hacks from player and streaming engine, so that now
closed captions streams are treated almost the same way as usual text streams.
Fixed the issue where toggling the closed captions doesn't work.
Fixed the delay of showing closed captions when we seek to a buffered
stream.

Issue #1404

Change-Id: I28a739f3033f30b53b3adf8fa1a181e3d4592f6f
shaka-bot pushed a commit that referenced this issue Nov 9, 2018
We now clears the MediaSourceEngine every time we load a new text
stream, so this test case is no longer needed.
Follow up for dbdd398 .

Issue #1404

Change-Id: I4f26629273ec289e84b3a57353ca88c4f7869303
@joeyparrish
Copy link
Member

The work we've done so far has been released in v2.5.0-beta2. There are still integration tests to write, plus we need to align our HLS CEA implementation with the DASH CEA implementation, and we need to deprecate one-off APIs for HLS CEA in favor of the tracks API we are using for DASH CEA.

shaka-bot pushed a commit that referenced this issue Nov 27, 2018
Refactor the closed captions support for HLS, using the same approach as
the closed captions support for Dash.
If closed captions are signaled in the manifest, player will create a
text stream for to represent the closed captions, and text engine will
store and append them. We don't need to set 'useEmbeddedText' value for
closed captions any longer.

Issue #1404

Change-Id: I9a5bf4df7e29d6e6982f29fd5e2df07bc78071d7
@avelad
Copy link
Member Author

avelad commented Nov 27, 2018

@joeyparrish the configuration forceTransmuxTS (https://shaka-player-demo.appspot.com/docs/api/shakaExtern.html#.StreamingConfiguration) will be necessary after changes in your HLS parser?

shaka-bot pushed a commit that referenced this issue Dec 5, 2018
Issue #1404

Change-Id: Id8c16c073f3f85fd093d33e3f40e809fa574f5ee
shaka-bot pushed a commit that referenced this issue Dec 6, 2018
Similar to Transmuxer, adding a Caption Parser class as a wrapper of
mux.js's Caption Parser, and move all relevant operations from Media
Source Engine to Caption Parser wrapper class.

Issue: #1404

Change-Id: Iaafa22a963b53315e1f7ae52a5fe17a4cd3f2bde
@jakubvojacek
Copy link

Just tried to compile shaka player from master and failing to use generated shaka-player.compiled.js due to ReferenceError: muxjs is not defined. I know I could link mux.js library but shouldn't it work without the library? Just trying to play regular dash without closed captions.

I think the issue was introduced here bcd10c2#diff-7fe7cffd0a8a1684650ad9d4ef4afdbaR62

@vaage
Copy link
Contributor

vaage commented Dec 18, 2018

@jakubvojacek, you are right, mux.js should not be required. I just spoke with @michellezhuogg and we have a plan to address the issue and she is working on implementing it right now. Hopefully this won't not be an issue for much longer.

@jakubvojacek
Copy link

Thank you for the confirmation, was unsure whether I did not mess up the compilation somehow.

shaka-bot pushed a commit that referenced this issue Dec 21, 2018
Issue #1404

Change-Id: Ic65bdf1254c379dc44770e26d777728cf255eb82
@joeyparrish
Copy link
Member

@jakubvojacek, the muxjs reference appears to be fixed now.

@jakubvojacek
Copy link

Yes, it is fixed, thank you!

@shaka-project shaka-project locked and limited conversation to collaborators Mar 3, 2019
@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