-
Notifications
You must be signed in to change notification settings - Fork 1.3k
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
Comments
Sample of cea608 parser: https://github.com/Dash-Industry-Forum/dash.js/blob/development/externals/cea608-parser.js |
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. |
We're actually planning this quarter on parsing fmp4 608/708 in mux.js in order to handle fmp4 HLS and DASH. Stay tuned! |
@forbesjo, Do you have in mind to support multiple CC in the same MP4? |
@avelad yes that should be supported |
Blocked on videojs/mux.js#190 |
@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. |
@chrisfillmore, I'm not sure of the answer, but in Shaka Player, we give applications control over track selection. |
@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 |
@dsparacio, thanks for the link! We'll keep it mind if we decide to explore alternatives to mux.js. |
This is the mux.js PR for reference videojs/mux.js#197 |
mux.js has released version 4.5.0 with support for CEA608 in mp4. |
@joeyparrish - on which shake player version supporting CEA608 in mp4 will be available? |
Second that on 608 on mp4. We have many use cases for pulling captions in band. |
@rbond - can you share the supported in band cases? |
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. |
Upgrade mux.js to verison 4.5.1 since it supports CEA608/708 closed captions parsing for Dash now. Issue: #1404. Change-Id: I09c26dc44ba2e68734f201f58ba8856c836ed55e
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
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
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. |
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). |
I see that the issue is on backlog. @joeyparrish , can you change it to 2.5? |
Which issue? |
@joeyparrish This one! :) |
I have another live test stream that you can validate against here if it is useful: |
Thanks, @ismena! I miss the obvious sometimes. And thanks, @TheJohnBowers, for the content! Very helpful. |
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
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
Issue #1404 Change-Id: I35e679ef985ac5cef1f8d8673192845cae29b114
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
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. |
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
@joeyparrish the configuration forceTransmuxTS (https://shaka-player-demo.appspot.com/docs/api/shakaExtern.html#.StreamingConfiguration) will be necessary after changes in your HLS parser? |
Issue #1404 Change-Id: Id8c16c073f3f85fd093d33e3f40e809fa574f5ee
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
Just tried to compile shaka player from master and failing to use generated I think the issue was introduced here bcd10c2#diff-7fe7cffd0a8a1684650ad9d4ef4afdbaR62 |
@jakubvojacek, you are right, |
Thank you for the confirmation, was unsure whether I did not mess up the compilation somehow. |
Issue #1404 Change-Id: Ic65bdf1254c379dc44770e26d777728cf255eb82
@jakubvojacek, the muxjs reference appears to be fixed now. |
Yes, it is fixed, thank you! |
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
?: YesAre 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
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)
The text was updated successfully, but these errors were encountered: