shaka-player 3.3.2 → 4.0.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/.csslintrc +11 -1
- package/.github/ISSUE_TEMPLATE/bug_report.md +1 -1
- package/.github/pull_request_template.md +6 -34
- package/.github/workflows/build-and-test.yaml +129 -0
- package/.github/workflows/custom-actions/prep-for-appspot/action.yaml +56 -0
- package/.github/workflows/custom-actions/set-commit-status/action.yaml +41 -0
- package/.github/workflows/demo-version-index.yaml +37 -0
- package/.github/workflows/nightly-demo.yaml +42 -0
- package/.github/workflows/release-please.yaml +168 -0
- package/.github/workflows/safari-homedir-launcher.sh +18 -0
- package/.github/workflows/selenium-lab-tests.yaml +92 -0
- package/.github/workflows/sync-labels.yaml +33 -0
- package/.github/workflows/update-issues.yaml +29 -0
- package/.github/workflows/validate-pr-title.yaml +35 -0
- package/AUTHORS +3 -0
- package/CHANGELOG.md +1866 -1675
- package/CONTRIBUTING.md +2 -2
- package/CONTRIBUTORS +3 -0
- package/README.md +16 -13
- package/app-engine/README.md +9 -0
- package/app-engine/demo-version-index/README.md +14 -0
- package/app-engine/demo-version-index/app.yaml +28 -0
- package/app-engine/demo-version-index/generate.py +164 -0
- package/app-engine/demo-version-index/main.py +11 -0
- package/app-engine/demo-version-index/requirements.txt +5 -0
- package/app-engine/demo-version-index/templates/index.html +114 -0
- package/app-engine/shaka-player-demo/README.md +18 -0
- package/app-engine/shaka-player-demo/app.yaml +61 -0
- package/app-engine/shaka-player-demo/main.py +95 -0
- package/app-engine/shaka-player-demo/posters/10yo.png +0 -0
- package/app-engine/shaka-player-demo/posters/10yo.xcf +0 -0
- package/app-engine/shaka-player-demo/posters/1yo.jpg +0 -0
- package/app-engine/shaka-player-demo/posters/2yo.png +0 -0
- package/app-engine/shaka-player-demo/posters/2yo.xcf +0 -0
- package/app-engine/shaka-player-demo/posters/3yo.png +0 -0
- package/app-engine/shaka-player-demo/posters/3yo.xcf +0 -0
- package/app-engine/shaka-player-demo/posters/4yo.png +0 -0
- package/app-engine/shaka-player-demo/posters/4yo.xcf +0 -0
- package/app-engine/shaka-player-demo/posters/5yo.png +0 -0
- package/app-engine/shaka-player-demo/posters/5yo.xcf +0 -0
- package/app-engine/shaka-player-demo/posters/6yo.png +0 -0
- package/app-engine/shaka-player-demo/posters/6yo.xcf +0 -0
- package/app-engine/shaka-player-demo/posters/7yo.png +0 -0
- package/app-engine/shaka-player-demo/posters/7yo.xcf +0 -0
- package/app-engine/shaka-player-demo/posters/8yo.png +0 -0
- package/app-engine/shaka-player-demo/posters/8yo.xcf +0 -0
- package/app-engine/shaka-player-demo/posters/9yo.png +0 -0
- package/app-engine/shaka-player-demo/posters/9yo.xcf +0 -0
- package/app-engine/shaka-player-demo/posters/audioOnly.gif +0 -0
- package/app-engine/shaka-player-demo/posters/audioRickRoll.gif +0 -0
- package/app-engine/shaka-player-demo/posters/colorbars.gif +0 -0
- package/app-engine/shaka-player-demo/posters/fireworks.jpg +0 -0
- package/app-engine/shaka-player-demo/posters/party-hat.png +0 -0
- package/app-engine/shaka-player-demo/posters/sources.txt +46 -0
- package/app-engine/shaka-player-demo/posters/standard.png +0 -0
- package/app-engine/shaka-player-demo/posters/trek.jpg +0 -0
- package/app-engine/shaka-player-demo/posters/valentines.png +0 -0
- package/app-engine/shaka-player-demo/posters/zombie.jpg +0 -0
- package/app-engine/shaka-player-demo/posters.py +110 -0
- package/app-engine/shaka-player-demo/requirements.txt +5 -0
- package/app-engine/shaka-player-demo/time.txt +1 -0
- package/build/README.md +3 -3
- package/build/checkversion.py +1 -1
- package/build/compiler.py +1 -1
- package/build/conformance.textproto +13 -0
- package/build/docker/Dockerfile +20 -0
- package/build/docker/docker-compose.yml +10 -0
- package/build/gendeps.py +18 -15
- package/build/shaka-lab.yaml +161 -0
- package/build/shakaBuildHelpers.py +4 -29
- package/build/test.py +94 -29
- package/build/types/core +0 -1
- package/build/types/polyfill +1 -3
- package/build/wrapper.template.js +2 -2
- package/demo/TengwarTelcontar.woff2 +0 -0
- package/demo/asset_card.js +1 -2
- package/demo/cast_receiver/index.html +1 -1
- package/demo/cast_receiver/receiver_app.css +14 -14
- package/demo/common/asset.js +17 -1
- package/demo/common/assets.js +31 -0
- package/demo/common/message_ids.js +6 -3
- package/demo/config.js +10 -12
- package/demo/custom.js +39 -1
- package/demo/customWarning.txt +2 -2
- package/demo/demo.less +29 -18
- package/demo/demo_uncompiled.js +1 -13
- package/demo/demo_utils.js +0 -1
- package/demo/index.html +1 -1
- package/demo/locales/en.json +6 -3
- package/demo/locales/source.json +22 -10
- package/demo/main.js +12 -9
- package/demo/search.js +2 -1
- package/dist/controls.css +3 -3
- package/dist/controls.css.map +1 -1
- package/dist/demo.compiled.debug.js +236 -232
- package/dist/demo.compiled.debug.map +4 -4
- package/dist/demo.compiled.js +236 -232
- package/dist/demo.compiled.map +4 -4
- package/dist/demo.css +1 -1
- package/dist/demo.css.map +1 -1
- package/dist/deps.js +229 -226
- package/dist/locales.js +34 -32
- package/dist/receiver.compiled.debug.js +75 -73
- package/dist/receiver.compiled.debug.map +4 -4
- package/dist/receiver.compiled.js +75 -73
- package/dist/receiver.compiled.map +4 -4
- package/dist/shaka-player.compiled.d.ts +321 -314
- package/dist/shaka-player.compiled.debug.d.ts +321 -314
- package/dist/shaka-player.compiled.debug.externs.js +140 -129
- package/dist/shaka-player.compiled.debug.js +527 -592
- package/dist/shaka-player.compiled.debug.map +4 -4
- package/dist/shaka-player.compiled.externs.js +140 -129
- package/dist/shaka-player.compiled.js +836 -860
- package/dist/shaka-player.compiled.map +4 -4
- package/dist/shaka-player.ui.d.ts +367 -358
- package/dist/shaka-player.ui.debug.d.ts +367 -358
- package/dist/shaka-player.ui.debug.externs.js +148 -129
- package/dist/shaka-player.ui.debug.js +586 -649
- package/dist/shaka-player.ui.debug.map +4 -4
- package/dist/shaka-player.ui.externs.js +148 -129
- package/dist/shaka-player.ui.js +1008 -1028
- package/dist/shaka-player.ui.map +4 -4
- package/docs/design/REDESIGN.md +33 -33
- package/docs/design/bg-fetch.md +2 -2
- package/docs/design/codec_preferences.md +1 -1
- package/docs/design/dash-audio-channels.md +3 -3
- package/docs/design/dash-manifests.md +1 -1
- package/docs/design/gap-jumping.md +3 -3
- package/docs/design/preload.md +2 -2
- package/docs/tutorials/config.md +0 -2
- package/docs/tutorials/drm-config.md +5 -0
- package/docs/tutorials/fairplay.md +7 -22
- package/docs/tutorials/faq.md +8 -19
- package/docs/tutorials/index.json +3 -8
- package/docs/tutorials/plugins.md +4 -6
- package/docs/tutorials/selenium-grid-config.md +122 -0
- package/docs/tutorials/upgrade.md +83 -11
- package/docs/tutorials/welcome.md +10 -2
- package/externs/cmcd.js +1 -1
- package/externs/polyfill.js +15 -0
- package/externs/shaka/manifest.js +5 -1
- package/externs/shaka/net.js +12 -0
- package/externs/shaka/offline.js +5 -1
- package/externs/shaka/player.js +39 -32
- package/externs/shaka/text.js +12 -12
- package/externs/sourcebuffer.js +15 -0
- package/karma.conf.js +137 -30
- package/lib/abr/simple_abr_manager.js +12 -6
- package/lib/ads/client_side_ad.js +13 -2
- package/lib/ads/client_side_ad_manager.js +22 -4
- package/lib/cast/cast_proxy.js +3 -4
- package/lib/cast/cast_utils.js +0 -1
- package/lib/cea/cea608_data_channel.js +2 -2
- package/lib/cea/cea708_service.js +5 -4
- package/lib/cea/mp4_cea_parser.js +11 -5
- package/lib/cea/sei_processor.js +6 -3
- package/lib/dash/content_protection.js +85 -5
- package/lib/dash/dash_parser.js +10 -12
- package/lib/dash/mpd_utils.js +4 -5
- package/lib/dash/segment_list.js +1 -2
- package/lib/dash/segment_template.js +3 -3
- package/lib/hls/hls_parser.js +386 -749
- package/lib/hls/manifest_text_parser.js +5 -6
- package/lib/media/adaptation_set.js +1 -2
- package/lib/media/content_workarounds.js +2 -2
- package/lib/media/drm_engine.js +105 -55
- package/lib/media/gap_jumping_controller.js +10 -45
- package/lib/media/media_source_engine.js +90 -17
- package/lib/media/mp4_segment_index_parser.js +1 -4
- package/lib/media/playhead.js +4 -7
- package/lib/media/presentation_timeline.js +19 -10
- package/lib/media/segment_index.js +13 -46
- package/lib/media/segment_reference.js +47 -1
- package/lib/media/streaming_engine.js +35 -17
- package/lib/media/time_ranges_utils.js +5 -12
- package/lib/media/video_wrapper.js +1 -1
- package/lib/net/networking_engine.js +4 -1
- 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 +104 -136
- package/lib/player.js +50 -216
- package/lib/polyfill/all.js +2 -3
- package/lib/polyfill/encryption_scheme.js +1 -1
- package/lib/polyfill/media_capabilities.js +15 -9
- package/lib/polyfill/mediasource.js +0 -28
- package/lib/polyfill/patchedmediakeys_nop.js +2 -0
- package/lib/polyfill/patchedmediakeys_webkit.js +2 -0
- package/lib/polyfill/symbol.js +46 -0
- package/lib/text/cue.js +1 -7
- package/lib/text/lrc_text_parser.js +8 -0
- package/lib/text/mp4_ttml_parser.js +8 -0
- package/lib/text/mp4_vtt_parser.js +8 -0
- package/lib/text/sbv_text_parser.js +8 -0
- package/lib/text/simple_text_displayer.js +3 -8
- package/lib/text/srt_text_parser.js +8 -0
- package/lib/text/ssa_text_parser.js +8 -0
- package/lib/text/text_engine.js +19 -3
- package/lib/text/ttml_text_parser.js +16 -5
- package/lib/text/ui_text_displayer.js +2 -8
- package/lib/text/vtt_text_parser.js +24 -2
- package/lib/text/web_vtt_generator.js +1 -7
- package/lib/util/buffer_utils.js +1 -3
- package/lib/util/ebml_parser.js +3 -3
- package/lib/util/error.js +10 -14
- package/lib/util/fairplay_utils.js +109 -0
- package/lib/util/functional.js +0 -42
- package/lib/util/iterables.js +0 -46
- package/lib/util/mime_utils.js +2 -0
- package/lib/util/mp4_box_parsers.js +1 -4
- package/lib/util/mp4_parser.js +5 -7
- package/lib/util/periods.js +10 -11
- package/lib/util/platform.js +48 -3
- package/lib/util/player_configuration.js +12 -6
- package/lib/util/pssh.js +24 -8
- package/lib/util/stream_utils.js +96 -25
- package/lib/util/string_utils.js +3 -5
- package/lib/util/uint8array_utils.js +3 -21
- package/lib/util/xml_utils.js +16 -8
- package/package.json +61 -36
- package/roadmap.md +27 -27
- package/shaka-player.uncompiled.js +1 -3
- package/test/abr/simple_abr_manager_unit.js +3 -8
- package/test/ads/ad_manager_unit.js +0 -6
- package/test/cast/cast_proxy_unit.js +0 -8
- package/test/cast/cast_receiver_integration.js +1 -18
- package/test/cast/cast_receiver_unit.js +1 -9
- package/test/cast/cast_sender_unit.js +0 -6
- package/test/cast/cast_utils_unit.js +1 -13
- package/test/cea/cea608_memory_unit.js +0 -5
- package/test/cea/cea708_service_unit.js +0 -7
- package/test/cea/cea708_window_unit.js +0 -5
- package/test/cea/cea_decoder_unit.js +0 -6
- package/test/cea/dtvcc_packet_builder_unit.js +0 -3
- package/test/cea/dtvcc_packet_unit.js +0 -5
- package/test/cea/mp4_cea_parser_unit.js +0 -4
- package/test/dash/dash_parser_content_protection_unit.js +45 -10
- package/test/dash/dash_parser_live_unit.js +2 -15
- package/test/dash/dash_parser_manifest_unit.js +2 -40
- package/test/dash/dash_parser_segment_base_unit.js +1 -8
- package/test/dash/dash_parser_segment_list_unit.js +1 -7
- package/test/dash/dash_parser_segment_template_unit.js +3 -13
- package/test/dash/mpd_utils_unit.js +3 -11
- package/test/demo/demo_unit.js +2 -6
- package/test/deprecate/enforcer_unit.js +0 -4
- package/test/deprecate/version_unit.js +0 -2
- package/test/hls/hls_live_unit.js +101 -234
- package/test/hls/hls_parser_unit.js +517 -447
- package/test/hls/manifest_text_parser_unit.js +0 -10
- package/test/media/adaptation_set_criteria_unit.js +3 -7
- package/test/media/adaptation_set_unit.js +0 -2
- package/test/media/buffering_observer_unit.js +1 -4
- package/test/media/closed_caption_parser_unit.js +0 -3
- package/test/media/drm_engine_integration.js +2 -15
- package/test/media/drm_engine_unit.js +90 -144
- package/test/media/manifest_parser_unit.js +0 -4
- package/test/media/media_source_engine_integration.js +26 -10
- package/test/media/media_source_engine_unit.js +8 -20
- package/test/media/mp4_segment_index_parser_unit.js +0 -4
- package/test/media/play_rate_controller_unit.js +0 -4
- package/test/media/playhead_unit.js +35 -207
- package/test/media/presentation_timeline_unit.js +4 -7
- package/test/media/quality_observer_unit.js +0 -4
- package/test/media/region_observer_unit.js +1 -6
- package/test/media/region_timeline_unit.js +0 -3
- package/test/media/segment_index_unit.js +15 -31
- package/test/media/segment_reference_unit.js +0 -3
- package/test/media/stall_detector_unit.js +0 -5
- package/test/media/streaming_engine_integration.js +13 -75
- package/test/media/streaming_engine_unit.js +14 -37
- package/test/media/time_ranges_utils_unit.js +0 -7
- package/test/media/transmuxer_integration.js +0 -6
- package/test/media/webm_segment_index_parser_unit.js +0 -4
- package/test/net/data_uri_plugin_unit.js +0 -7
- package/test/net/http_plugin_unit.js +0 -9
- package/test/net/networking_engine_unit.js +0 -11
- package/test/offline/download_progress_estimator_unit.js +0 -2
- package/test/offline/indexeddb_storage_unit.js +0 -6
- package/test/offline/manifest_convert_unit.js +34 -12
- package/test/offline/offline_integration.js +1 -10
- package/test/offline/offline_manifest_parser_unit.js +1 -6
- package/test/offline/offline_scheme_unit.js +0 -8
- package/test/offline/offline_uri_unit.js +0 -2
- package/test/offline/storage_compatibility_unit.js +1 -14
- package/test/offline/storage_integration.js +6 -31
- package/test/player_external.js +1 -15
- package/test/player_integration.js +38 -28
- package/test/player_load_graph_integration.js +1 -6
- package/test/player_src_equals_external.js +3 -9
- package/test/player_src_equals_integration.js +0 -7
- package/test/player_unit.js +78 -37
- package/test/routing/walker_unit.js +0 -8
- package/test/test/assets/large_file.mpd +1 -1
- package/test/test/boot.js +75 -22
- package/test/test/externs/jasmine.js +2 -2
- package/test/test/externs/karma.js +4 -0
- package/test/test/namespace.js +10 -0
- package/test/test/util/canned_idb.js +0 -8
- package/test/test/util/cea_utils.js +0 -6
- package/test/test/util/dash_parser_util.js +0 -13
- package/test/test/util/fake_ad.js +0 -3
- package/test/test/util/fake_ad_manager.js +0 -9
- package/test/test/util/fake_demo_main.js +0 -5
- package/test/test/util/fake_drm_engine.js +0 -6
- package/test/test/util/fake_media_source_engine.js +11 -11
- package/test/test/util/fake_networking_engine.js +0 -5
- package/test/test/util/fake_text_displayer.js +0 -5
- package/test/test/util/indexeddb_utils.js +1 -10
- package/test/test/util/jasmine_fetch.js +0 -1
- package/test/test/util/loader.js +0 -18
- package/test/test/util/manifest_generator.js +12 -15
- package/test/test/util/manifest_parser_util.js +4 -7
- package/test/test/util/offline_utils.js +1 -5
- package/test/test/util/simple_fakes.js +9 -26
- package/test/test/util/stream_generator.js +0 -14
- package/test/test/util/streaming_engine_util.js +1 -15
- package/test/test/util/test_scheme.js +25 -20
- package/test/test/util/ttml_utils.js +0 -2
- package/test/test/util/ui_utils.js +0 -9
- package/test/test/util/util.js +9 -23
- package/test/test/util/waiter.js +84 -43
- package/test/text/cue_integration.js +2 -6
- package/test/text/lrc_text_parser_unit.js +6 -11
- package/test/text/mp4_ttml_parser_unit.js +6 -10
- package/test/text/mp4_vtt_parser_unit.js +7 -12
- package/test/text/sbv_text_parser_unit.js +5 -10
- package/test/text/simple_text_displayer_unit.js +1 -8
- package/test/text/srt_text_parser_unit.js +5 -10
- package/test/text/ssa_text_parser_unit.js +17 -34
- package/test/text/text_engine_unit.js +47 -12
- package/test/text/text_track_integration.js +0 -2
- package/test/text/ttml_text_parser_unit.js +79 -88
- package/test/text/ui_text_displayer_unit.js +44 -41
- package/test/text/vtt_text_parser_unit.js +55 -66
- package/test/text/web_vtt_generator_unit.js +0 -3
- package/test/ui/ad_ui_unit.js +0 -11
- package/test/ui/localization_unit.js +0 -3
- package/test/ui/text_displayer_layout_unit.js +1 -12
- package/test/ui/ui_customization_unit.js +0 -6
- package/test/ui/ui_integration.js +0 -32
- package/test/ui/ui_unit.js +28 -17
- package/test/util/abortable_operation_unit.js +4 -9
- package/test/util/array_utils_unit.js +0 -2
- package/test/util/buffer_utils_unit.js +0 -2
- package/test/util/cmcd_manager_unit.js +3 -3
- package/test/util/data_view_reader_unit.js +0 -4
- package/test/util/ebml_parser_unit.js +0 -4
- package/test/util/event_manager_unit.js +0 -3
- package/test/util/fake_event_target_unit.js +0 -5
- package/test/util/iterables_unit.js +0 -64
- package/test/util/language_utils_unit.js +0 -3
- package/test/util/manifest_parser_utils_unit.js +0 -2
- package/test/util/mp4_box_parsers_unit.js +0 -5
- package/test/util/mp4_parser_unit.js +0 -4
- package/test/util/multi_map_unit.js +0 -3
- package/test/util/object_utils_unit.js +0 -2
- package/test/util/periods_unit.js +14 -7
- package/test/util/pssh_unit.js +0 -5
- package/test/util/state_history_unit.js +0 -2
- package/test/util/stream_utils_unit.js +26 -15
- package/test/util/string_utils_unit.js +0 -6
- package/test/util/text_parser_unit.js +0 -2
- package/test/util/xml_utils_unit.js +0 -4
- package/ui/controls.js +65 -40
- package/ui/fullscreen_button.js +26 -6
- package/ui/less/ad_controls.less +6 -6
- package/ui/less/buttons.less +6 -6
- package/ui/less/containers.less +10 -12
- package/ui/less/overflow_menu.less +4 -4
- package/ui/less/range_elements.less +7 -2
- package/ui/less/tooltip.less +4 -4
- package/ui/locales/en.json +1 -0
- package/ui/locales/sjn-translations.yaml +257 -0
- package/ui/locales/sjn.json +42 -0
- package/ui/locales/source.json +5 -0
- package/ui/resolution_selection.js +31 -33
- package/ui/seek_bar.js +2 -1
- package/ui/ui.js +0 -17
- package/.github/workflows/build_and_test.yaml +0 -73
- package/.github/workflows/release.yaml +0 -53
- package/docs/tutorials/upgrade-v2-5.md +0 -441
- package/docs/tutorials/upgrade-v3.md +0 -38
- package/externs/svgelement.js +0 -18
- package/externs/webcrypto.js +0 -18
- package/lib/polyfill/mathround.js +0 -49
- package/lib/polyfill/patchedmediakeys_apple.js +0 -744
- package/lib/polyfill/patchedmediakeys_ms.js +0 -698
- package/lib/util/mutex.js +0 -52
- package/test/util/functional_unit.js +0 -82
package/docs/design/REDESIGN.md
CHANGED
|
@@ -28,11 +28,11 @@ often requiring [multiple][] [fixes][] to get certain dependencies removed.
|
|
|
28
28
|
This means users all end up using the same monolithic player library.
|
|
29
29
|
Features in Shaka 2 should be modular and easy to exclude from the build.
|
|
30
30
|
|
|
31
|
-
[difficult]: https://github.com/
|
|
32
|
-
[to exclude]: https://github.com/
|
|
33
|
-
[from the build]: https://github.com/
|
|
34
|
-
[multiple]: https://github.com/
|
|
35
|
-
[fixes]: https://github.com/
|
|
31
|
+
[difficult]: https://github.com/shaka-project/shaka-player/commit/671611ef3722169b9f6b51ab44bdd6b4098d959e
|
|
32
|
+
[to exclude]: https://github.com/shaka-project/shaka-player/commit/603fae969550c69ea38a61249da905857c67b9f1
|
|
33
|
+
[from the build]: https://github.com/shaka-project/shaka-player/commit/f248647685b92ba928bbfd06d45d2b99023d60c2
|
|
34
|
+
[multiple]: https://github.com/shaka-project/shaka-player/commit/39be45d3d55cdcef20a6a529a87246b0ea11cb33
|
|
35
|
+
[fixes]: https://github.com/shaka-project/shaka-player/commit/6fe239150a8939728876e93e1a4269032530d9f1
|
|
36
36
|
|
|
37
37
|
Some operations, in particular [starting playback and filling the buffer][],
|
|
38
38
|
take longer than they need to. Startup and buffering in Shaka 2 should be as
|
|
@@ -46,54 +46,54 @@ us from updating MediaSource duration][] and makes it [difficult to set initial
|
|
|
46
46
|
playback time][] on browsers other than Chrome. Shaka 2 should have a simpler
|
|
47
47
|
streaming core that works better across browsers.
|
|
48
48
|
|
|
49
|
-
[StreamVideoSource]: https://github.com/
|
|
50
|
-
[Stream]: https://github.com/
|
|
51
|
-
[SourceBufferManager]: https://github.com/
|
|
52
|
-
[prevents us from updating MediaSource duration]: https://github.com/
|
|
53
|
-
[difficult to set initial playback time]: https://github.com/
|
|
49
|
+
[StreamVideoSource]: https://github.com/shaka-project/shaka-player/blob/v1.5.x/lib/player/stream_video_source.js
|
|
50
|
+
[Stream]: https://github.com/shaka-project/shaka-player/blob/v1.5.x/lib/media/stream.js
|
|
51
|
+
[SourceBufferManager]: https://github.com/shaka-project/shaka-player/blob/v1.5.x/lib/media/source_buffer_manager.js
|
|
52
|
+
[prevents us from updating MediaSource duration]: https://github.com/shaka-project/shaka-player/blob/v1.5.1/lib/player/stream_video_source.js#L1807
|
|
53
|
+
[difficult to set initial playback time]: https://github.com/shaka-project/shaka-player/issues/101
|
|
54
54
|
|
|
55
55
|
[Buffering state][] in Shaka 1 involves coordination between several layers
|
|
56
56
|
(from [Player][] to [Stream][]) and has been [tough][] [to][] [get][]
|
|
57
57
|
[right][]. Buffering state in Shaka 2 should be simple and consistent.
|
|
58
58
|
|
|
59
|
-
[Buffering state]: https://github.com/
|
|
60
|
-
[Player]: https://github.com/
|
|
61
|
-
[Stream]: https://github.com/
|
|
62
|
-
[tough]: https://github.com/
|
|
63
|
-
[to]: https://github.com/
|
|
64
|
-
[get]: https://github.com/
|
|
65
|
-
[right]: https://github.com/
|
|
59
|
+
[Buffering state]: https://github.com/shaka-project/shaka-player/blob/v1.5.1/lib/player/player.js#L994
|
|
60
|
+
[Player]: https://github.com/shaka-project/shaka-player/blob/v1.5.x/lib/player/player.js
|
|
61
|
+
[Stream]: https://github.com/shaka-project/shaka-player/blob/v1.5.x/lib/media/stream.js
|
|
62
|
+
[tough]: https://github.com/shaka-project/shaka-player/issues/44
|
|
63
|
+
[to]: https://github.com/shaka-project/shaka-player/issues/63
|
|
64
|
+
[get]: https://github.com/shaka-project/shaka-player/issues/127
|
|
65
|
+
[right]: https://github.com/shaka-project/shaka-player/issues/221#issuecomment-152781243
|
|
66
66
|
|
|
67
67
|
Shaka 1 relies on the browser to implement support for text types, and is
|
|
68
68
|
therefore limited to non-segmented WebVTT. Shaka 2 should also support
|
|
69
69
|
[segmented text types][] and [types not natively supported by the browser][].
|
|
70
70
|
|
|
71
|
-
[segmented text types]: https://github.com/
|
|
72
|
-
[types not natively supported by the browser]: https://github.com/
|
|
71
|
+
[segmented text types]: https://github.com/shaka-project/shaka-player/issues/150
|
|
72
|
+
[types not natively supported by the browser]: https://github.com/shaka-project/shaka-player/issues/111
|
|
73
73
|
|
|
74
74
|
Bandwidth estimation in Shaka 1 relies on the assumption that segments are not
|
|
75
75
|
cached locally. Use of [cache-busting techniques][] to enforce this makes
|
|
76
76
|
Shaka very [cache][]-[unfriendly][]. Shaka 2 should be cache-friendly.
|
|
77
77
|
|
|
78
|
-
[cache-busting techniques]: https://github.com/
|
|
79
|
-
[cache]: https://github.com/
|
|
80
|
-
[unfriendly]: https://github.com/
|
|
78
|
+
[cache-busting techniques]: https://github.com/shaka-project/shaka-player/blob/v1.5.1/lib/util/ajax_request.js#L241
|
|
79
|
+
[cache]: https://github.com/shaka-project/shaka-player/issues/76
|
|
80
|
+
[unfriendly]: https://github.com/shaka-project/shaka-player/issues/191
|
|
81
81
|
|
|
82
82
|
Shaka 1 [uses HTTP headers to synchronize the user's clock][] with the server.
|
|
83
83
|
This is [error-prone for some CDNs][] and also raises [CORS issues][], so Shaka
|
|
84
84
|
2 should avoid using HTTP headers.
|
|
85
85
|
|
|
86
|
-
[uses HTTP headers to synchronize the user's clock]: https://github.com/
|
|
87
|
-
[error-prone for some CDNs]: https://github.com/
|
|
88
|
-
[CORS issues]: https://github.com/
|
|
86
|
+
[uses HTTP headers to synchronize the user's clock]: https://github.com/shaka-project/shaka-player/blob/v1.5.1/lib/util/ajax_request.js#L448
|
|
87
|
+
[error-prone for some CDNs]: https://github.com/shaka-project/shaka-player/issues/205
|
|
88
|
+
[CORS issues]: https://github.com/shaka-project/shaka-player/issues/159
|
|
89
89
|
|
|
90
90
|
[HttpVideoSource][] does not build on MSE and classes like [EmeManager][] have
|
|
91
91
|
special cases to support it. Since it was originally created for debugging
|
|
92
92
|
purposes, Shaka 2 should drop HttpVideoSource and only support MSE-based
|
|
93
93
|
playback.
|
|
94
94
|
|
|
95
|
-
[HttpVideoSource]: https://github.com/
|
|
96
|
-
[EmeManager]: https://github.com/
|
|
95
|
+
[HttpVideoSource]: https://github.com/shaka-project/shaka-player/blob/v1.5.x/lib/player/http_video_source.js
|
|
96
|
+
[EmeManager]: https://github.com/shaka-project/shaka-player/blob/v1.5.x/lib/media/eme_manager.js
|
|
97
97
|
|
|
98
98
|
Integration tests using externally-hosted resources [can be flaky][],
|
|
99
99
|
especially when run outside of Google's network. Shaka 2 should avoid tests
|
|
@@ -106,34 +106,34 @@ and application developers sometimes [have to use error message strings][]
|
|
|
106
106
|
hard-coded into the library. Shaka 2 should have a consistent error format
|
|
107
107
|
that is easy to read.
|
|
108
108
|
|
|
109
|
-
[have to use error message strings]: https://github.com/
|
|
109
|
+
[have to use error message strings]: https://github.com/shaka-project/shaka-player/issues/201
|
|
110
110
|
|
|
111
111
|
Networking abstractions in Shaka 1 are built inside of AjaxRequest, which
|
|
112
112
|
requires non-HTTP requests to [pretend to come from XmlHttpRequest][]. The
|
|
113
113
|
networking abstraction in Shaka 2 should be simpler and should not treat
|
|
114
114
|
XHR as the basis for all networking.
|
|
115
115
|
|
|
116
|
-
[pretend to come from XmlHttpRequest]: https://github.com/
|
|
116
|
+
[pretend to come from XmlHttpRequest]: https://github.com/shaka-project/shaka-player/blob/v1.5.1/lib/util/ajax_request.js#L305
|
|
117
117
|
|
|
118
118
|
A developer who wishes to use a custom network protocol or a custom manifest
|
|
119
119
|
format in Shaka 1 will have to modify the library to do so. Shaka 2 should
|
|
120
120
|
[support external plugins for networking][] and manifest support.
|
|
121
121
|
|
|
122
|
-
[support external plugins for networking]: https://github.com/
|
|
122
|
+
[support external plugins for networking]: https://github.com/shaka-project/shaka-player/issues/198
|
|
123
123
|
|
|
124
124
|
The functionality that can be injected into Shaka 1 ([IBandwidthEstimator][],
|
|
125
125
|
[IAbrManager][]) is based on implementing class interfaces, which can be complex
|
|
126
126
|
for those unfamiliar with the Closure compiler. Plugins and extensions to Shaka
|
|
127
127
|
2 should be as simple as possible.
|
|
128
128
|
|
|
129
|
-
[IBandwidthEstimator]: https://github.com/
|
|
130
|
-
[IAbrManager]: https://github.com/
|
|
129
|
+
[IBandwidthEstimator]: https://github.com/shaka-project/shaka-player/blob/v1.5.1/lib/util/i_bandwidth_estimator.js
|
|
130
|
+
[IAbrManager]: https://github.com/shaka-project/shaka-player/blob/v1.5.1/lib/media/i_abr_manager.js
|
|
131
131
|
|
|
132
132
|
[Static members][] in Shaka 1 make it impossible in some cases to host multiple
|
|
133
133
|
Player instances with different settings. Player instances should be completely
|
|
134
134
|
independent in Shaka 1.
|
|
135
135
|
|
|
136
|
-
[Static members]: https://github.com/
|
|
136
|
+
[Static members]: https://github.com/shaka-project/shaka-player/issues/126
|
|
137
137
|
|
|
138
138
|
|
|
139
139
|
## Shaka v2 Design Principles
|
package/docs/design/bg-fetch.md
CHANGED
|
@@ -12,7 +12,7 @@ At the time it was added to the backlog, the feature was not quite ready for
|
|
|
12
12
|
use. Since then, it has matured, and now is something we could feasibly use, but
|
|
13
13
|
it has still been a low-priority feature.
|
|
14
14
|
|
|
15
|
-
[since 2017]: https://github.com/
|
|
15
|
+
[since 2017]: https://github.com/shaka-project/shaka-player/issues/879
|
|
16
16
|
|
|
17
17
|
## Design Concept
|
|
18
18
|
|
|
@@ -131,4 +131,4 @@ unrelated service worker for our own.
|
|
|
131
131
|
1. This message can also be used to make sure the versions are the same.
|
|
132
132
|
|
|
133
133
|
[the documentation]: https://developers.google.com/web/updates/2018/12/background-fetch#starting_a_background_fetch
|
|
134
|
-
[a given scope]: https://developers.google.com/web/fundamentals/primers/service-workers#register_a_service_worker
|
|
134
|
+
[a given scope]: https://developers.google.com/web/fundamentals/primers/service-workers#register_a_service_worker
|
|
@@ -97,7 +97,7 @@ A platform may support multiple DRM key systems, (for example, Widevine and
|
|
|
97
97
|
PlayReady). The `drm.preferredKeySystems` configuration allows the application
|
|
98
98
|
to specify which key systems it wants to choose.
|
|
99
99
|
|
|
100
|
-
[Github issue](https://github.com/
|
|
100
|
+
[Github issue](https://github.com/shaka-project/shaka-player/issues/3002)
|
|
101
101
|
|
|
102
102
|
Previously, Shaka Player chose a DRM key system based on:
|
|
103
103
|
1. Only use the key systems supported by the platform.
|
|
@@ -4,7 +4,7 @@ Shaka Player parses channel count information from HLS manifests, but not yet
|
|
|
4
4
|
from DASH manifests. We have had an [open request][dash_channels_request] to
|
|
5
5
|
do this for a year.
|
|
6
6
|
|
|
7
|
-
[dash_channels_request]: https://github.com/
|
|
7
|
+
[dash_channels_request]: https://github.com/shaka-project/shaka-player/issues/424
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
## The DASH Spec
|
|
@@ -79,7 +79,7 @@ Neither 23003-3 nor the DASH spec corrigenda were freely available at the time
|
|
|
79
79
|
of this writing, so we have not confirmed these assumptions.
|
|
80
80
|
|
|
81
81
|
[cast_labs_23003]: https://github.com/castlabs/dashencrypt/blob/1d604896/dash.fragmencrypter/src/main/java/com/castlabs/dash/helpers/DashHelper.java#L193
|
|
82
|
-
[shaka_packager_23003]: https://github.com/
|
|
82
|
+
[shaka_packager_23003]: https://github.com/shaka-project/shaka-packager/blob/4ba5bec6/packager/mpd/base/xml/xml_node.cc#L378
|
|
83
83
|
|
|
84
84
|
|
|
85
85
|
### tag:dolby.com,2014:dash:audio\_channel\_configuration:2011
|
|
@@ -101,7 +101,7 @@ Packager][shaka_packager_ec3_enum] supports this interpretation. This has not
|
|
|
101
101
|
been confirmed from primary sources.
|
|
102
102
|
|
|
103
103
|
[dash_if_audio_config]: http://dashif.org/identifiers/audio-source-data/
|
|
104
|
-
[shaka_packager_ec3_enum]: https://github.com/
|
|
104
|
+
[shaka_packager_ec3_enum]: https://github.com/shaka-project/shaka-packager/blob/47363dd0/packager/media/codecs/ec3_audio_util.cc#L34
|
|
105
105
|
|
|
106
106
|
|
|
107
107
|
### urn:dts:dash:audio\_channel\_configuration:2012
|
|
@@ -244,5 +244,5 @@ segments. You can follow progress in [#999][]. But note that DASH requires
|
|
|
244
244
|
accurate clock times, so even after that feature is added, your manifest may
|
|
245
245
|
not play in other DASH players.
|
|
246
246
|
|
|
247
|
-
[#999]: https://github.com/
|
|
247
|
+
[#999]: https://github.com/shaka-project/shaka-player/issues/999
|
|
248
248
|
|
|
@@ -21,13 +21,13 @@ buffered ranges.
|
|
|
21
21
|
|
|
22
22
|
There have been a number of bugs filed asking for this feature.
|
|
23
23
|
|
|
24
|
-
#### [#180](https://github.com/
|
|
24
|
+
#### [#180](https://github.com/shaka-project/shaka-player/issues/180)
|
|
25
25
|
One of the first bugs asking for gap jumping. The author talks about how live
|
|
26
26
|
streams can commonly lose source content (e.g. from network outages or weather).
|
|
27
27
|
This can cause the packagers to introduce gaps in either the media segments or
|
|
28
28
|
the manifest.
|
|
29
29
|
|
|
30
|
-
#### [#555](https://github.com/
|
|
30
|
+
#### [#555](https://github.com/shaka-project/shaka-player/issues/555)
|
|
31
31
|
This one is also asking about live streams and outages. The author discusses
|
|
32
32
|
several options for dealing with interruptions in the live streams. The
|
|
33
33
|
suggestions were:
|
|
@@ -41,7 +41,7 @@ can’t tell if a segment will never be available or is just not created yet.
|
|
|
41
41
|
Also that dummy content is usually generated by the server; however, the author
|
|
42
42
|
notes that this may not be feasible.
|
|
43
43
|
|
|
44
|
-
#### [#661](https://github.com/
|
|
44
|
+
#### [#661](https://github.com/shaka-project/shaka-player/issues/661)
|
|
45
45
|
This content with small gaps in the media that result in playback stalling.
|
|
46
46
|
Chrome and Firefox will actually play through the gap, but we don’t allow it
|
|
47
47
|
since it wouldn’t work on Safari.
|
package/docs/design/preload.md
CHANGED
|
@@ -15,7 +15,7 @@ This allows an application using Shaka Player to:
|
|
|
15
15
|
the user is making a decision on which video to play.
|
|
16
16
|
- Start to play the selected video almost immediately.
|
|
17
17
|
|
|
18
|
-
[Github issue](https://github.com/
|
|
18
|
+
[Github issue](https://github.com/shaka-project/shaka-player/issues/880)
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
## Background & Context
|
|
@@ -296,4 +296,4 @@ When preloading, the MediaSourceEngine appends the data to the SourceBuffer.
|
|
|
296
296
|
to the MediaSource.
|
|
297
297
|
3. For a live stream video, StreamingEngine can keep fetching the latest piece
|
|
298
298
|
of the content. The MediaSourceEngine stores the latest data, and abandons
|
|
299
|
-
the older data.
|
|
299
|
+
the older data.
|
package/docs/tutorials/config.md
CHANGED
|
@@ -73,10 +73,8 @@ player.getConfiguration();
|
|
|
73
73
|
failureCallback: Function
|
|
74
74
|
ignoreTextStreamFailures: false
|
|
75
75
|
alwaysStreamText: false
|
|
76
|
-
jumpLargeGaps: false
|
|
77
76
|
rebufferingGoal: 2
|
|
78
77
|
retryParameters: Object
|
|
79
|
-
smallGapLimit: 0.5
|
|
80
78
|
startAtSegmentBoundary: false
|
|
81
79
|
safeSeekOffset: 5
|
|
82
80
|
textDisplayFactory: Function
|
|
@@ -184,6 +184,11 @@ Microsoft Documentation: https://docs.microsoft.com/en-us/playready/overview/sec
|
|
|
184
184
|
|
|
185
185
|
NB: Audio Hardware DRM is not supported (PlayReady limitation)
|
|
186
186
|
|
|
187
|
+
##### FairPlay
|
|
188
|
+
|
|
189
|
+
Based on [Apple's Documentation](https://developer.apple.com/streaming/fps/),
|
|
190
|
+
you should provide an empty string as robustness
|
|
191
|
+
|
|
187
192
|
##### Other key-systems
|
|
188
193
|
|
|
189
194
|
Values for other key systems are not known to us at this time.
|
|
@@ -1,40 +1,25 @@
|
|
|
1
1
|
# FairPlay Support
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
We support FairPlay with EME on compatible environments or native `src=`.
|
|
4
4
|
Adding FairPlay support involves a bit more work than other key systems.
|
|
5
5
|
|
|
6
|
-
|
|
7
6
|
## Server certificate
|
|
8
7
|
|
|
9
|
-
All FairPlay content requires setting a server certificate.
|
|
10
|
-
|
|
8
|
+
All FairPlay content requires setting a server certificate. You can either
|
|
9
|
+
provide it directly or set a serverCertificateUri for Shaka to fetch it for
|
|
10
|
+
you.
|
|
11
11
|
|
|
12
12
|
```js
|
|
13
13
|
const req = await fetch('https://example.com/cert.der');
|
|
14
14
|
const cert = await req.arrayBuffer();
|
|
15
15
|
|
|
16
|
-
player.configure('drm.advanced.com\\.apple\\.fps\\.
|
|
16
|
+
player.configure('drm.advanced.com\\.apple\\.fps\\.serverCertificate',
|
|
17
17
|
new Uint8Array(cert));
|
|
18
18
|
```
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
## Content ID
|
|
22
|
-
|
|
23
|
-
Some FairPlay content use custom signaling for the content ID. The content ID
|
|
24
|
-
is used by the browser to generate the license request. If you don't use the
|
|
25
|
-
default content ID derivation, you need to specify a custom init data transform:
|
|
26
|
-
|
|
27
20
|
```js
|
|
28
|
-
player.configure('drm.
|
|
29
|
-
|
|
30
|
-
return initData;
|
|
31
|
-
|
|
32
|
-
// 'initData' is a buffer containing an 'skd://' URL as a UTF-8 string.
|
|
33
|
-
const skdUri = shaka.util.StringUtils.fromBytesAutoDetect(initData);
|
|
34
|
-
const contentId = getMyContentId(skdUri);
|
|
35
|
-
const cert = player.drmInfo().serverCertificate;
|
|
36
|
-
return shaka.util.FairPlayUtils.initDataTransform(initData, contentId, cert);
|
|
37
|
-
});
|
|
21
|
+
player.configure('drm.advanced.com\\.apple\\.fps\\.serverCertificateUri',
|
|
22
|
+
'https://example.com/cert.der');
|
|
38
23
|
```
|
|
39
24
|
|
|
40
25
|
## License wrapping
|
package/docs/tutorials/faq.md
CHANGED
|
@@ -43,17 +43,6 @@ headers in the response. Additionally, with some manifests, we will send a
|
|
|
43
43
|
This can also happen with mixed-content restrictions. If the site is using
|
|
44
44
|
`https:`, then your manifest and segments must also.
|
|
45
45
|
|
|
46
|
-
*Sending `Range` header at the start of HLS playback can be disabled using this config:*
|
|
47
|
-
```
|
|
48
|
-
player.configure({
|
|
49
|
-
manifest: {
|
|
50
|
-
hls: {
|
|
51
|
-
useFullSegmentsForStartTime: true,
|
|
52
|
-
},
|
|
53
|
-
},
|
|
54
|
-
})
|
|
55
|
-
```
|
|
56
|
-
|
|
57
46
|
<hr>
|
|
58
47
|
|
|
59
48
|
**Q:** I am getting `REQUESTED_KEY_SYSTEM_CONFIG_UNAVAILABLE` or error code
|
|
@@ -274,18 +263,18 @@ so don't declare it using a ref(), and if you put your player instance into a
|
|
|
274
263
|
data() object, you can prefix the property name with "$" or "_" to make Vue not
|
|
275
264
|
proxy them.
|
|
276
265
|
|
|
277
|
-
[386]: https://github.com/
|
|
278
|
-
[489]: https://github.com/
|
|
279
|
-
[743]: https://github.com/
|
|
280
|
-
[887]: https://github.com/
|
|
281
|
-
[999]: https://github.com/
|
|
282
|
-
[1667]: https://github.com/
|
|
266
|
+
[386]: https://github.com/shaka-project/shaka-player/issues/386#issuecomment-227898001
|
|
267
|
+
[489]: https://github.com/shaka-project/shaka-player/issues/489#issuecomment-240466224
|
|
268
|
+
[743]: https://github.com/shaka-project/shaka-player/issues/743
|
|
269
|
+
[887]: https://github.com/shaka-project/shaka-player/issues/887
|
|
270
|
+
[999]: https://github.com/shaka-project/shaka-player/issues/999
|
|
271
|
+
[1667]: https://github.com/shaka-project/shaka-player/issues/1667
|
|
283
272
|
[BigInteger.js]: https://github.com/peterolson/BigInteger.js
|
|
284
273
|
[CORS]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS
|
|
285
|
-
[Shaka Player Embedded]: https://github.com/
|
|
274
|
+
[Shaka Player Embedded]: https://github.com/shaka-project/shaka-player-embedded
|
|
286
275
|
[auth]: https://shaka-player-demo.appspot.com/docs/api/tutorial-license-server-auth.html
|
|
287
276
|
[buffering]: https://shaka-player-demo.appspot.com/docs/api/tutorial-network-and-buffering-config.html
|
|
288
277
|
[drm_tutorial]: https://shaka-player-demo.appspot.com/docs/api/tutorial-drm-config.html
|
|
289
278
|
[eme_https]: https://sites.google.com/a/chromium.org/dev/Home/chromium-security/deprecating-powerful-features-on-insecure-origins
|
|
290
279
|
[wrapping]: https://shaka-player-demo.appspot.com/docs/api/tutorial-license-wrapping.html
|
|
291
|
-
[including mux.js]: https://github.com/
|
|
280
|
+
[including mux.js]: https://github.com/shaka-project/shaka-player/blob/967f3399/demo/index.html#L39
|
|
@@ -19,13 +19,8 @@
|
|
|
19
19
|
{ "fairplay": { "title": "FairPlay support" } },
|
|
20
20
|
{ "application-level-redirects": { "title": "Application-Level Redirects" } },
|
|
21
21
|
{ "blob-url": { "title": "Blob URL" } },
|
|
22
|
+
{ "selenium-grid-config": { "title": "Selenium Grid Config" } },
|
|
22
23
|
{ "faq": { "title": "Frequently Asked Questions" } },
|
|
23
|
-
{ "upgrade": {
|
|
24
|
-
|
|
25
|
-
"children": {
|
|
26
|
-
"upgrade-v2-5": { "title": "Upgrade Guide, v2.5 => v3" },
|
|
27
|
-
"upgrade-v3": { "title": "Upgrade Guide, v3" },
|
|
28
|
-
"upgrade-manifest": { "title": "Shaka Player Manifest Upgrade Guide" }
|
|
29
|
-
}
|
|
30
|
-
} }
|
|
24
|
+
{ "upgrade": { "title": "Upgrade Guide" } },
|
|
25
|
+
{ "upgrade-manifest": { "title": "ManifestParser Upgrade Guide" } }
|
|
31
26
|
]
|
|
@@ -69,9 +69,7 @@ __Polyfills__
|
|
|
69
69
|
{@linksource shaka.polyfill.Fullscreen}
|
|
70
70
|
- prefixed video QoE metrics:
|
|
71
71
|
{@linksource shaka.polyfill.VideoPlaybackQuality}
|
|
72
|
-
- prefixed EME implementations
|
|
73
|
-
Chrome/Chromium:
|
|
74
|
-
- {@linksource shaka.polyfill.PatchedMediaKeysMs}
|
|
72
|
+
- prefixed EME implementations:
|
|
75
73
|
- {@linksource shaka.polyfill.PatchedMediaKeysWebkit}
|
|
76
74
|
- {@linksource shaka.polyfill.PatchedMediaKeysNop}
|
|
77
75
|
- variants of VTTCue and TextTrackCue constructors:
|
|
@@ -108,7 +106,7 @@ python build/build.py +@complete -@polyfill
|
|
|
108
106
|
python build/build.py +@complete -@polyfill -@text
|
|
109
107
|
```
|
|
110
108
|
|
|
111
|
-
To see the complete list of categories, its in [`build/types/`](https://github.com/
|
|
109
|
+
To see the complete list of categories, its in [`build/types/`](https://github.com/shaka-project/shaka-player/tree/main/build/types)
|
|
112
110
|
|
|
113
111
|
#### Build Configs
|
|
114
112
|
|
|
@@ -177,5 +175,5 @@ If you have a great plugin that you'd like to contribute back to the community,
|
|
|
177
175
|
we'd love to hear from you. You can get in touch via our [issue tracker][] to
|
|
178
176
|
discuss it, and once it's ready, you can send a [pull request][] on github.
|
|
179
177
|
|
|
180
|
-
[issue tracker]: https://github.com/
|
|
181
|
-
[pull request]: https://github.com/
|
|
178
|
+
[issue tracker]: https://github.com/shaka-project/shaka-player/issues/new/choose
|
|
179
|
+
[pull request]: https://github.com/shaka-project/shaka-player/pull/new/main
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# Selenium Grid Config
|
|
2
|
+
|
|
3
|
+
Shaka Player's test runner (Karma) can be directed to run tests on a Selenium
|
|
4
|
+
grid. For this, you need a config file that defines what browsers are
|
|
5
|
+
available, and how to request them via WebDriver.
|
|
6
|
+
|
|
7
|
+
For a fully-worked, detailed example, see the config for the private grid in
|
|
8
|
+
our lab at [build/shaka-lab.yaml](https://github.com/shaka-project/shaka-player/blob/main/build/shaka-lab.yaml)
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
```sh
|
|
13
|
+
python build/test.py \
|
|
14
|
+
--grid-config grid-config.yaml \
|
|
15
|
+
--grid-address selenium-hub-hostname:4444
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Syntax
|
|
19
|
+
|
|
20
|
+
The config file is written in YAML. We chose YAML because it has two big
|
|
21
|
+
advantages over JSON:
|
|
22
|
+
|
|
23
|
+
1. You can add comments
|
|
24
|
+
2. You can define variables (with YAML "anchors") to factor out common configs
|
|
25
|
+
|
|
26
|
+
### Variables
|
|
27
|
+
|
|
28
|
+
You can define any common variables in the `vars` section, then refer to them
|
|
29
|
+
elsewhere. For example:
|
|
30
|
+
|
|
31
|
+
```yaml
|
|
32
|
+
vars:
|
|
33
|
+
# Generates an "anchor" with the given name. Later, you can inject the
|
|
34
|
+
# contents of the variable with "*name".
|
|
35
|
+
firefox_config: &firefox_config
|
|
36
|
+
moz:firefoxOptions:
|
|
37
|
+
# Override Firefox default preferences in the temporary profile created
|
|
38
|
+
# for each test run.
|
|
39
|
+
prefs:
|
|
40
|
+
# Overrides Selenium's explicit default setting, to allow Firefox to
|
|
41
|
+
# install the Widevine CDM on demand.
|
|
42
|
+
media.gmp-manager.updateEnabled: true
|
|
43
|
+
# Overrides Firefox's Linux-specific default setting to disable DRM.
|
|
44
|
+
media.eme.enabled: true
|
|
45
|
+
|
|
46
|
+
# These three browser definitions share the same config from above.
|
|
47
|
+
FirefoxMac:
|
|
48
|
+
browser: firefox
|
|
49
|
+
os: Mac
|
|
50
|
+
extra_config: *firefox_config
|
|
51
|
+
|
|
52
|
+
FirefoxWindows:
|
|
53
|
+
browser: firefox
|
|
54
|
+
os: Windows
|
|
55
|
+
extra_config: *firefox_config
|
|
56
|
+
|
|
57
|
+
FirefoxLinux:
|
|
58
|
+
browser: firefox
|
|
59
|
+
os: Linux
|
|
60
|
+
extra_config: *firefox_config
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### Browsers
|
|
64
|
+
|
|
65
|
+
Each top-level key in the config file (except for `vars`) is the name of a
|
|
66
|
+
browser made available to Karma. Within each of those keys are the following:
|
|
67
|
+
|
|
68
|
+
- `browser`: The name of the browser. This is case-sensitive, and must match
|
|
69
|
+
the string and case used by Selenium.
|
|
70
|
+
- `os` (optional): The name of the OS. This is case-INsensitive, and must
|
|
71
|
+
match the name of the platform as used by Selenium. For Generic
|
|
72
|
+
WebDriver Server, this can be omitted or set to the name of the host
|
|
73
|
+
platform.
|
|
74
|
+
- `version` (optional): The version of the browser. This is case-sensitive,
|
|
75
|
+
and must match the string and case used in the Selenium node config.
|
|
76
|
+
- `disabled` (optional): If true, this browser is disabled and will not be
|
|
77
|
+
used unless explicitly requested.
|
|
78
|
+
- `extra_config` (optional): A dictionary of extra configs which will be
|
|
79
|
+
merged with the WebDriver launcher config in Karma.
|
|
80
|
+
|
|
81
|
+
Examples of basic desktop browsers definitions:
|
|
82
|
+
|
|
83
|
+
```yaml
|
|
84
|
+
ChromeMac:
|
|
85
|
+
browser: chrome
|
|
86
|
+
os: Mac
|
|
87
|
+
|
|
88
|
+
FirefoxMac:
|
|
89
|
+
browser: firefox
|
|
90
|
+
os: Mac
|
|
91
|
+
|
|
92
|
+
Safari:
|
|
93
|
+
browser: safari
|
|
94
|
+
os: Mac
|
|
95
|
+
|
|
96
|
+
SafariTP:
|
|
97
|
+
browser: safari
|
|
98
|
+
os: Mac
|
|
99
|
+
extra_config:
|
|
100
|
+
safari.options:
|
|
101
|
+
technologyPreview: true
|
|
102
|
+
|
|
103
|
+
ChromeWindows:
|
|
104
|
+
browser: chrome
|
|
105
|
+
os: Windows
|
|
106
|
+
|
|
107
|
+
FirefoxWindows:
|
|
108
|
+
browser: firefox
|
|
109
|
+
os: Windows
|
|
110
|
+
|
|
111
|
+
Edge:
|
|
112
|
+
browser: msedge
|
|
113
|
+
os: Windows
|
|
114
|
+
|
|
115
|
+
ChromeLinux:
|
|
116
|
+
browser: chrome
|
|
117
|
+
os: Linux
|
|
118
|
+
|
|
119
|
+
FirefoxLinux:
|
|
120
|
+
browser: firefox
|
|
121
|
+
os: Linux
|
|
122
|
+
```
|
|
@@ -1,17 +1,89 @@
|
|
|
1
1
|
# Shaka Player Upgrade Guide
|
|
2
2
|
|
|
3
|
-
If you are upgrading from **v1
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
If you are upgrading from **v1 or v2**, these releases are no longer supported,
|
|
4
|
+
and upgrade guides are no longer maintained. You can use these old upgrades
|
|
5
|
+
guides to upgrade in stages:
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
{@link https://v2-5-
|
|
9
|
-
|
|
7
|
+
- {@link https://v2-4-7-dot-shaka-player-demo.appspot.com/docs/api/tutorial-upgrade.html Upgrade to v2.4}
|
|
8
|
+
- {@link https://v2-5-23-dot-shaka-player-demo.appspot.com/docs/api/tutorial-upgrade-v2-4.html Upgrade v2.4 => v2.5}
|
|
9
|
+
- {@link https://v3-0-15-dot-shaka-player-demo.appspot.com/docs/api/tutorial-upgrade-v2-5.html Upgrade v2.5 => v3.0}
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
Since v3.0, Shaka Player has been following semantic versioning. (The
|
|
12
|
+
IE11 deprecation announced before v3.0 happened in v3.1, which technically
|
|
13
|
+
breaks semantic versioning guarantees. It is the only intentional exception.)
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
Upgrading from any v3 release to a newer v3 release should be backward
|
|
16
|
+
compatible. The same is true of all major version numbers (v4 => v4, etc).
|
|
16
17
|
|
|
17
|
-
|
|
18
|
+
Here is a summary of breaking changes that might require upgrades to your
|
|
19
|
+
application:
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
## v3.1
|
|
23
|
+
|
|
24
|
+
- New dependencies:
|
|
25
|
+
- TextDecoder/TextEncoder platform support or polyfill required (affects
|
|
26
|
+
Xbox One, but not evergreen browsers); we suggest the polyfill
|
|
27
|
+
[https://github.com/anonyco/FastestSmallestTextEncoderDecoder](fastestsmallesttextencoderdecoder/EncoderDecoderTogether.min.js)
|
|
28
|
+
|
|
29
|
+
- Support removed:
|
|
30
|
+
- IE11 support removed
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
## v4.0
|
|
34
|
+
|
|
35
|
+
- Support removed:
|
|
36
|
+
- Older TVs and set-top boxes that do not support MediaSource sequence mode
|
|
37
|
+
can no longer play HLS content (since we now use sequence mode for that)
|
|
38
|
+
- Support for iOS 12 and Safari 12 has been removed
|
|
39
|
+
|
|
40
|
+
- Configuration changes:
|
|
41
|
+
- `manifest.dash.defaultPresentationDelay` has been replaced by
|
|
42
|
+
`manifest.defaultPresentationDelay` (deprecated in v3.0.0)
|
|
43
|
+
- Configuration of factories should be plain factory functions, not
|
|
44
|
+
constructors; these will not be invoked with `new` (deprecated in v3.1.0)
|
|
45
|
+
- `drm.initDataTransform` has been removed (no longer needed since the
|
|
46
|
+
minimum supported version of iOS is now 13)
|
|
47
|
+
- `streaming.smallGapLimit` and `streaming.jumpLargeGaps` have been removed;
|
|
48
|
+
all gaps will now be jumped
|
|
49
|
+
|
|
50
|
+
- Player API changes:
|
|
51
|
+
- `shaka.Player.prototype.addTextTrack()` has been replaced by
|
|
52
|
+
`addTextTrackAsync()`, which returns a `Promise` (deprecated in v3.1.0)
|
|
53
|
+
|
|
54
|
+
- UI API changes:
|
|
55
|
+
- `shaka.ui.TrackLabelFormat` has been renamed to
|
|
56
|
+
`shaka.ui.Overlay.TrackLabelFormat` (deprecated in v3.1.0)
|
|
57
|
+
- `shaka.ui.FailReasonCode` has been renamed to
|
|
58
|
+
`shaka.ui.Overlay.FailReasonCode` (deprecated in v3.1.0)
|
|
59
|
+
|
|
60
|
+
- Offline API changes:
|
|
61
|
+
- `shaka.offline.Storage.prototype.store()` returns `AbortableOperation`
|
|
62
|
+
instead of `Promise`; callers should change `.then()` to
|
|
63
|
+
`.promise.then()` and `await rv` to `await rv.promise` (deprecated in
|
|
64
|
+
v3.0.0)
|
|
65
|
+
- `shaka.offline.Storage.prototype.getStoreInProgress()` has been removed;
|
|
66
|
+
concurrent operations are supported since v3, so callers don't need to
|
|
67
|
+
check this (deprecated in v3.0.0)
|
|
68
|
+
|
|
69
|
+
- Utility API changes:
|
|
70
|
+
- `shaka.util.Uint8ArrayUtils.equal` has been replaced by
|
|
71
|
+
`shaka.util.BufferUtils.equal`, which can handle multiple types of
|
|
72
|
+
buffers (deprecated in v3.0.0)
|
|
73
|
+
|
|
74
|
+
- Manifest API changes:
|
|
75
|
+
- `shaka.media.SegmentIndex.prototype.destroy()` has been replaced by
|
|
76
|
+
`release()`, which is synchronous (deprecated in v3.0.0)
|
|
77
|
+
- `shaka.media.SegmentIterator.prototype.seek()`, which mutates the
|
|
78
|
+
iterator, has been replaced by
|
|
79
|
+
`shaka.media.SegmentIndex.getIteratorForTime()` (deprecated in v3.1.0)
|
|
80
|
+
- `shaka.media.SegmentIndex.prototype.merge()` has become private; use
|
|
81
|
+
`mergeAndEvict()` instead (deprecated in v3.2.0)
|
|
82
|
+
|
|
83
|
+
- Plugin changes:
|
|
84
|
+
- `AbrManager` plugins must implement the `playbackRateChanged()` method
|
|
85
|
+
(deprecated in v3.0.0)
|
|
86
|
+
- `shaka.extern.Cue.prototype.spacer` has been replaced by the more
|
|
87
|
+
clearly-named `lineBreak` (deprecated in v3.1.0)
|
|
88
|
+
- `IUIElement` plugins must have a `release()` method (not `destroy()`)
|
|
89
|
+
(deprecated in v3.0.0)
|