shaka-player 4.4.2 → 4.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/release-please.yaml +2 -27
- package/CHANGELOG.md +67 -25
- package/README.md +16 -10
- package/demo/asset_card.js +18 -21
- package/demo/cast_receiver/index.html +0 -1
- package/demo/close_button.js +0 -3
- package/demo/common/asset.js +27 -5
- package/demo/common/assets.js +150 -52
- package/demo/config.js +192 -253
- package/demo/custom.js +39 -98
- package/demo/front.js +7 -10
- package/demo/index.html +19 -22
- package/demo/input.js +6 -11
- package/demo/input_container.js +8 -9
- package/demo/main.js +52 -124
- package/demo/search.js +23 -35
- package/demo/service_worker.js +0 -3
- package/demo/tooltip.js +3 -5
- package/demo/visualizer.js +3 -5
- package/demo/visualizer_button.js +1 -20
- package/dist/demo.compiled.debug.js +187 -211
- package/dist/demo.compiled.debug.map +4 -4
- package/dist/demo.compiled.js +187 -211
- package/dist/demo.compiled.map +4 -4
- package/dist/deps.js +27 -24
- package/dist/locales.js +31 -31
- package/dist/receiver.compiled.debug.js +42 -61
- package/dist/receiver.compiled.debug.map +4 -4
- package/dist/receiver.compiled.js +42 -61
- package/dist/receiver.compiled.map +4 -4
- package/dist/shaka-player.compiled.d.ts +728 -365
- package/dist/shaka-player.compiled.debug.d.ts +728 -365
- package/dist/shaka-player.compiled.debug.externs.js +475 -51
- package/dist/shaka-player.compiled.debug.js +576 -480
- package/dist/shaka-player.compiled.debug.map +4 -4
- package/dist/shaka-player.compiled.externs.js +475 -51
- package/dist/shaka-player.compiled.js +1117 -1056
- package/dist/shaka-player.compiled.map +4 -4
- package/dist/shaka-player.ui.d.ts +783 -410
- package/dist/shaka-player.ui.debug.d.ts +783 -410
- package/dist/shaka-player.ui.debug.externs.js +496 -51
- package/dist/shaka-player.ui.debug.js +647 -542
- package/dist/shaka-player.ui.debug.map +4 -4
- package/dist/shaka-player.ui.externs.js +496 -51
- package/dist/shaka-player.ui.js +1260 -1194
- package/dist/shaka-player.ui.map +4 -4
- package/docs/design/lcevc-integration.md +14 -14
- package/docs/tutorials/faq.md +27 -55
- package/docs/tutorials/index.json +2 -1
- package/docs/tutorials/lcevc.md +118 -0
- package/docs/tutorials/offline.md +1 -1
- package/docs/tutorials/ui-customization.md +4 -0
- package/externs/css_style_declaration.js +19 -0
- package/externs/lcevc.js +37 -13
- package/externs/media_remote.js +68 -0
- package/externs/mediatailor.js +193 -0
- package/externs/pictureinpicture.js +11 -0
- package/externs/shaka/ads.js +27 -0
- package/externs/shaka/manifest.js +10 -5
- package/externs/shaka/manifest_parser.js +7 -1
- package/externs/shaka/offline.js +4 -0
- package/externs/shaka/player.js +12 -1
- package/karma.conf.js +7 -3
- package/lib/abr/simple_abr_manager.js +43 -3
- package/lib/ads/ad_manager.js +104 -50
- package/lib/ads/media_tailor_ad.js +297 -0
- package/lib/ads/media_tailor_ad_manager.js +828 -0
- package/lib/cea/ts_cea_parser.js +15 -2
- package/lib/config/codec_switching_strategy.js +24 -0
- package/lib/dash/content_protection.js +120 -2
- package/lib/dash/dash_parser.js +79 -13
- package/lib/dash/mpd_utils.js +10 -6
- package/lib/dash/segment_base.js +13 -5
- package/lib/dash/segment_list.js +13 -5
- package/lib/dash/segment_template.js +43 -85
- package/lib/dependencies/all.js +8 -7
- package/lib/hls/hls_parser.js +101 -37
- package/lib/lcevc/lcevc_dec.js +220 -0
- package/lib/media/adaptation_set.js +22 -11
- package/lib/media/adaptation_set_criteria.js +25 -7
- package/lib/media/media_source_engine.js +215 -27
- package/lib/media/segment_index.js +5 -5
- package/lib/media/segment_reference.js +10 -5
- package/lib/media/streaming_engine.js +44 -39
- package/lib/mss/mss_parser.js +1 -0
- package/lib/net/networking_engine.js +1 -0
- package/lib/offline/indexeddb/v1_storage_cell.js +1 -0
- package/lib/offline/indexeddb/v2_storage_cell.js +1 -0
- package/lib/offline/manifest_converter.js +1 -0
- package/lib/offline/storage.js +3 -0
- package/lib/player.js +142 -72
- package/lib/routing/payload.js +5 -1
- package/lib/text/cue.js +62 -47
- package/lib/text/ttml_text_parser.js +17 -0
- package/lib/text/ui_text_displayer.js +4 -0
- package/lib/text/vtt_text_parser.js +35 -22
- package/lib/transmuxer/h265.js +862 -0
- package/lib/transmuxer/mpeg_ts_transmuxer.js +3 -2
- package/lib/transmuxer/ts_transmuxer.js +160 -15
- package/lib/util/cmcd_manager.js +6 -1
- package/lib/util/error.js +28 -9
- package/lib/util/exp_golomb.js +30 -2
- package/lib/util/fake_event.js +3 -0
- package/lib/util/manifest_parser_utils.js +10 -4
- package/lib/util/mp4_generator.js +4 -4
- package/lib/util/periods.js +2 -0
- package/lib/util/platform.js +54 -0
- package/lib/util/player_configuration.js +8 -0
- package/lib/util/state_history.js +6 -2
- package/lib/util/stream_utils.js +133 -217
- package/lib/util/ts_parser.js +229 -43
- package/maintained-branches.md +3 -2
- package/package.json +4 -6
- package/roadmap.md +15 -5
- package/shaka-player.uncompiled.js +2 -1
- package/support.html +0 -1
- package/test/cast/cast_receiver_integration.js +47 -0
- package/test/codec_switching/codec_switching_integration.js +181 -0
- package/test/dash/dash_parser_content_protection_unit.js +2 -0
- package/test/dash/dash_parser_integration.js +73 -0
- package/test/dash/dash_parser_live_unit.js +2 -0
- package/test/dash/dash_parser_manifest_unit.js +47 -0
- package/test/dash/dash_parser_segment_base_unit.js +7 -0
- package/test/dash/dash_parser_segment_list_unit.js +23 -17
- package/test/dash/dash_parser_segment_template_unit.js +49 -0
- package/test/demo/demo_unit.js +0 -16
- package/test/hls/hls_live_unit.js +35 -0
- package/test/hls/hls_parser_unit.js +8 -61
- package/test/media/adaptation_set_criteria_unit.js +118 -0
- package/test/media/adaptation_set_unit.js +1 -0
- package/test/media/media_source_engine_unit.js +165 -1
- package/test/media/segment_index_unit.js +4 -4
- package/test/media/segment_prefetch_unit.js +1 -1
- package/test/media/streaming_engine_unit.js +17 -17
- package/test/mss/mss_parser_unit.js +2 -0
- package/test/offline/manifest_convert_unit.js +5 -0
- package/test/offline/storage_integration.js +1 -4
- package/test/player_unit.js +102 -131
- package/test/routing/walker_unit.js +1 -0
- package/test/test/assets/dash-aes-128/Fragments(video=0,format=mpd-time-csf) +0 -0
- package/test/test/assets/dash-aes-128/Fragments(video=20000000,format=mpd-time-csf) +0 -0
- package/test/test/assets/dash-aes-128/Fragments(video=40000000,format=mpd-time-csf) +0 -0
- package/test/test/assets/dash-aes-128/Fragments(video=60000000,format=mpd-time-csf) +0 -0
- package/test/test/assets/dash-aes-128/Fragments(video=i,format=mpd-time-csf) +0 -0
- package/test/test/assets/dash-aes-128/dash.mpd +18 -0
- package/test/test/assets/dash-aes-128/license +1 -0
- package/test/test/assets/dash-multi-codec/audio_en_2c_128k_aac.mp4 +0 -0
- package/test/test/assets/dash-multi-codec/audio_es_2c_64k_opus.webm +0 -0
- package/test/test/assets/dash-multi-codec/dash.mpd +32 -0
- package/test/test/assets/dash-multi-codec/video_144p_108k_h264.mp4 +0 -0
- package/test/test/assets/hls-ts-h265/0.ts +0 -0
- package/test/test/assets/hls-ts-h265/hevc.m3u8 +6 -0
- package/test/test/assets/hls-ts-h265/index.m3u8 +7 -0
- package/test/test/assets/hls-ts-muxed-aac-h265/0.ts +0 -0
- package/test/test/assets/hls-ts-muxed-aac-h265/1.ts +0 -0
- package/test/test/assets/hls-ts-muxed-aac-h265/media.m3u8 +9 -0
- package/test/test/assets/hls-ts-muxed-ac3-h264/media.m3u8 +24 -0
- package/test/test/assets/hls-ts-muxed-ac3-h264/s_00000.ts +0 -0
- package/test/test/assets/hls-ts-muxed-ac3-h264/s_00001.ts +0 -0
- package/test/test/assets/hls-ts-muxed-ac3-h264/s_00002.ts +0 -0
- package/test/test/assets/hls-ts-muxed-ac3-h264/s_00003.ts +0 -0
- package/test/test/assets/hls-ts-muxed-ac3-h264/s_00004.ts +0 -0
- package/test/test/assets/hls-ts-muxed-ac3-h264/s_00005.ts +0 -0
- package/test/test/assets/hls-ts-muxed-ec3-h264/ChID_voices_1280x720p_25fps_h264_6ch_256kbps_ddp_sub_0000.ts +0 -0
- package/test/test/assets/hls-ts-muxed-ec3-h264/ChID_voices_1280x720p_25fps_h264_6ch_256kbps_ddp_sub_0001.ts +0 -0
- package/test/test/assets/hls-ts-muxed-ec3-h264/ChID_voices_1280x720p_25fps_h264_6ch_256kbps_ddp_sub_0002.ts +0 -0
- package/test/test/assets/hls-ts-muxed-ec3-h264/ChID_voices_1280x720p_25fps_h264_6ch_256kbps_ddp_sub_0003.ts +0 -0
- package/test/test/assets/hls-ts-muxed-ec3-h264/prog_index.m3u8 +14 -0
- package/test/test/assets/hls-ts-muxed-mp3-h264/index.m3u8 +23 -0
- package/test/test/assets/hls-ts-muxed-mp3-h264/seg-1-v1-a1.ts +0 -0
- package/test/test/assets/hls-ts-muxed-mp3-h264/seg-2-v1-a1.ts +0 -0
- package/test/test/assets/hls-ts-muxed-mp3-h264/seg-3-v1-a1.ts +0 -0
- package/test/test/assets/hls-ts-muxed-mp3-h264/seg-4-v1-a1.ts +0 -0
- package/test/test/assets/hls-ts-muxed-mp3-h264/seg-5-v1-a1.ts +0 -0
- package/test/test/assets/hls-ts-muxed-mp3-h264/seg-6-v1-a1.ts +0 -0
- package/test/test/assets/hls-ts-muxed-mp3-h264/seg-7-v1-a1.ts +0 -0
- package/test/test/assets/hls-ts-muxed-mp3-h264/seg-8-v1-a1.ts +0 -0
- package/test/test/util/dash_parser_util.js +20 -7
- package/test/test/util/fake_ad_manager.js +20 -0
- package/test/test/util/fake_media_source_engine.js +8 -2
- package/test/test/util/manifest_generator.js +7 -3
- package/test/test/util/mss_parser_util.js +4 -0
- package/test/test/util/offline_utils.js +1 -0
- package/test/test/util/streaming_engine_util.js +7 -4
- package/test/text/ttml_text_parser_unit.js +52 -0
- package/test/text/vtt_text_parser_unit.js +105 -48
- package/test/transmuxer/transmuxer_integration.js +121 -4
- package/test/ui/ui_unit.js +3 -10
- package/test/util/stream_utils_unit.js +208 -74
- package/test/util/ts_parser_unit.js +1 -1
- package/ui/controls.js +125 -0
- package/ui/externs/ui.js +8 -1
- package/ui/pip_button.js +22 -120
- package/ui/remote_button.js +201 -0
- package/ui/ui.js +5 -2
- package/demo/common/message_ids.js +0 -309
- package/demo/locales/en.json +0 -287
- package/demo/locales/source.json +0 -1142
- package/externs/mux.js +0 -69
- package/lib/lcevc/lcevc_dil.js +0 -152
- package/lib/transmuxer/muxjs_transmuxer.js +0 -242
- package/test/transmuxer/muxjs_transmuxer_integration.js +0 -177
package/test/player_unit.js
CHANGED
|
@@ -92,7 +92,7 @@ describe('Player', () => {
|
|
|
92
92
|
variant.addVideo(2);
|
|
93
93
|
});
|
|
94
94
|
manifest.addVariant(1, (variant) => {
|
|
95
|
-
variant.addAudio(
|
|
95
|
+
variant.addAudio(1);
|
|
96
96
|
variant.addVideo(4);
|
|
97
97
|
});
|
|
98
98
|
});
|
|
@@ -128,8 +128,8 @@ describe('Player', () => {
|
|
|
128
128
|
getUseEmbeddedText: jasmine.createSpy('getUseEmbeddedText'),
|
|
129
129
|
setSegmentRelativeVttTiming:
|
|
130
130
|
jasmine.createSpy('setSegmentRelativeVttTiming'),
|
|
131
|
-
|
|
132
|
-
jasmine.createSpy('
|
|
131
|
+
updateLcevcDec:
|
|
132
|
+
jasmine.createSpy('updateLcevcDec'),
|
|
133
133
|
getTextDisplayer: () => textDisplayer,
|
|
134
134
|
getBufferedInfo: () => bufferedInfo,
|
|
135
135
|
ended: jasmine.createSpy('ended').and.returnValue(false),
|
|
@@ -184,6 +184,7 @@ describe('Player', () => {
|
|
|
184
184
|
describe('destroy', () => {
|
|
185
185
|
it('cleans up all dependencies', async () => {
|
|
186
186
|
goog.asserts.assert(manifest, 'Manifest should be non-null');
|
|
187
|
+
await player.load(fakeManifestUri, 0, fakeMimeType);
|
|
187
188
|
const segmentIndexes = [];
|
|
188
189
|
for (const variant of manifest.variants) {
|
|
189
190
|
if (variant.audio) {
|
|
@@ -340,15 +341,12 @@ describe('Player', () => {
|
|
|
340
341
|
});
|
|
341
342
|
|
|
342
343
|
describe('disableStream', () => {
|
|
343
|
-
/** @type {function(function(), number)} */
|
|
344
|
-
let realSetTimeout;
|
|
345
344
|
/** @type {number} */
|
|
346
345
|
let disableTimeInSeconds;
|
|
347
346
|
/** @type {?jasmine.Spy} */
|
|
348
347
|
let getBufferedInfoSpy;
|
|
349
348
|
|
|
350
349
|
beforeAll(() => {
|
|
351
|
-
realSetTimeout = window.setTimeout;
|
|
352
350
|
jasmine.clock().install();
|
|
353
351
|
jasmine.clock().mockDate();
|
|
354
352
|
});
|
|
@@ -381,15 +379,21 @@ describe('Player', () => {
|
|
|
381
379
|
stream.mime('audio/mp4', 'mp4a.40.2');
|
|
382
380
|
stream.language = 'en';
|
|
383
381
|
});
|
|
384
|
-
variant.addVideo(2)
|
|
382
|
+
variant.addVideo(2, (stream) => {
|
|
383
|
+
stream.size(10, 10);
|
|
384
|
+
});
|
|
385
385
|
});
|
|
386
386
|
manifest.addVariant(1, (variant) => {
|
|
387
387
|
variant.addExistingStream(1);
|
|
388
|
-
variant.addVideo(3)
|
|
388
|
+
variant.addVideo(3, (stream) => {
|
|
389
|
+
stream.size(20, 20);
|
|
390
|
+
});
|
|
389
391
|
});
|
|
390
392
|
manifest.addVariant(2, (variant) => {
|
|
391
393
|
variant.addExistingStream(1);
|
|
392
|
-
variant.addVideo(4)
|
|
394
|
+
variant.addVideo(4, (stream) => {
|
|
395
|
+
stream.size(30, 30);
|
|
396
|
+
});
|
|
393
397
|
});
|
|
394
398
|
});
|
|
395
399
|
}
|
|
@@ -498,102 +502,6 @@ describe('Player', () => {
|
|
|
498
502
|
expect(fromAdaptation).toBeFalsy();
|
|
499
503
|
});
|
|
500
504
|
|
|
501
|
-
it('disables all variants containing stream', async () => {
|
|
502
|
-
manifest = shaka.test.ManifestGenerator.generate((manifest) => {
|
|
503
|
-
manifest.addVariant(0, (variant) => {
|
|
504
|
-
variant.addAudio(1, (stream) => {
|
|
505
|
-
stream.mime('audio/mp4', 'mp4a.40.2');
|
|
506
|
-
stream.language = 'en';
|
|
507
|
-
stream.bandwidth = 100;
|
|
508
|
-
});
|
|
509
|
-
variant.addVideo(2);
|
|
510
|
-
});
|
|
511
|
-
manifest.addVariant(1, (variant) => {
|
|
512
|
-
variant.addExistingStream(1);
|
|
513
|
-
variant.addVideo(3);
|
|
514
|
-
});
|
|
515
|
-
|
|
516
|
-
manifest.addVariant(2, (variant) => {
|
|
517
|
-
variant.addAudio(4, (stream) => {
|
|
518
|
-
stream.mime('audio/mp4', 'mp4a.40.2');
|
|
519
|
-
stream.language = 'en';
|
|
520
|
-
stream.bandwidth = 200;
|
|
521
|
-
});
|
|
522
|
-
variant.addExistingStream(2);
|
|
523
|
-
});
|
|
524
|
-
manifest.addVariant(3, (variant) => {
|
|
525
|
-
variant.addExistingStream(4);
|
|
526
|
-
variant.addExistingStream(3);
|
|
527
|
-
});
|
|
528
|
-
});
|
|
529
|
-
|
|
530
|
-
await player.load(fakeManifestUri, 0, fakeMimeType);
|
|
531
|
-
|
|
532
|
-
const variantCount = manifest.variants.length;
|
|
533
|
-
const variantAffected = 2;
|
|
534
|
-
const audioStream =
|
|
535
|
-
/** @type {shaka.extern.Stream} */ (manifest.variants[0].audio);
|
|
536
|
-
|
|
537
|
-
player.disableStream(audioStream, disableTimeInSeconds);
|
|
538
|
-
|
|
539
|
-
await shaka.test.Util.shortDelay(realSetTimeout);
|
|
540
|
-
|
|
541
|
-
expect(abrManager.setVariants).toHaveBeenCalled();
|
|
542
|
-
|
|
543
|
-
const updatedVariants =
|
|
544
|
-
abrManager.setVariants.calls.mostRecent().args[0];
|
|
545
|
-
|
|
546
|
-
expect(updatedVariants.length).toBe(variantCount - variantAffected);
|
|
547
|
-
|
|
548
|
-
for (const variant of updatedVariants) {
|
|
549
|
-
expect(variant.audio).not.toEqual(audioStream);
|
|
550
|
-
}
|
|
551
|
-
});
|
|
552
|
-
|
|
553
|
-
it('does not disable streams if abr is disabled', async () => {
|
|
554
|
-
await player.load(fakeManifestUri, 0, fakeMimeType);
|
|
555
|
-
|
|
556
|
-
player.configure({abr: {enabled: true}});
|
|
557
|
-
|
|
558
|
-
const videoStream =
|
|
559
|
-
/** @type {shaka.extern.Stream} */ (manifest.variants[0].video);
|
|
560
|
-
let status = player.disableStream(videoStream, 10);
|
|
561
|
-
expect(status).toBe(true);
|
|
562
|
-
|
|
563
|
-
player.configure({abr: {enabled: false}});
|
|
564
|
-
|
|
565
|
-
status = player.disableStream(videoStream, 10);
|
|
566
|
-
expect(status).toBe(false);
|
|
567
|
-
});
|
|
568
|
-
|
|
569
|
-
it('disables stream if have alternate stream', async () => {
|
|
570
|
-
// Run test with the default manifest
|
|
571
|
-
await runTest(0, 'video', true);
|
|
572
|
-
|
|
573
|
-
manifest = shaka.test.ManifestGenerator.generate((manifest) => {
|
|
574
|
-
manifest.addVariant(0, (variant) => {
|
|
575
|
-
variant.addAudio(1, (stream) => {
|
|
576
|
-
stream.mime('audio/mp4', 'mp4a.40.2');
|
|
577
|
-
stream.language = 'en';
|
|
578
|
-
stream.bandwidth = 10;
|
|
579
|
-
});
|
|
580
|
-
variant.addVideo(2);
|
|
581
|
-
});
|
|
582
|
-
manifest.addVariant(1, (variant) => {
|
|
583
|
-
variant.addAudio(3, (stream) => {
|
|
584
|
-
stream.mime('audio/mp4', 'mp4a.40.2');
|
|
585
|
-
stream.language = 'en';
|
|
586
|
-
stream.bandwidth = 20;
|
|
587
|
-
});
|
|
588
|
-
variant.addExistingStream(2);
|
|
589
|
-
});
|
|
590
|
-
});
|
|
591
|
-
|
|
592
|
-
player.configure({abr: {enabled: true}});
|
|
593
|
-
|
|
594
|
-
await runTest(0, 'audio', true);
|
|
595
|
-
});
|
|
596
|
-
|
|
597
505
|
describe('does not disable stream if there not alternate stream', () => {
|
|
598
506
|
it('single audio multiple videos', async () => {
|
|
599
507
|
manifest = shaka.test.ManifestGenerator.generate((manifest) => {
|
|
@@ -2711,15 +2619,15 @@ describe('Player', () => {
|
|
|
2711
2619
|
});
|
|
2712
2620
|
manifest.addVariant(2, (variant) => {
|
|
2713
2621
|
variant.bandwidth = 300;
|
|
2714
|
-
variant.addAudio(
|
|
2622
|
+
variant.addAudio(1, (stream) => {
|
|
2715
2623
|
stream.bandwidth = 200;
|
|
2716
2624
|
});
|
|
2717
2625
|
variant.addExistingStream(2); // video
|
|
2718
2626
|
});
|
|
2719
2627
|
manifest.addVariant(3, (variant) => {
|
|
2720
2628
|
variant.bandwidth = 400;
|
|
2721
|
-
variant.addExistingStream(
|
|
2722
|
-
variant.addExistingStream(
|
|
2629
|
+
variant.addExistingStream(1); // audio
|
|
2630
|
+
variant.addExistingStream(2); // video
|
|
2723
2631
|
});
|
|
2724
2632
|
});
|
|
2725
2633
|
|
|
@@ -3028,11 +2936,15 @@ describe('Player', () => {
|
|
|
3028
2936
|
manifest = shaka.test.ManifestGenerator.generate((manifest) => {
|
|
3029
2937
|
manifest.addVariant(0, (variant) => {
|
|
3030
2938
|
variant.bandwidth = 500;
|
|
3031
|
-
variant.addVideo(1)
|
|
2939
|
+
variant.addVideo(1, (stream) => {
|
|
2940
|
+
stream.size(10, 10);
|
|
2941
|
+
});
|
|
3032
2942
|
});
|
|
3033
2943
|
manifest.addVariant(1, (variant) => {
|
|
3034
2944
|
variant.bandwidth = 100;
|
|
3035
|
-
variant.addVideo(2)
|
|
2945
|
+
variant.addVideo(2, (stream) => {
|
|
2946
|
+
stream.size(30, 30);
|
|
2947
|
+
});
|
|
3036
2948
|
});
|
|
3037
2949
|
});
|
|
3038
2950
|
|
|
@@ -3067,11 +2979,15 @@ describe('Player', () => {
|
|
|
3067
2979
|
manifest = shaka.test.ManifestGenerator.generate((manifest) => {
|
|
3068
2980
|
manifest.addVariant(1, (variant) => {
|
|
3069
2981
|
variant.bandwidth = 500;
|
|
3070
|
-
variant.addVideo(10)
|
|
2982
|
+
variant.addVideo(10, (stream) => {
|
|
2983
|
+
stream.size(10, 10);
|
|
2984
|
+
});
|
|
3071
2985
|
});
|
|
3072
2986
|
manifest.addVariant(2, (variant) => {
|
|
3073
2987
|
variant.bandwidth = 100;
|
|
3074
|
-
variant.addVideo(20)
|
|
2988
|
+
variant.addVideo(20, (stream) => {
|
|
2989
|
+
stream.size(30, 30);
|
|
2990
|
+
});
|
|
3075
2991
|
});
|
|
3076
2992
|
});
|
|
3077
2993
|
|
|
@@ -3101,10 +3017,13 @@ describe('Player', () => {
|
|
|
3101
3017
|
manifest.addVariant(0, (variant) => {
|
|
3102
3018
|
variant.addVideo(1, (stream) => {
|
|
3103
3019
|
stream.keyIds = new Set(['abc']);
|
|
3020
|
+
stream.size(10, 10);
|
|
3104
3021
|
});
|
|
3105
3022
|
});
|
|
3106
3023
|
manifest.addVariant(1, (variant) => {
|
|
3107
|
-
variant.addVideo(2)
|
|
3024
|
+
variant.addVideo(2, (stream) => {
|
|
3025
|
+
stream.size(20, 20);
|
|
3026
|
+
});
|
|
3108
3027
|
});
|
|
3109
3028
|
});
|
|
3110
3029
|
|
|
@@ -3133,10 +3052,13 @@ describe('Player', () => {
|
|
|
3133
3052
|
manifest.addVariant(0, (variant) => {
|
|
3134
3053
|
variant.addVideo(1, (stream) => {
|
|
3135
3054
|
stream.keyIds = new Set(['abc']);
|
|
3055
|
+
stream.size(10, 10);
|
|
3136
3056
|
});
|
|
3137
3057
|
});
|
|
3138
3058
|
manifest.addVariant(1, (variant) => {
|
|
3139
|
-
variant.addVideo(2)
|
|
3059
|
+
variant.addVideo(2, (stream) => {
|
|
3060
|
+
stream.size(20, 20);
|
|
3061
|
+
});
|
|
3140
3062
|
});
|
|
3141
3063
|
});
|
|
3142
3064
|
|
|
@@ -3232,10 +3154,13 @@ describe('Player', () => {
|
|
|
3232
3154
|
manifest.addVariant(0, (variant) => {
|
|
3233
3155
|
variant.addVideo(1, (stream) => {
|
|
3234
3156
|
stream.keyIds = new Set(['abc']);
|
|
3157
|
+
stream.size(10, 10);
|
|
3235
3158
|
});
|
|
3236
3159
|
});
|
|
3237
3160
|
manifest.addVariant(1, (variant) => {
|
|
3238
|
-
variant.addVideo(2)
|
|
3161
|
+
variant.addVideo(2, (stream) => {
|
|
3162
|
+
stream.size(20, 20);
|
|
3163
|
+
});
|
|
3239
3164
|
});
|
|
3240
3165
|
});
|
|
3241
3166
|
|
|
@@ -3254,10 +3179,13 @@ describe('Player', () => {
|
|
|
3254
3179
|
manifest.addVariant(0, (variant) => {
|
|
3255
3180
|
variant.addVideo(1, (stream) => {
|
|
3256
3181
|
stream.keyIds = new Set(['abc']);
|
|
3182
|
+
stream.size(10, 10);
|
|
3257
3183
|
});
|
|
3258
3184
|
});
|
|
3259
3185
|
manifest.addVariant(1, (variant) => {
|
|
3260
|
-
variant.addVideo(2)
|
|
3186
|
+
variant.addVideo(2, (stream) => {
|
|
3187
|
+
stream.size(20, 20);
|
|
3188
|
+
});
|
|
3261
3189
|
});
|
|
3262
3190
|
});
|
|
3263
3191
|
|
|
@@ -3276,10 +3204,13 @@ describe('Player', () => {
|
|
|
3276
3204
|
manifest.addVariant(0, (variant) => {
|
|
3277
3205
|
variant.addVideo(1, (stream) => {
|
|
3278
3206
|
stream.keyIds = new Set(['abc']);
|
|
3207
|
+
stream.size(10, 10);
|
|
3279
3208
|
});
|
|
3280
3209
|
});
|
|
3281
3210
|
manifest.addVariant(2, (variant) => {
|
|
3282
|
-
variant.addVideo(3)
|
|
3211
|
+
variant.addVideo(3, (stream) => {
|
|
3212
|
+
stream.size(20, 20);
|
|
3213
|
+
});
|
|
3283
3214
|
});
|
|
3284
3215
|
});
|
|
3285
3216
|
|
|
@@ -3299,16 +3230,19 @@ describe('Player', () => {
|
|
|
3299
3230
|
manifest.addVariant(0, (variant) => {
|
|
3300
3231
|
variant.addVideo(1, (stream) => {
|
|
3301
3232
|
stream.keyIds = new Set(['abc']);
|
|
3233
|
+
stream.size(10, 10);
|
|
3302
3234
|
});
|
|
3303
3235
|
});
|
|
3304
3236
|
manifest.addVariant(2, (variant) => {
|
|
3305
3237
|
variant.addVideo(3, (stream) => {
|
|
3306
3238
|
stream.keyIds = new Set(['def']);
|
|
3239
|
+
stream.size(20, 20);
|
|
3307
3240
|
});
|
|
3308
3241
|
});
|
|
3309
3242
|
manifest.addVariant(4, (variant) => {
|
|
3310
3243
|
variant.addVideo(5, (stream) => {
|
|
3311
3244
|
stream.keyIds = new Set(['abc', 'def']);
|
|
3245
|
+
stream.size(30, 30);
|
|
3312
3246
|
});
|
|
3313
3247
|
});
|
|
3314
3248
|
});
|
|
@@ -3326,10 +3260,13 @@ describe('Player', () => {
|
|
|
3326
3260
|
manifest.addVariant(0, (variant) => {
|
|
3327
3261
|
variant.addVideo(1, (stream) => {
|
|
3328
3262
|
stream.keyIds = new Set(['abc']);
|
|
3263
|
+
stream.size(10, 10);
|
|
3329
3264
|
});
|
|
3330
3265
|
});
|
|
3331
3266
|
manifest.addVariant(2, (variant) => {
|
|
3332
|
-
variant.addVideo(3)
|
|
3267
|
+
variant.addVideo(3, (stream) => {
|
|
3268
|
+
stream.size(20, 20);
|
|
3269
|
+
});
|
|
3333
3270
|
});
|
|
3334
3271
|
});
|
|
3335
3272
|
|
|
@@ -3349,10 +3286,13 @@ describe('Player', () => {
|
|
|
3349
3286
|
manifest.addVariant(0, (variant) => {
|
|
3350
3287
|
variant.addVideo(1, (stream) => {
|
|
3351
3288
|
stream.keyIds = new Set(['abc']);
|
|
3289
|
+
stream.size(10, 10);
|
|
3352
3290
|
});
|
|
3353
3291
|
});
|
|
3354
3292
|
manifest.addVariant(2, (variant) => {
|
|
3355
|
-
variant.addVideo(3)
|
|
3293
|
+
variant.addVideo(3, (stream) => {
|
|
3294
|
+
stream.size(20, 20);
|
|
3295
|
+
});
|
|
3356
3296
|
});
|
|
3357
3297
|
});
|
|
3358
3298
|
|
|
@@ -3371,15 +3311,19 @@ describe('Player', () => {
|
|
|
3371
3311
|
manifest.addVariant(0, (variant) => {
|
|
3372
3312
|
variant.addVideo(1, (stream) => {
|
|
3373
3313
|
stream.keyIds = new Set(['abc']);
|
|
3314
|
+
stream.size(10, 10);
|
|
3374
3315
|
});
|
|
3375
3316
|
});
|
|
3376
3317
|
manifest.addVariant(2, (variant) => {
|
|
3377
3318
|
variant.addVideo(3, (stream) => {
|
|
3378
3319
|
stream.keyIds = new Set(['xyz']);
|
|
3320
|
+
stream.size(20, 20);
|
|
3379
3321
|
});
|
|
3380
3322
|
});
|
|
3381
3323
|
manifest.addVariant(4, (variant) => {
|
|
3382
|
-
variant.addVideo(5)
|
|
3324
|
+
variant.addVideo(5, (stream) => {
|
|
3325
|
+
stream.size(30, 30);
|
|
3326
|
+
});
|
|
3383
3327
|
});
|
|
3384
3328
|
});
|
|
3385
3329
|
|
|
@@ -3433,15 +3377,21 @@ describe('Player', () => {
|
|
|
3433
3377
|
manifest = shaka.test.ManifestGenerator.generate((manifest) => {
|
|
3434
3378
|
manifest.addVariant(0, (variant) => {
|
|
3435
3379
|
variant.bandwidth = 10;
|
|
3436
|
-
variant.addVideo(1)
|
|
3380
|
+
variant.addVideo(1, (stream) => {
|
|
3381
|
+
stream.size(10, 10);
|
|
3382
|
+
});
|
|
3437
3383
|
});
|
|
3438
3384
|
manifest.addVariant(1, (variant) => {
|
|
3439
3385
|
variant.bandwidth = 1500;
|
|
3440
|
-
variant.addVideo(2)
|
|
3386
|
+
variant.addVideo(2, (stream) => {
|
|
3387
|
+
stream.size(20, 20);
|
|
3388
|
+
});
|
|
3441
3389
|
});
|
|
3442
3390
|
manifest.addVariant(2, (variant) => {
|
|
3443
3391
|
variant.bandwidth = 500;
|
|
3444
|
-
variant.addVideo(3)
|
|
3392
|
+
variant.addVideo(3, (stream) => {
|
|
3393
|
+
stream.size(30, 30);
|
|
3394
|
+
});
|
|
3445
3395
|
});
|
|
3446
3396
|
});
|
|
3447
3397
|
|
|
@@ -3557,7 +3507,7 @@ describe('Player', () => {
|
|
|
3557
3507
|
variant.addVideo(3, (stream) => {
|
|
3558
3508
|
stream.size(190, 190);
|
|
3559
3509
|
});
|
|
3560
|
-
variant.addAudio(
|
|
3510
|
+
variant.addAudio(2);
|
|
3561
3511
|
});
|
|
3562
3512
|
});
|
|
3563
3513
|
|
|
@@ -3620,18 +3570,21 @@ describe('Player', () => {
|
|
|
3620
3570
|
variant.bandwidth = 100;
|
|
3621
3571
|
variant.addVideo(0, (stream) => {
|
|
3622
3572
|
stream.codecs = 'good';
|
|
3573
|
+
stream.size(10, 10);
|
|
3623
3574
|
});
|
|
3624
3575
|
});
|
|
3625
3576
|
manifest.addVariant(1, (variant) => {
|
|
3626
3577
|
variant.bandwidth = 200;
|
|
3627
3578
|
variant.addVideo(1, (stream) => {
|
|
3628
3579
|
stream.codecs = 'good';
|
|
3580
|
+
stream.size(20, 20);
|
|
3629
3581
|
});
|
|
3630
3582
|
});
|
|
3631
3583
|
manifest.addVariant(2, (variant) => {
|
|
3632
3584
|
variant.bandwidth = 300;
|
|
3633
3585
|
variant.addVideo(2, (stream) => {
|
|
3634
3586
|
stream.codecs = 'good';
|
|
3587
|
+
stream.size(30, 30);
|
|
3635
3588
|
});
|
|
3636
3589
|
});
|
|
3637
3590
|
|
|
@@ -3640,18 +3593,21 @@ describe('Player', () => {
|
|
|
3640
3593
|
variant.bandwidth = 10000;
|
|
3641
3594
|
variant.addVideo(3, (stream) => {
|
|
3642
3595
|
stream.codecs = 'bad';
|
|
3596
|
+
stream.size(10, 10);
|
|
3643
3597
|
});
|
|
3644
3598
|
});
|
|
3645
3599
|
manifest.addVariant(4, (variant) => {
|
|
3646
3600
|
variant.bandwidth = 20000;
|
|
3647
3601
|
variant.addVideo(4, (stream) => {
|
|
3648
3602
|
stream.codecs = 'bad';
|
|
3603
|
+
stream.size(20, 20);
|
|
3649
3604
|
});
|
|
3650
3605
|
});
|
|
3651
3606
|
manifest.addVariant(5, (variant) => {
|
|
3652
3607
|
variant.bandwidth = 30000;
|
|
3653
3608
|
variant.addVideo(5, (stream) => {
|
|
3654
3609
|
stream.codecs = 'bad';
|
|
3610
|
+
stream.size(30, 30);
|
|
3655
3611
|
});
|
|
3656
3612
|
});
|
|
3657
3613
|
});
|
|
@@ -3672,10 +3628,13 @@ describe('Player', () => {
|
|
|
3672
3628
|
manifest.addVariant(0, (variant) => {
|
|
3673
3629
|
variant.addVideo(1, (stream) => {
|
|
3674
3630
|
stream.keyIds = new Set(['abc']);
|
|
3631
|
+
stream.size(10, 10);
|
|
3675
3632
|
});
|
|
3676
3633
|
});
|
|
3677
3634
|
manifest.addVariant(2, (variant) => {
|
|
3678
|
-
variant.addVideo(3)
|
|
3635
|
+
variant.addVideo(3, (stream) => {
|
|
3636
|
+
stream.size(20, 20);
|
|
3637
|
+
});
|
|
3679
3638
|
});
|
|
3680
3639
|
});
|
|
3681
3640
|
|
|
@@ -3778,19 +3737,25 @@ describe('Player', () => {
|
|
|
3778
3737
|
manifest = shaka.test.ManifestGenerator.generate((manifest) => {
|
|
3779
3738
|
manifest.addVariant(0, (variant) => {
|
|
3780
3739
|
variant.bandwidth = 100;
|
|
3781
|
-
variant.addVideo(0)
|
|
3740
|
+
variant.addVideo(0, (stream) => {
|
|
3741
|
+
stream.size(10, 10);
|
|
3742
|
+
});
|
|
3782
3743
|
variant.addAudio(9);
|
|
3783
3744
|
});
|
|
3784
3745
|
|
|
3785
3746
|
manifest.addVariant(1, (variant) => {
|
|
3786
3747
|
variant.bandwidth = 200;
|
|
3787
|
-
variant.addVideo(1)
|
|
3748
|
+
variant.addVideo(1, (stream) => {
|
|
3749
|
+
stream.size(20, 20);
|
|
3750
|
+
});
|
|
3788
3751
|
variant.addExistingStream(9); // audio
|
|
3789
3752
|
});
|
|
3790
3753
|
|
|
3791
3754
|
manifest.addVariant(2, (variant) => {
|
|
3792
3755
|
variant.bandwidth = 300;
|
|
3793
|
-
variant.addVideo(2)
|
|
3756
|
+
variant.addVideo(2, (stream) => {
|
|
3757
|
+
stream.size(30, 30);
|
|
3758
|
+
});
|
|
3794
3759
|
variant.addExistingStream(9); // audio
|
|
3795
3760
|
});
|
|
3796
3761
|
});
|
|
@@ -3859,15 +3824,21 @@ describe('Player', () => {
|
|
|
3859
3824
|
manifest = shaka.test.ManifestGenerator.generate((manifest) => {
|
|
3860
3825
|
manifest.addVariant(0, (variant) => {
|
|
3861
3826
|
variant.bandwidth = /** @type {?} */(undefined);
|
|
3862
|
-
variant.addVideo(0)
|
|
3827
|
+
variant.addVideo(0, (stream) => {
|
|
3828
|
+
stream.size(10, 10);
|
|
3829
|
+
});
|
|
3863
3830
|
});
|
|
3864
3831
|
manifest.addVariant(1, (variant) => {
|
|
3865
3832
|
variant.bandwidth = NaN;
|
|
3866
|
-
variant.addVideo(1)
|
|
3833
|
+
variant.addVideo(1, (stream) => {
|
|
3834
|
+
stream.size(20, 20);
|
|
3835
|
+
});
|
|
3867
3836
|
});
|
|
3868
3837
|
manifest.addVariant(2, (variant) => {
|
|
3869
3838
|
variant.bandwidth = 0;
|
|
3870
|
-
variant.addVideo(2)
|
|
3839
|
+
variant.addVideo(2, (stream) => {
|
|
3840
|
+
stream.size(30, 30);
|
|
3841
|
+
});
|
|
3871
3842
|
});
|
|
3872
3843
|
});
|
|
3873
3844
|
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
+
<MPD mediaPresentationDuration="PT0M8.000S" minBufferTime="PT1S" profiles="urn:mpeg:dash:profile:isoff-live:2011" type="static" xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:sea="urn:mpeg:dash:schema:sea:2012" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
|
3
|
+
<Period>
|
|
4
|
+
<AdaptationSet bitstreamSwitching="false" codecs="avc1.64000D" contentType="video" group="1" id="1" maxHeight="136" maxWidth="320" mimeType="video/mp4" profiles="ccff" segmentAlignment="true" startWithSAP="1">
|
|
5
|
+
<ContentProtection schemeIdUri="urn:mpeg:dash:sea:2012">
|
|
6
|
+
<sea:SegmentEncryption schemeIdUri="urn:mpeg:dash:sea:aes128-cbc:2013"/>
|
|
7
|
+
<sea:KeySystem keySystemUri="urn:mpeg:dash:sea:keysys:http:2013"/>
|
|
8
|
+
<sea:CryptoPeriod IV="0x3782A2D74219AE78CFADF642ABC5E68D" keyUriTemplate="license"/>
|
|
9
|
+
</ContentProtection>
|
|
10
|
+
<SegmentTemplate initialization="Fragments(video=i,format=mpd-time-csf)" media="Fragments(video=$Time$,format=mpd-time-csf)" timescale="10000000">
|
|
11
|
+
<SegmentTimeline>
|
|
12
|
+
<S d="20000000" r="4"/>
|
|
13
|
+
</SegmentTimeline>
|
|
14
|
+
</SegmentTemplate>
|
|
15
|
+
<Representation bandwidth="395367" codecs="avc1.64000D" height="136" id="1_V_video_8" width="320"/>
|
|
16
|
+
</AdaptationSet>
|
|
17
|
+
</Period>
|
|
18
|
+
</MPD>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
�W祽Vv՛���:$�
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!--Generated with https://github.com/google/shaka-packager version v2.4.1-c731217-release-->
|
|
3
|
+
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" minBufferTime="PT2S" type="static" mediaPresentationDuration="PT60S">
|
|
4
|
+
<Period id="0">
|
|
5
|
+
<AdaptationSet id="6" contentType="video" maxWidth="180" maxHeight="144" frameRate="12800/512" par="5:4">
|
|
6
|
+
<Representation id="12" bandwidth="162364" codecs="avc1.4d400c" mimeType="video/mp4" sar="1:1" width="180" height="144">
|
|
7
|
+
<BaseURL>video_144p_108k_h264.mp4</BaseURL>
|
|
8
|
+
<SegmentBase indexRange="860-1071" timescale="12800">
|
|
9
|
+
<Initialization range="0-859"/>
|
|
10
|
+
</SegmentBase>
|
|
11
|
+
</Representation>
|
|
12
|
+
</AdaptationSet>
|
|
13
|
+
<AdaptationSet id="8" contentType="audio" lang="en" subsegmentAlignment="true">
|
|
14
|
+
<Representation id="13" bandwidth="130803" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="48000">
|
|
15
|
+
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
|
|
16
|
+
<BaseURL>audio_en_2c_128k_aac.mp4</BaseURL>
|
|
17
|
+
<SegmentBase indexRange="786-1009" timescale="48000">
|
|
18
|
+
<Initialization range="0-785"/>
|
|
19
|
+
</SegmentBase>
|
|
20
|
+
</Representation>
|
|
21
|
+
</AdaptationSet>
|
|
22
|
+
<AdaptationSet id="10" contentType="audio" lang="es" subsegmentAlignment="true">
|
|
23
|
+
<Representation id="17" bandwidth="75654" codecs="opus" mimeType="audio/webm" audioSamplingRate="48000">
|
|
24
|
+
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
|
|
25
|
+
<BaseURL>audio_es_2c_64k_opus.webm</BaseURL>
|
|
26
|
+
<SegmentBase indexRange="326-584" timescale="48000">
|
|
27
|
+
<Initialization range="0-325"/>
|
|
28
|
+
</SegmentBase>
|
|
29
|
+
</Representation>
|
|
30
|
+
</AdaptationSet>
|
|
31
|
+
</Period>
|
|
32
|
+
</MPD>
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
#EXTM3U
|
|
2
|
+
#EXT-X-VERSION:3
|
|
3
|
+
#EXT-X-INDEPENDENT-SEGMENTS
|
|
4
|
+
#EXT-X-TARGETDURATION:4
|
|
5
|
+
#EXT-X-MEDIA-SEQUENCE:0
|
|
6
|
+
#EXTINF:3.000000,
|
|
7
|
+
s_00000.ts
|
|
8
|
+
|
|
9
|
+
#EXTINF:3.000000,
|
|
10
|
+
s_00001.ts
|
|
11
|
+
|
|
12
|
+
#EXTINF:3.000000,
|
|
13
|
+
s_00002.ts
|
|
14
|
+
|
|
15
|
+
#EXTINF:3.000000,
|
|
16
|
+
s_00003.ts
|
|
17
|
+
|
|
18
|
+
#EXTINF:3.000000,
|
|
19
|
+
s_00004.ts
|
|
20
|
+
|
|
21
|
+
#EXTINF:3.000000,
|
|
22
|
+
s_00005.ts
|
|
23
|
+
|
|
24
|
+
#EXT-X-ENDLIST
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|