-
Notifications
You must be signed in to change notification settings - Fork 1.4k
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
TextTrackCue constructor throws on Toshiba dTV #635
Comments
The content you're testing with is from Unified Streaming. (We don't control it.) The "Tears of Steel (Widevine)" asset has text streams, but the "Tears of Steel" asset (without Widevine) from the same group has no text at all. So naturally, the non-Widevine asset will not run into this same issue. MediaKeys should not have anything to do with it. To eliminate MediaKeys from the equation, you could try the asset "Tears of Steel (subtitles)" from that same group. It has text streams, but no encryption. |
Thank you for the suggestion. Tears of Steel with subtitles is working the same way (without quality switching) as the Widevine encoded asset, but still only in TV browser, not on desktop in Chrome. |
fix in #643 |
Ah, so the real problem is that the TextTrackCue constructor is throwing and causing StreamingEngine to break down. |
Yes, thats correct. |
Okay, cool. Thank you for working on the pull request to correct this on the Toshiba. |
I'm labeling this as an enhancement because we need a polyfill for the Toshiba, and as a bug because StreamingEngine shouldn't break down when the cue constructor fails. I will start work on the StreamingEngine part. |
Now, the ignoreTextStreamFailures config applies to parsing errors as well as network errors. We also no longer count text streams against the startup phase. Early text failures will not prevent StreamingEngine from switching, without regard for the presence of the ignoreTextStreamFailures config. Issue #635 Change-Id: I6818ef021beabfbc8742a7b013fa0424b77cff47
Now, the ignoreTextStreamFailures config applies to parsing errors as well as network errors. We also no longer count text streams against the startup phase. Early text failures will not prevent StreamingEngine from switching, without regard for the presence of the ignoreTextStreamFailures config. Issue #635 Change-Id: I6818ef021beabfbc8742a7b013fa0424b77cff47
The fix for the StreamingEngine breakdown has just been released in v2.0.3. The Toshiba polyfill is still a work in progress (#643). |
This adds a VTTCue polyfill for IE/Edge (3-arg TextTrackCue) and Toshiba dTV (6-arg TextTrackCue). Closes #635
- What version of Shaka Player are you using?
2.0.2
Yes
master
?Yes
Own custom app
No. The demo app isn't working on Toshiba TV, where the issue is occuring.
I used uncompiled mode, modified logging to be able to see debugging output when running on the TV, set logging level to
DEBUG
, played standard demo asset "Tears of Steel (Widevine)".The video was loaded and started playing with the lowest resolution. Even after few minutes of playback, the resolution has not changed. For the asset "Tears of Steel" (without Widevine), the resolution changed as expected.
During the playback of the Widevine video, following error has been logged:
"(text:4) failed fetch and append: code=undefined"
From debugging it seems, that segment for content type 'text' is not downloaded, which is leading to
startupComplete_
property ofStreamingEngine
staying false, thus never callingonCanSwitch_
method.When I deleted the 'text' content type from
mediaStates_
property ofStreamingEngine
in the beggining ofhandleStartup_
method -startupComplete_
property was then set to true and changing to higher resolutions started to work.This is the debugging output:
MediaKeys.install
Using nonprefixed EME v0.1b
PatchedMediaKeysWebkit.install
MediaSource.install
Using native MSE as-is.
Using Promises polyfill.
SimpleAbrManager.disable()
The last segment should not end before the end of the Period.
The last segment should not end before the end of the Period.
PatchedMediaKeysWebkit.requestMediaKeySystemAccess
PatchedMediaKeysWebkit.MediaKeySystemAccess
PatchedMediaKeysWebkit.MediaKeySystemAccess.getConfiguration
PatchedMediaKeysWebkit.MediaKeySystemAccess.createMediaKeys
PatchedMediaKeysWebkit.MediaKeys
PatchedMediaKeysWebkit.setMediaKeys
Player.createStreamingEngine()
onChooseStreams_
SimpleAbrManager.disable()
Choosing new streams after period changed
Choosing new streams for
init: completed initial Stream setup
(video:8)looking up segment:presentationTime=0currentPeriod.startTime=0
(video:8)looking up segment:presentationTime=0currentPeriod.startTime=0
(audio:1)looking up segment:presentationTime=0currentPeriod.startTime=0
(audio:1)looking up segment:presentationTime=0currentPeriod.startTime=0
(text:4)looking up segment:presentationTime=0currentPeriod.startTime=0
(text:4)looking up segment:presentationTime=0currentPeriod.startTime=0
PatchedMediaKeysWebkit.onWebkitNeedKey_[object MediaKeyEvent]
PatchedMediaKeysWebkit.MediaKeys.createSession
PatchedMediaKeysWebkit.MediaKeySession
PatchedMediaKeysWebkit.MediaKeySession.generateRequest
(text:4)failed fetch and append: code=undefined
PatchedMediaKeysWebkit.onWebkitKeyMessage_
PatchedMediaKeysWebkit.MediaKeys.findSession_
PatchedMediaKeysWebkit.MediaKeySession.generated
PatchedMediaKeysWebkit.MediaKeySession.update
PatchedMediaKeysWebkit.onWebkitKeyAdded_
PatchedMediaKeysWebkit.MediaKeys.findSession_
PatchedMediaKeysWebkit.MediaKeySession.ready
Choosing new streams after key status changed
No new streams need to be chosen.
Only some messages are logged, because of the way I modified the logging. If more logging would be helpful, I can improve that.
This issue doesn't occur in Chrome on desktop. The difference when running on Toshiba dTV is, that
PatchedMediaKeysWebkit
methods are called during the playback.Is there something I could do to provide more specific information to help to find the cause of this issue?
Thanks
Tomas
The text was updated successfully, but these errors were encountered: