-
Notifications
You must be signed in to change notification settings - Fork 138
Description
As stated in the title, for some reason WebOS is unable to stream multi-key content. When I remove the singleLicensePer: "content" setting, it plays the PlayReady stream correctly. When I switch to Widevine and keep the singleLicensePer: "content" setting, it also plays correctly. The server is configured to include multiple keys in the license response. Perhaps Im missing something ? Tizen works fine with that setup.
It immediately throws the NO_PLAYABLE_REPRESENTATION error on Webos6, but eg on Webos 4 it fetched the license, started downloading and appending segments, but only black screen without audio was visible
Webos6 logs:
API: Calling loadvideo https://y dash
API: Initializing MediaSource mode in the main thread
XHR: Sending GET https://cuery type=arraybuffer to=30 cto=15
Locking `contentLock` to clean-up the current content.
DRM: Clearing-up DRM session.
API: current media element state tick event init position 0 seeking 0 internalSeek false rebuffering false freezing false ended false paused true playbackRate 1 readyState 0 pendingPosition undefined
API: playerStateChange event LOADING
DRM: Nothing to clear. Returning right away. No state = true
API: DRM session cleaned-up with success!
Unlocking `contentLock`. Next content can begin.
Init: Creating ContentDecryptor
DRM: Starting ContentDecryptor logic.
DRM: Searching for compatible MediaKeySystemAccess
DRM: Request keysystem access com.microsoft.playready.recommendation,1 of 4
DRM: Rejected access to keysystem com.microsoft.playready.recommendation 1 0
DRM: Rejected access to keysystem com.microsoft.playready.recommendation 1 1
DRM: Request keysystem access com.microsoft.playready,2 of 4
DRM: Found compatible keysystem com.microsoft.playready 2
DRM: Calling createMediaKeys on the MediaKeySystemAccess
DRM: MediaKeys created with success
DRM: Waiting for attachment.
Init: Creating MediaSource
MTCI: Attaching MediaSource URL to the media element
DASH: WASM MPD Parser not initialized. Running JS one.
XHR: Sending GET https://ti
DASH Parser: merging "switchable" AdaptationSets 5 4
MF: Manifest parsed in 232.28499999981432ms
MUS: Manifest update rythm is too frequent. Postponing next request. 1561.4550000000236 2561.4550000000236
Init: MediaSource opened
DRM: disabling MediaKeys attachment lock. Ready for content
DRM: Attaching current MediaKeys
DRM: Attaching MediaKeys to the media element
Init: Calculating initial time
Init: clock offset found for a live content, checking if we can start close to it
Init: 1760432712.0876434 defined as the live time, applying a live gap of 10
Init: Initial time calculated: 1760432702.0876434
HTD: Creating HTMLTextDisplayer
API: current media element state tick event manual position 0 seeking 0 internalSeek false rebuffering false freezing false ended false paused true playbackRate 1 readyState 0 pendingPosition 1760432702.0876434
API: current playback timeline:
^0
manual
Init: Resume playback speed 1
Init: Updating duration 4294967296
Stream: Creating new Stream for video 0
TS: Adding Track Reference video 1
Stream: Creating new Stream for audio 0
TS: Adding Track Reference audio 1
Stream: Creating new Stream for text 0
TS: Adding Track Reference text 1
Stream: Updating audio adaptation A: 1 P: 0
SB: Adding native SegmentSink with codec audio/mp4;codecs="mp4a.40.2"
AVSB: calling `mediaSource.addSourceBuffer` audio/mp4;codecs="mp4a.40.2"
Stream: Updating video adaptation A: 4 P: 0
SB: Adding native SegmentSink with codec video/mp4;codecs="avc1.640029"
AVSB: calling `mediaSource.addSourceBuffer` video/mp4;codecs="avc1.640029"
Stream: Set no text Adaptation. P: 0
ABR: Creating new BandwidthEstimator for audio
Stream: changing representation audio audio_112034_cze=112000 112000
Stream: Creating RepresentationStream audio 112000
SQ: Media segments now need to be requested. Starting queue. audio 6
SF: Beginning request audio P: 1 A: 1 R: audio_112034_cze=112000 S: 1760432700.4993124-1.92
XHR: Sending GET https://cz-bkh type=arraybuffer to=30 cto=15
SF: Beginning request audio P: 1 A: 1 R: audio_112034_cze=112000 S: init
XHR: Sending GET https://type=arraybuffer to=30 cto=15
ABR: Creating new BandwidthEstimator for video
ABR: Steps for buffer based chooser. bufferLevel: 4, bitrate: 443600 ,bufferLevel: 10.802896272800929, bitrate: 648000 ,bufferLevel: 15.170013884595148, bitrate: 1066800 ,bufferLevel: 19.37290154586124, bitrate: 1444800 ,bufferLevel: 23.79331093099003, bitrate: 2671200 ,bufferLevel: 28.658858230343256, bitrate: 3590400 ,bufferLevel: 31.554458168122714, bitrate: 4714400
ABR: enter starvation mode.
ABR: Choosing representation with bandwidth estimation. 1444800 video=1444800
ABR: Steps for buffer based chooser. bufferLevel: 4, bitrate: 443600 ,bufferLevel: 10.802896272800929, bitrate: 648000 ,bufferLevel: 15.170013884595148, bitrate: 1066800 ,bufferLevel: 19.37290154586124, bitrate: 1444800 ,bufferLevel: 23.79331093099003, bitrate: 2671200 ,bufferLevel: 28.658858230343256, bitrate: 3590400 ,bufferLevel: 31.554458168122714, bitrate: 4714400
ABR: Choosing representation with bandwidth estimation. 1444800 video=1444800
Stream: changing representation video video=1444800 1444800
Stream: Creating RepresentationStream video 1444800
SQ: Media segments now need to be requested. Starting queue. video 6
SF: Beginning request video P: 1 A: 4 R: video=1444800 S: 1760432700.4883332-1.92
XHR: Sending GET https://r to=30 cto=15
SF: Beginning request video P: 1 A: 4 R: video=1444800 S: init
XHR: Sending GET https://type=arraybuffer to=30 cto=15
SF: Segment request ended with success audio P: 1 A: 1 R: audio_112034_cze=112000 S: 1760432700.4993124-1.92
AVSB: receiving order to push data to the SourceBuffer audio audio P: 1 A: 1 R: audio_112034_cze=112000 S: init
AVSB: pushing segment audio audio P: 1 A: 1 R: audio_112034_cze=112000 S: init
SBI: receiving order to push data to the SourceBuffer audio
SBI: pushing segment audio
SQ: no more init segment to request. Cancelling queue. audio
SF: Segment request cancelled audio P: 1 A: 1 R: audio_112034_cze=112000 S: init
ABR: New last stable representation 112000
AVSB: receiving order to push data to the SourceBuffer audio audio P: 1 A: 1 R: audio_112034_cze=112000 S: 1760432700.4993124-1.92
AVSB: pushing segment audio audio P: 1 A: 1 R: audio_112034_cze=112000 S: 1760432700.4993124-1.92
SBI: receiving order to push data to the SourceBuffer audio
SF: Beginning request audio P: 1 A: 1 R: audio_112034_cze=112000 S: 1760432702.4193125-1.92
XHR: Sending GET https://csh type=arraybuffer to=30 cto=15
SF: Segment request ended with success audio P: 1 A: 1 R: audio_112034_cze=112000 S: init
Compat: MediaKeys updated with success
DRM: MediaKeys attached with success
DRM: processing init data audio 112000 4ebe6762b59743d9ba59e5ff378fdda9
DRM: Creating a new temporary session
DRM-LSS: calling `createSession` temporary
DRM-LSS: MediaKeySession added temporary 1
DRM: Binding session events
DRM: transmitting current keystatuses
Compat: Calling generateRequest on the MediaKeySession
Compat: Trying to move CENC PSSH from init data at the end of it.
AVSB: receiving order to push data to the SourceBuffer video video P: 1 A: 4 R: video=1444800 S: init
AVSB: pushing segment video video P: 1 A: 4 R: video=1444800 S: init
SBI: receiving order to push data to the SourceBuffer video
SBI: pushing segment video
SQ: no more init segment to request. Cancelling queue. video
SF: Segment request cancelled video P: 1 A: 4 R: video=1444800 S: init
SF: Segment request ended with success video P: 1 A: 4 R: video=1444800 S: init
AVSB: receiving order to push data to the SourceBuffer audio audio P: 1 A: 1 R: audio_112034_cze=112000 S: 1760432702.4193125-1.92
AVSB: pushing segment audio audio P: 1 A: 1 R: audio_112034_cze=112000 S: 1760432702.4193125-1.92
SBI: receiving order to push data to the SourceBuffer audio
SF: Segment request ended with success audio P: 1 A: 1 R: audio_112034_cze=112000 S: 1760432702.4193125-1.92
MMSI: Merging 2 segments together for perf audio
SBI: pushing segment audio
SI: synchronizing unknown buffered ranges:
AVSB: receiving order to push data to the SourceBuffer video video P: 1 A: 4 R: video=1444800 S: 1760432700.4883332-1.92
AVSB: pushing segment video video P: 1 A: 4 R: video=1444800 S: 1760432700.4883332-1.92
SBI: receiving order to push data to the SourceBuffer video
SF: Segment request ended with success video P: 1 A: 4 R: video=1444800 S: 1760432700.4883332-1.92
ABR: New last stable representation 1444800
SF: Beginning request video P: 1 A: 4 R: video=1444800 S: 1760432702.4083333-1.92
XHR: Sending GET https:// type=arraybuffer to=30 cto=15
DRM: Received message event, type license-request EfTlLrMC1nOPzA52yT0VIw==
DRM: Calling `getLicense` license-request
API: current media element state tick event timeupdate position 0 seeking 0 internalSeek false rebuffering false freezing false ended false paused true playbackRate 1 readyState 0 pendingPosition 1760432702.0876434
API: current playback timeline:
^0
timeupdate
2SI: synchronizing unknown buffered ranges:
ABR: Choosing representation with bandwidth estimation. 3590400 video=3590400
Stream: new video bitrate estimate 6266182.519797347
Stream: slow Representation switch video
SBI: pushing segment video
SI: synchronizing unknown buffered ranges:
ABR: Incrementing blocking raise in BufferBasedChooser due to unstable quality 9000
ABR: Choosing representation with bandwidth estimation. 3590400 video=3590400
Stream: slow Representation switch video
SI: first segment pushed audio 1760432700.4993124 1760432702.4193125
SI: synchronizing audio buffered ranges: 1760432700.499312-1760432704.339312
SI: found true buffered start audio 1760432700.499312 1760432700.4993124
SI: range end too far from expected end audio 1760432704.339312 1760432702.4193125
SI: Pushing segment strictly after previous one. audio 1760432702.4193125 1760432702.4193125
SI: synchronizing audio buffered ranges: 1760432700.499312-1760432704.339312
SI: found true buffered end audio 1760432704.339312 1760432704.3393126
SI: current audio inventory timeline:
1760432700.50|A|1760432704.34
[A] P: 1 || R: audio_112034_cze=112000(112000)
API: current media element state tick event loadedmetadata position 0 seeking 0 internalSeek false rebuffering false freezing false ended false paused true playbackRate 1 readyState 1 pendingPosition 1760432702.0876434
API: current playback timeline:
^0
loadedmetadata
SI: synchronizing unknown buffered ranges:
SI: synchronizing audio buffered ranges: 1760432700.499312-1760432704.339312
SI: current audio inventory timeline:
1760432700.50|A|1760432704.34
[A] P: 1 || R: audio_112034_cze=112000(112000)
ABR: Choosing representation with bandwidth estimation. 3590400 video=3590400
Stream: slow Representation switch video
API: Seeking internally 1760432702.0876434
API: current media element state tick event internal-seeking position 1760432702.087643 seeking 1 internalSeek true rebuffering true freezing false ended false paused true playbackRate 1 readyState 1 pendingPosition null
API: current playback timeline:
1760432700.57|==0.68==|1760432701.25
^1760432702.087643
seeking
SI: synchronizing unknown buffered ranges: 1760432700.568333-1760432701.248333
SI: synchronizing audio buffered ranges: 1760432700.499312-1760432704.339312
SI: current audio inventory timeline:
1760432700.50|A|1760432704.34
[A] P: 1 || R: audio_112034_cze=112000(112000)
ABR: Choosing representation with bandwidth estimation. 3590400 video=3590400
Stream: slow Representation switch video
Init: Pause playback to build buffer
AVSB: receiving order to push data to the SourceBuffer video video P: 1 A: 4 R: video=1444800 S: 1760432702.4083333-1.92
AVSB: pushing segment video video P: 1 A: 4 R: video=1444800 S: 1760432702.4083333-1.92
SBI: receiving order to push data to the SourceBuffer video
SF: Segment request ended with success video P: 1 A: 4 R: video=1444800 S: 1760432702.4083333-1.92
Stream: No request left, terminate video
Stream: changing representation video video=3590400 3590400
Stream: Creating RepresentationStream video 3590400
SQ: Media segments now need to be requested. Starting queue. video 4
SF: Beginning request audio P: 1 A: 1 R: audio_112034_cze=112000 S: 1760432704.3393126-1.92
XHR: Sending GET https://cdash type=arraybuffer to=30 cto=15
SF: Beginning request video P: 1 A: 4 R: video=3590400 S: 1760432704.3283334-1.92
XHR: Sending GET https://csh type=arraybuffer to=30 cto=15
SF: Beginning request video P: 1 A: 4 R: video=3590400 S: init
XHR: Sending GET https://csh type=arraybuffer to=30 cto=15
API: current media element state tick event ratechange position 1760432702.087643 seeking 1 internalSeek true rebuffering true freezing false ended false paused true playbackRate 0 readyState 1 pendingPosition null
API: current playback timeline:
1760432700.57|==1.64==|1760432702.21
^1760432702.087643
ratechange
SI: synchronizing unknown buffered ranges: 1760432700.568333-1760432702.208333
SI: synchronizing audio buffered ranges: 1760432700.499312-1760432704.339312
SI: current audio inventory timeline:
1760432700.50|A|1760432704.34
[A] P: 1 || R: audio_112034_cze=112000(112000)
ABR: Choosing representation with bandwidth estimation. 4714400 video=4714400
Stream: new video bitrate estimate 8011081.823406923
Stream: slow Representation switch video
DRM: Updating MediaKeySession with message
AVSB: receiving order to push data to the SourceBuffer audio audio P: 1 A: 1 R: audio_112034_cze=112000 S: 1760432704.3393126-1.92
AVSB: pushing segment audio audio P: 1 A: 1 R: audio_112034_cze=112000 S: 1760432704.3393126-1.92
SBI: receiving order to push data to the SourceBuffer audio
SBI: pushing segment audio
SF: Segment request ended with success audio P: 1 A: 1 R: audio_112034_cze=112000 S: 1760432704.3393126-1.92
SBI: pushing segment video
SI: first segment pushed video 1760432700.4883332 1760432702.4083333
SI: synchronizing video buffered ranges: 1760432700.568333-1760432702.488333
SI: found true buffered start video 1760432700.568333 1760432700.4883332
SI: found true buffered end video 1760432702.488333 1760432702.4083333
ABR: Incrementing blocking raise in BufferBasedChooser due to unstable quality 12000
ABR: Choosing representation with bandwidth estimation. 4714400 video=4714400
Stream: slow Representation switch video
DRM: MediaKeySession update succeeded.
AVSB: receiving order to push data to the SourceBuffer video video P: 1 A: 4 R: video=3590400 S: init
AVSB: pushing segment video video P: 1 A: 4 R: video=3590400 S: init
SBI: receiving order to push data to the SourceBuffer video
SQ: no more init segment to request. Cancelling queue. video
SF: Segment request cancelled video P: 1 A: 4 R: video=3590400 S: init
SF: Segment request ended with success video P: 1 A: 4 R: video=3590400 S: init
DRM: keystatuseschange event received EfTlLrMC1nOPzA52yT0VIw==
DRM: key status update (4ebe6762b59743d9ba59e5ff378fdda9): usable
Decipherability changed for "audio_112034_cze=112000" (112000) true
Decipherability changed for "audio_112035_qaa=112000" (112000) true
Decipherability changed for "video=443600" (443600) false
Decipherability changed for "video=648000" (648000) false
Decipherability changed for "video=1066800" (1066800) false
Decipherability changed for "video=1444800" (1444800) false
Decipherability changed for "video=2671200" (2671200) false
Decipherability changed for "video=3590400" (3590400) false
Decipherability changed for "video=4714400" (4714400) false
SF: Segment request cancelled video P: 1 A: 4 R: video=3590400 S: 1760432704.3283334-1.92
SB: Aborting SegmentSink audio
AVSB: Calling `dispose` on the SourceBufferInterface
SB: Aborting SegmentSink video
AVSB: Calling `dispose` on the SourceBufferInterface
HTD: Stopping HTMLTextDisplayer
Init: Clearing HTMLMediaElement's src
Init: Revoking previous URL
Locking `contentLock` to clean-up the current content.
DRM: Clearing-up DRM session.
API: The player stopped because of an error MediaError: NO_PLAYABLE_REPRESENTATION: No video Representation can be played
at Array.forEach (<anonymous>)
at go.trigger
at go.i [as refresh]
at ho.onDecipherabilityUpdates
at Kt._priv_onDecipherabilityUpdate
at Array.forEach (<anonymous>)
_priv_onFatalError @ (anonymous) @ (anonymous) @ trigger @ (anonymous) @ (anonymous) @ trigger @ i @ onDecipherabilityUpdates @ _priv_onDecipherabilityUpdate @ (anonymous) @ (anonymous) @ trigger @ (anonymous) @ (anonymous) @ trigger @ updateRepresentationsDeciperability @ oy @ (anonymous) @ step @ (anonymous) @ asyncGeneratorStep @ _next @ (anonymous) @ (anonymous) @ onKeyIdsCompatibilityUpdate @ (anonymous) @ (anonymous) @ trigger @ onKeyUpdate @ s @ (anonymous) @ Show 2 more frames
API: playerStateChange event STOPPED
(anonymous) @ DRM: closing all current sessions.
DRM-LSS: Closing all current MediaKeySessions 1
DRM: Trying to close a MediaKeySession EfTlLrMC1nOPzA52yT0VIw==
SI: Pushing segment strictly after previous one. audio 1760432704.3393126 1760432704.339312
SI: buffered range not known after sync. Skipping history. 1760432704.3393126 1760432706.2593126
SI: Pushing segment strictly after previous one. video 1760432702.4083333 1760432702.4083333
SI: buffered range not known after sync. Skipping history. 1760432702.4083333 1760432704.3283334
SF: Segment request aborted video P: 1 A: 4 R: video=3590400 S: 1760432704.3283334-1.92
DRM-LSS: session was closed, removing it. EfTlLrMC1nOPzA52yT0VIw==
DRM: Succeeded to close MediaKeySession
API: DRM session cleaned-up with success!
Unlocking `contentLock`. Next content can begin.
In the manifest Im receiving :
<AdaptationSet id="4" group="2" contentType="video" par="16:9" minBandwidth="443600" maxBandwidth="3590400" maxWidth="1280" maxHeight="720" segmentAlignment="true" frameRate="25" mimeType="video/mp4" codecs="avc1.640029" startWithSAP="1">
With representations:
<Representation id="video=443600" bandwidth="443600" width="426" height="240" sar="640:639" scanType="progressive">
</Representation>
<Representation id="video=648000" bandwidth="648000" width="512" height="288" sar="1:1" scanType="progressive">
</Representation>
<Representation id="video=1066800" bandwidth="1066800" width="682" height="384" sar="1024:1023" scanType="progressive">
</Representation>
<Representation id="video=1444800" bandwidth="1444800" width="850" height="480" sar="256:255" scanType="progressive">
</Representation>
<Representation id="video=2671200" bandwidth="2671200" width="1024" height="576" sar="1:1" scanType="progressive">
</Representation>
<Representation id="video=3590400" bandwidth="3590400" width="1280" height="720" sar="1:1" scanType="progressive">
</Representation>
And:
<AdaptationSet id="5" group="2" contentType="video" par="16:9" segmentAlignment="true" width="1920" height="1080" sar="1:1" frameRate="25" mimeType="video/mp4" codecs="avc1.640029" startWithSAP="1">
With:
<Representation id="video=4714400" bandwidth="4714400" scanType="progressive">
</Representation>