-
Notifications
You must be signed in to change notification settings - Fork 1.4k
fix(HLS): Fix missing DRM variants with preferredKeySystems #9452
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
base: main
Are you sure you want to change the base?
Changes from 1 commit
3790cd5
fdd8898
cd25fcb
f91ed06
e93b4d4
58f038d
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -137,6 +137,13 @@ shaka.hls.HlsParser = class { | |
| */ | ||
| this.uriToStreamInfosMap_ = new Map(); | ||
|
|
||
| /** | ||
| * A map from each stream to the variants it is a part of. | ||
| * This is used to reset variant decodingInfo when streams are updated. | ||
| * @private {!Map<!shaka.extern.Stream, !Set<!shaka.extern.Variant>>} | ||
| */ | ||
| this.streamToVariants_ = new Map(); | ||
|
|
||
| /** @private {?shaka.media.PresentationTimeline} */ | ||
| this.presentationTimeline_ = null; | ||
|
|
||
|
|
@@ -2321,6 +2328,19 @@ shaka.hls.HlsParser = class { | |
| decodingInfos: [], | ||
| }; | ||
|
|
||
| if (audioStream) { | ||
| const mappedAudioVariantSet = | ||
| this.streamToVariants_.get(audioStream) || new Set(); | ||
| mappedAudioVariantSet.add(audioStream); | ||
| this.streamToVariants_.set(audioStream, mappedAudioVariantSet); | ||
| } | ||
| if (videoStream) { | ||
| const mappedVideoVariantSet = | ||
| this.streamToVariants_.get(videoStream) || new Set(); | ||
| mappedVideoVariantSet.add(videoStream); | ||
| this.streamToVariants_.set(videoStream, mappedVideoVariantSet); | ||
| } | ||
|
|
||
| variants.push(variant); | ||
| this.variantUriSet_.add(variantUriKey); | ||
| } | ||
|
|
@@ -2821,8 +2841,16 @@ shaka.hls.HlsParser = class { | |
| this.setFullTypeForStream_(stream); | ||
|
|
||
| // Since we lazy-loaded this content, the player may need to create new | ||
| // sessions for the DRM info in this stream. | ||
| // sessions for the DRM info in this stream, and recheck decodingInfo. | ||
| if (stream.drmInfos.length) { | ||
| const variants = this.streamToVariants_.get(stream) || new Set(); | ||
| for (const variant of variants) { | ||
| variant.decodingInfos = []; | ||
| } | ||
|
|
||
| if (this.manifest_) { | ||
| this.playerInterface_.filter(this.manifest_); | ||
joeyparrish marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| } | ||
|
Comment on lines
+2846
to
+2853
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This code block is causing load hangs on android-based Cast devices, which can be repro'd by using a fresh top-of-tree build of But the load hangs stop if I specifically comment out this block of code.
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. If it truly hangs, that means the Promise isn't resolved. I'll need to dig through the individual awaits within this call to find the one that's hanging. |
||
| this.playerInterface_.newDrmInfo(stream); | ||
| } | ||
|
|
||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,26 @@ | ||
| #EXTM3U | ||
| ## Generated with https://github.com/shaka-project/shaka-packager version v3.4.0-1f0a4d1-release | ||
|
|
||
| #EXT-X-INDEPENDENT-SEGMENTS | ||
| #EXT-X-MEDIA:TYPE=AUDIO,URI="stream_1.m3u8",GROUP-ID="aac",LANGUAGE="en",NAME="English",DEFAULT=NO,AUTOSELECT=YES,CHANNELS="2" | ||
| #EXT-X-MEDIA:TYPE=AUDIO,URI="stream_4.m3u8",GROUP-ID="aac",LANGUAGE="es",NAME="Spanish",DEFAULT=NO,AUTOSELECT=YES,CHANNELS="2" | ||
| #EXT-X-MEDIA:TYPE=AUDIO,URI="stream_5.m3u8",GROUP-ID="opus",LANGUAGE="en",NAME="English",DEFAULT=NO,AUTOSELECT=YES,CHANNELS="2" | ||
| #EXT-X-MEDIA:TYPE=AUDIO,URI="stream_2.m3u8",GROUP-ID="opus",LANGUAGE="es",NAME="Spanish",DEFAULT=NO,AUTOSELECT=YES,CHANNELS="2" | ||
|
|
||
| #EXT-X-STREAM-INF:BANDWIDTH=4181915,AVERAGE-BANDWIDTH=2483917,CODECS="avc1.64001f,mp4a.40.2",RESOLUTION=1280x546,FRAME-RATE=24.000,AUDIO="aac",CLOSED-CAPTIONS=NONE | ||
| stream_3.m3u8 | ||
| #EXT-X-STREAM-INF:BANDWIDTH=1895289,AVERAGE-BANDWIDTH=1245692,CODECS="avc1.4d401e,mp4a.40.2",RESOLUTION=854x364,FRAME-RATE=24.000,AUDIO="aac",CLOSED-CAPTIONS=NONE | ||
| stream_0.m3u8 | ||
| #EXT-X-STREAM-INF:BANDWIDTH=670544,AVERAGE-BANDWIDTH=652699,CODECS="av01.0.05M.08,mp4a.40.2",RESOLUTION=1280x546,FRAME-RATE=24.000,AUDIO="aac",CLOSED-CAPTIONS=NONE | ||
| stream_7.m3u8 | ||
| #EXT-X-STREAM-INF:BANDWIDTH=544379,AVERAGE-BANDWIDTH=528974,CODECS="av01.0.04M.08,mp4a.40.2",RESOLUTION=854x364,FRAME-RATE=24.000,AUDIO="aac",CLOSED-CAPTIONS=NONE | ||
| stream_6.m3u8 | ||
|
|
||
| #EXT-X-STREAM-INF:BANDWIDTH=4135626,AVERAGE-BANDWIDTH=2427353,CODECS="avc1.64001f,opus",RESOLUTION=1280x546,FRAME-RATE=24.000,AUDIO="opus",CLOSED-CAPTIONS=NONE | ||
| stream_3.m3u8 | ||
| #EXT-X-STREAM-INF:BANDWIDTH=1849000,AVERAGE-BANDWIDTH=1189128,CODECS="avc1.4d401e,opus",RESOLUTION=854x364,FRAME-RATE=24.000,AUDIO="opus",CLOSED-CAPTIONS=NONE | ||
| stream_0.m3u8 | ||
| #EXT-X-STREAM-INF:BANDWIDTH=624255,AVERAGE-BANDWIDTH=596135,CODECS="av01.0.05M.08,opus",RESOLUTION=1280x546,FRAME-RATE=24.000,AUDIO="opus",CLOSED-CAPTIONS=NONE | ||
| stream_7.m3u8 | ||
| #EXT-X-STREAM-INF:BANDWIDTH=498090,AVERAGE-BANDWIDTH=472410,CODECS="av01.0.04M.08,opus",RESOLUTION=854x364,FRAME-RATE=24.000,AUDIO="opus",CLOSED-CAPTIONS=NONE | ||
| stream_6.m3u8 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,14 @@ | ||
| #EXTM3U | ||
| #EXT-X-VERSION:6 | ||
| ## Generated with https://github.com/shaka-project/shaka-packager version v3.4.0-1f0a4d1-release | ||
| #EXT-X-TARGETDURATION:11 | ||
| #EXT-X-PLAYLIST-TYPE:VOD | ||
| #EXT-X-MAP:URI="video_480p_1M_h264_init.mp4" | ||
| #EXT-X-KEY:METHOD=SAMPLE-AES-CTR,URI="data:text/plain;base64,AAAAOHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAABgiEIylSxG1rhIsgGndN+aTxWtI49yVmwY=",KEYID=0x7a4d63a12e395c989d3fe3278b099c4d,KEYFORMATVERSIONS="1",KEYFORMAT="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed" | ||
| #EXTINF:10.000, | ||
| video_480p_1M_h264_1.mp4 | ||
| #EXTINF:10.000, | ||
| video_480p_1M_h264_2.mp4 | ||
| #EXTINF:5.000, | ||
| video_480p_1M_h264_3.mp4 | ||
| #EXT-X-ENDLIST |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,14 @@ | ||
| #EXTM3U | ||
| #EXT-X-VERSION:6 | ||
| ## Generated with https://github.com/shaka-project/shaka-packager version v3.4.0-1f0a4d1-release | ||
| #EXT-X-TARGETDURATION:11 | ||
| #EXT-X-PLAYLIST-TYPE:VOD | ||
| #EXT-X-MAP:URI="audio_en_2c_128k_aac_init.mp4" | ||
| #EXT-X-KEY:METHOD=SAMPLE-AES-CTR,URI="data:text/plain;base64,AAAAOHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAABgiEIylSxG1rhIsgGndN+aTxWtI49yVmwY=",KEYID=0xce0786df75ef55e080043bc124d46f3d,KEYFORMATVERSIONS="1",KEYFORMAT="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed" | ||
| #EXTINF:10.005, | ||
| audio_en_2c_128k_aac_1.mp4 | ||
| #EXTINF:10.005, | ||
| audio_en_2c_128k_aac_2.mp4 | ||
| #EXTINF:5.035, | ||
| audio_en_2c_128k_aac_3.mp4 | ||
| #EXT-X-ENDLIST |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,14 @@ | ||
| #EXTM3U | ||
| #EXT-X-VERSION:6 | ||
| ## Generated with https://github.com/shaka-project/shaka-packager version v3.4.0-1f0a4d1-release | ||
| #EXT-X-TARGETDURATION:11 | ||
| #EXT-X-PLAYLIST-TYPE:VOD | ||
| #EXT-X-MAP:URI="audio_es_2c_64k_opus_init.mp4" | ||
| #EXT-X-KEY:METHOD=SAMPLE-AES-CTR,URI="data:text/plain;base64,AAAAOHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAABgiEIylSxG1rhIsgGndN+aTxWtI49yVmwY=",KEYID=0xce0786df75ef55e080043bc124d46f3d,KEYFORMATVERSIONS="1",KEYFORMAT="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed" | ||
| #EXTINF:10.020, | ||
| audio_es_2c_64k_opus_1.mp4 | ||
| #EXTINF:10.000, | ||
| audio_es_2c_64k_opus_2.mp4 | ||
| #EXTINF:5.011, | ||
| audio_es_2c_64k_opus_3.mp4 | ||
| #EXT-X-ENDLIST |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,14 @@ | ||
| #EXTM3U | ||
| #EXT-X-VERSION:6 | ||
| ## Generated with https://github.com/shaka-project/shaka-packager version v3.4.0-1f0a4d1-release | ||
| #EXT-X-TARGETDURATION:11 | ||
| #EXT-X-PLAYLIST-TYPE:VOD | ||
| #EXT-X-MAP:URI="video_720p_2M_h264_init.mp4" | ||
| #EXT-X-KEY:METHOD=SAMPLE-AES-CTR,URI="data:text/plain;base64,AAAAOHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAABgiEIylSxG1rhIsgGndN+aTxWtI49yVmwY=",KEYID=0x034f5e3097ca52c882cfceb248cf1686,KEYFORMATVERSIONS="1",KEYFORMAT="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed" | ||
| #EXTINF:10.000, | ||
| video_720p_2M_h264_1.mp4 | ||
| #EXTINF:10.000, | ||
| video_720p_2M_h264_2.mp4 | ||
| #EXTINF:5.000, | ||
| video_720p_2M_h264_3.mp4 | ||
| #EXT-X-ENDLIST |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,14 @@ | ||
| #EXTM3U | ||
| #EXT-X-VERSION:6 | ||
| ## Generated with https://github.com/shaka-project/shaka-packager version v3.4.0-1f0a4d1-release | ||
| #EXT-X-TARGETDURATION:11 | ||
| #EXT-X-PLAYLIST-TYPE:VOD | ||
| #EXT-X-MAP:URI="audio_es_2c_128k_aac_init.mp4" | ||
| #EXT-X-KEY:METHOD=SAMPLE-AES-CTR,URI="data:text/plain;base64,AAAAOHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAABgiEIylSxG1rhIsgGndN+aTxWtI49yVmwY=",KEYID=0xce0786df75ef55e080043bc124d46f3d,KEYFORMATVERSIONS="1",KEYFORMAT="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed" | ||
| #EXTINF:10.005, | ||
| audio_es_2c_128k_aac_1.mp4 | ||
| #EXTINF:10.005, | ||
| audio_es_2c_128k_aac_2.mp4 | ||
| #EXTINF:5.035, | ||
| audio_es_2c_128k_aac_3.mp4 | ||
| #EXT-X-ENDLIST |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,14 @@ | ||
| #EXTM3U | ||
| #EXT-X-VERSION:6 | ||
| ## Generated with https://github.com/shaka-project/shaka-packager version v3.4.0-1f0a4d1-release | ||
| #EXT-X-TARGETDURATION:11 | ||
| #EXT-X-PLAYLIST-TYPE:VOD | ||
| #EXT-X-MAP:URI="audio_en_2c_64k_opus_init.mp4" | ||
| #EXT-X-KEY:METHOD=SAMPLE-AES-CTR,URI="data:text/plain;base64,AAAAOHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAABgiEIylSxG1rhIsgGndN+aTxWtI49yVmwY=",KEYID=0xce0786df75ef55e080043bc124d46f3d,KEYFORMATVERSIONS="1",KEYFORMAT="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed" | ||
| #EXTINF:10.020, | ||
| audio_en_2c_64k_opus_1.mp4 | ||
| #EXTINF:10.000, | ||
| audio_en_2c_64k_opus_2.mp4 | ||
| #EXTINF:5.011, | ||
| audio_en_2c_64k_opus_3.mp4 | ||
| #EXT-X-ENDLIST |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,14 @@ | ||
| #EXTM3U | ||
| #EXT-X-VERSION:6 | ||
| ## Generated with https://github.com/shaka-project/shaka-packager version v3.4.0-1f0a4d1-release | ||
| #EXT-X-TARGETDURATION:11 | ||
| #EXT-X-PLAYLIST-TYPE:VOD | ||
| #EXT-X-MAP:URI="video_480p_389k_av1_init.mp4" | ||
| #EXT-X-KEY:METHOD=SAMPLE-AES-CTR,URI="data:text/plain;base64,AAAAOHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAABgiEIylSxG1rhIsgGndN+aTxWtI49yVmwY=",KEYID=0x7a4d63a12e395c989d3fe3278b099c4d,KEYFORMATVERSIONS="1",KEYFORMAT="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed" | ||
| #EXTINF:10.000, | ||
| video_480p_389k_av1_1.mp4 | ||
| #EXTINF:10.000, | ||
| video_480p_389k_av1_2.mp4 | ||
| #EXTINF:5.000, | ||
| video_480p_389k_av1_3.mp4 | ||
| #EXT-X-ENDLIST |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,14 @@ | ||
| #EXTM3U | ||
| #EXT-X-VERSION:6 | ||
| ## Generated with https://github.com/shaka-project/shaka-packager version v3.4.0-1f0a4d1-release | ||
| #EXT-X-TARGETDURATION:11 | ||
| #EXT-X-PLAYLIST-TYPE:VOD | ||
| #EXT-X-MAP:URI="video_720p_512k_av1_init.mp4" | ||
| #EXT-X-KEY:METHOD=SAMPLE-AES-CTR,URI="data:text/plain;base64,AAAAOHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAABgiEIylSxG1rhIsgGndN+aTxWtI49yVmwY=",KEYID=0x034f5e3097ca52c882cfceb248cf1686,KEYFORMATVERSIONS="1",KEYFORMAT="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed" | ||
| #EXTINF:10.000, | ||
| video_720p_512k_av1_1.mp4 | ||
| #EXTINF:10.000, | ||
| video_720p_512k_av1_2.mp4 | ||
| #EXTINF:5.000, | ||
| video_720p_512k_av1_3.mp4 | ||
| #EXT-X-ENDLIST |
Uh oh!
There was an error while loading. Please reload this page.