shaka-player 3.2.0 → 3.2.4
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/build_and_test.yaml +73 -0
- package/.github/workflows/release.yaml +53 -0
- package/AUTHORS +3 -0
- package/CHANGELOG.md +182 -1
- package/CONTRIBUTORS +3 -0
- package/README.md +4 -4
- package/build/checkversion.py +1 -1
- package/build/generateExterns.js +1 -1
- package/build/misspellings.txt +1 -0
- package/build/shakaBuildHelpers.py +6 -5
- package/build/subprocessWindowsPatch.py +103 -0
- package/build/test.py +6 -0
- package/demo/common/assets.js +1 -1
- package/demo/index.html +1 -1
- package/dist/controls.css +2 -2
- package/dist/controls.css.map +1 -1
- package/dist/demo.compiled.debug.js +1 -1
- package/dist/demo.compiled.js +1 -1
- package/dist/deps.js +8 -8
- package/dist/locales.js +37 -37
- package/dist/receiver.compiled.debug.js +1 -1
- package/dist/receiver.compiled.js +1 -1
- package/dist/shaka-player.compiled.d.ts +195 -5
- package/dist/shaka-player.compiled.debug.d.ts +195 -5
- package/dist/shaka-player.compiled.debug.externs.js +226 -14
- package/dist/shaka-player.compiled.debug.js +424 -399
- package/dist/shaka-player.compiled.debug.map +4 -4
- package/dist/shaka-player.compiled.externs.js +226 -14
- package/dist/shaka-player.compiled.js +826 -812
- package/dist/shaka-player.compiled.map +4 -4
- package/dist/shaka-player.ui.d.ts +197 -16
- package/dist/shaka-player.ui.debug.d.ts +197 -16
- package/dist/shaka-player.ui.debug.externs.js +230 -27
- package/dist/shaka-player.ui.debug.js +466 -442
- package/dist/shaka-player.ui.debug.map +4 -4
- package/dist/shaka-player.ui.externs.js +230 -27
- package/dist/shaka-player.ui.js +946 -932
- package/dist/shaka-player.ui.map +4 -4
- package/docs/tutorials/fairplay.md +1 -1
- package/docs/tutorials/faq.md +14 -0
- package/docs/tutorials/ui.md +5 -5
- package/externs/ima.js +4 -0
- package/externs/shaka/ads.js +25 -0
- package/externs/shaka/player.js +8 -0
- package/externs/shaka/text.js +10 -0
- package/karma.conf.js +20 -15
- package/lib/ads/ad_manager.js +46 -26
- package/lib/ads/client_side_ad_manager.js +82 -88
- package/lib/ads/server_side_ad_manager.js +45 -13
- package/lib/cast/cast_proxy.js +6 -2
- package/lib/cast/cast_receiver.js +5 -1
- package/lib/cast/cast_sender.js +2 -2
- package/lib/cea/sei_processor.js +24 -17
- package/lib/dash/dash_parser.js +131 -24
- package/lib/dash/segment_list.js +1 -1
- package/lib/dash/segment_template.js +1 -1
- package/lib/hls/hls_parser.js +74 -17
- package/lib/hls/manifest_text_parser.js +1 -0
- package/lib/media/closed_caption_parser.js +3 -1
- package/lib/media/content_workarounds.js +12 -0
- package/lib/media/drm_engine.js +20 -1
- package/lib/media/gap_jumping_controller.js +8 -4
- package/lib/media/media_source_engine.js +1 -2
- package/lib/media/playhead.js +1 -1
- package/lib/media/region_observer.js +39 -33
- package/lib/media/region_timeline.js +17 -19
- package/lib/media/segment_index.js +2 -1
- package/lib/media/segment_reference.js +19 -1
- package/lib/media/streaming_engine.js +8 -4
- package/lib/net/networking_engine.js +6 -1
- package/lib/offline/download_manager.js +1 -2
- package/lib/offline/storage.js +8 -9
- package/lib/player.js +129 -59
- package/lib/polyfill/aria.js +12 -2
- package/lib/polyfill/encryption_scheme.js +2 -0
- package/lib/polyfill/fullscreen.js +2 -0
- package/lib/polyfill/mathround.js +2 -0
- package/lib/polyfill/media_capabilities.js +73 -21
- package/lib/polyfill/mediasource.js +8 -0
- package/lib/polyfill/orientation.js +3 -1
- package/lib/polyfill/patchedmediakeys_apple.js +6 -4
- package/lib/polyfill/patchedmediakeys_ms.js +6 -4
- package/lib/polyfill/patchedmediakeys_nop.js +2 -0
- package/lib/polyfill/patchedmediakeys_webkit.js +6 -4
- package/lib/polyfill/pip_webkit.js +2 -0
- package/lib/polyfill/storage_estimate.js +2 -0
- package/lib/polyfill/video_play_promise.js +2 -0
- package/lib/polyfill/videoplaybackquality.js +2 -0
- package/lib/polyfill/vttcue.js +2 -0
- package/lib/text/cue.js +6 -0
- package/lib/text/mp4_ttml_parser.js +3 -0
- package/lib/text/text_engine.js +14 -2
- package/lib/text/ttml_text_parser.js +135 -87
- package/lib/text/ui_text_displayer.js +213 -80
- package/lib/text/vtt_text_parser.js +4 -2
- package/lib/text/web_vtt_generator.js +21 -12
- package/lib/util/fake_event.js +53 -7
- package/lib/util/fake_event_target.js +21 -1
- package/lib/util/mp4_box_parsers.js +1 -1
- package/lib/util/periods.js +4 -1
- package/lib/util/platform.js +13 -1
- package/lib/util/stream_utils.js +105 -13
- package/lib/util/xml_utils.js +50 -12
- package/package.json +3 -6
- package/roadmap.md +24 -22
- package/test/cast/cast_proxy_unit.js +12 -6
- package/test/cast/cast_receiver_integration.js +1 -1
- package/test/cast/cast_utils_unit.js +1 -1
- package/test/cea/mp4_cea_parser_unit.js +26 -0
- package/test/dash/dash_parser_live_unit.js +43 -0
- package/test/dash/dash_parser_manifest_unit.js +222 -3
- package/test/hls/hls_parser_unit.js +79 -1
- package/test/media/closed_caption_parser_unit.js +20 -0
- package/test/media/drm_engine_integration.js +86 -2
- package/test/media/drm_engine_unit.js +57 -0
- package/test/media/playhead_unit.js +27 -1
- package/test/media/region_observer_unit.js +40 -5
- package/test/media/region_timeline_unit.js +40 -22
- package/test/media/streaming_engine_integration.js +2 -1
- package/test/media/streaming_engine_unit.js +145 -0
- package/test/player_integration.js +79 -8
- package/test/player_src_equals_integration.js +41 -8
- package/test/player_unit.js +14 -4
- package/test/test/assets/3675/chunk-stream0-00001.m4s +0 -0
- package/test/test/assets/3675/chunk-stream0-00002.m4s +0 -0
- package/test/test/assets/3675/chunk-stream0-00003.m4s +0 -0
- package/test/test/assets/3675/chunk-stream0-00004.m4s +0 -0
- package/test/test/assets/3675/chunk-stream0-00005.m4s +0 -0
- package/test/test/assets/3675/chunk-stream0-00006.m4s +0 -0
- package/test/test/assets/3675/chunk-stream0-00007.m4s +0 -0
- package/test/test/assets/3675/dash_0.mpd +30 -0
- package/test/test/assets/3675/dash_1.mpd +30 -0
- package/test/test/assets/3675/dash_2.mpd +30 -0
- package/test/test/assets/3675/dash_3.mpd +30 -0
- package/test/test/assets/3675/dash_4.mpd +30 -0
- package/test/test/assets/3675/dash_5.mpd +26 -0
- package/test/test/assets/3675/init-stream0.m4s +0 -0
- package/test/test/assets/chapters.vtt +2 -2
- package/test/test/assets/chapters2.vtt +10 -0
- package/test/test/assets/empty_caption_video_init.mp4 +0 -0
- package/test/test/assets/empty_caption_video_segment.mp4 +0 -0
- package/test/test/util/fake_ad_manager.js +11 -1
- package/test/test/util/ttml_utils.js +81 -0
- package/test/test/util/util.js +10 -7
- package/test/text/mp4_ttml_parser_unit.js +11 -18
- package/test/text/ttml_text_parser_unit.js +542 -220
- package/test/text/ui_text_displayer_unit.js +93 -20
- package/test/text/vtt_text_parser_unit.js +17 -1
- package/test/text/web_vtt_generator_unit.js +58 -3
- package/test/ui/localization_unit.js +15 -14
- package/test/ui/text_displayer_layout_unit.js +21 -8
- package/test/util/mp4_box_parsers_unit.js +28 -0
- package/test/util/stream_utils_unit.js +60 -3
- package/ui/cast_button.js +2 -3
- package/ui/controls.js +11 -6
- package/ui/less/buttons.less +0 -4
- package/ui/less/containers.less +6 -7
- package/ui/locales/ru.json +6 -6
- package/ui/localization.js +40 -87
- package/ui/pip_button.js +2 -3
- package/ui/seek_bar.js +1 -2
- package/ui/text_selection.js +1 -0
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
name: Build and Test PR
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request: # Trigger for pull requests.
|
|
5
|
+
types: [opened, synchronize, reopened, edited, ready_for_review]
|
|
6
|
+
branches:
|
|
7
|
+
- master
|
|
8
|
+
- v[0-9]*
|
|
9
|
+
workflow_dispatch: # Allows for manual triggering.
|
|
10
|
+
inputs:
|
|
11
|
+
ref:
|
|
12
|
+
description: "The ref to build and test."
|
|
13
|
+
required: False
|
|
14
|
+
|
|
15
|
+
jobs:
|
|
16
|
+
lint:
|
|
17
|
+
name: Lint
|
|
18
|
+
runs-on: ubuntu-latest
|
|
19
|
+
steps:
|
|
20
|
+
- name: Checkout code
|
|
21
|
+
uses: actions/checkout@v2
|
|
22
|
+
with:
|
|
23
|
+
ref: ${{ github.event.inputs.ref || github.ref }}
|
|
24
|
+
|
|
25
|
+
- name: Lint
|
|
26
|
+
run: python build/check.py
|
|
27
|
+
|
|
28
|
+
build_and_test:
|
|
29
|
+
# Don't waste time doing a full matrix of test runs when there was an
|
|
30
|
+
# obvious linter error.
|
|
31
|
+
needs: lint
|
|
32
|
+
strategy:
|
|
33
|
+
matrix:
|
|
34
|
+
os: ["ubuntu-latest", "macos-latest", "windows-latest"]
|
|
35
|
+
browser: ["Chrome", "Firefox", "Edge", "Safari"]
|
|
36
|
+
exclude:
|
|
37
|
+
- os: ubuntu-latest
|
|
38
|
+
browser: Edge
|
|
39
|
+
- os: windows-latest
|
|
40
|
+
browser: Safari
|
|
41
|
+
- os: ubuntu-latest
|
|
42
|
+
browser: Safari
|
|
43
|
+
include:
|
|
44
|
+
# Run Linux browsers with xvfb, so they're in a headless X session.
|
|
45
|
+
- os: ubuntu-latest
|
|
46
|
+
extra_flags: "--use-xvfb"
|
|
47
|
+
# Disable fail-fast so that one matrix-job failing doesn't make the other
|
|
48
|
+
# ones end early.
|
|
49
|
+
fail-fast: false
|
|
50
|
+
|
|
51
|
+
name: Build and test ${{ matrix.os }} ${{ matrix.browser }}
|
|
52
|
+
runs-on: ${{ matrix.os }}
|
|
53
|
+
|
|
54
|
+
steps:
|
|
55
|
+
# Firefox on Ubuntu appears to not have the right things installed in
|
|
56
|
+
# the environment used by GitHub actions, so make sure that ffmpeg is
|
|
57
|
+
# installed. Otherwise, the browser might not support some codecs that the
|
|
58
|
+
# tests assume will be supported.
|
|
59
|
+
- name: Install FFmpeg
|
|
60
|
+
if: matrix.os == 'ubuntu-latest' && matrix.browser == 'Firefox'
|
|
61
|
+
run: sudo apt -y update && sudo apt -y install ffmpeg
|
|
62
|
+
|
|
63
|
+
- name: Checkout code
|
|
64
|
+
uses: actions/checkout@v2
|
|
65
|
+
with:
|
|
66
|
+
ref: ${{ github.event.inputs.ref || github.ref }}
|
|
67
|
+
|
|
68
|
+
- name: Build Player
|
|
69
|
+
run: python build/all.py
|
|
70
|
+
|
|
71
|
+
- name: Test Player
|
|
72
|
+
run: |
|
|
73
|
+
python build/test.py --browsers ${{ matrix.browser }} --reporters spec --spec-hide-passed --drm ${{ matrix.extra_flags }}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
on:
|
|
2
|
+
push:
|
|
3
|
+
branches:
|
|
4
|
+
- master
|
|
5
|
+
- v[0-9]*
|
|
6
|
+
|
|
7
|
+
name: Release
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
release:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
outputs:
|
|
13
|
+
release_created: ${{ steps.release.outputs.release_created }}
|
|
14
|
+
tag_name: ${{ steps.release.outputs.tag_name }}
|
|
15
|
+
steps:
|
|
16
|
+
# Create/update release PR
|
|
17
|
+
- uses: google-github-actions/release-please-action@v3
|
|
18
|
+
id: release
|
|
19
|
+
with:
|
|
20
|
+
# Required input to specify the release type (node package).
|
|
21
|
+
release-type: node
|
|
22
|
+
# Make sure the player version gets updated.
|
|
23
|
+
extra-files: lib/player.js
|
|
24
|
+
# Make sure we create the PR against the correct branch.
|
|
25
|
+
default-branch: ${{ github.ref_name }}
|
|
26
|
+
|
|
27
|
+
# The jobs below are all conditional on a release having been created by
|
|
28
|
+
# someone merging the release PR. They all run in parallel.
|
|
29
|
+
|
|
30
|
+
npm:
|
|
31
|
+
runs-on: ubuntu-latest
|
|
32
|
+
needs: release
|
|
33
|
+
if: ${{ needs.release.outputs.release_created }}
|
|
34
|
+
steps:
|
|
35
|
+
- uses: actions/checkout@v2
|
|
36
|
+
- uses: actions/setup-node@v1
|
|
37
|
+
with:
|
|
38
|
+
node-version: 12
|
|
39
|
+
registry-url: 'https://registry.npmjs.org'
|
|
40
|
+
- run: npm ci
|
|
41
|
+
- run: npm publish
|
|
42
|
+
env:
|
|
43
|
+
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
|
|
44
|
+
- run: npm pack
|
|
45
|
+
- uses: svenstaro/upload-release-action@483c1e56f95e88835747b1c7c60581215016cbf2
|
|
46
|
+
with:
|
|
47
|
+
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
|
48
|
+
tag: ${{ needs.release.outputs.tag_name }}
|
|
49
|
+
file: shaka-player-*.tgz
|
|
50
|
+
file_glob: true
|
|
51
|
+
overwrite: true
|
|
52
|
+
|
|
53
|
+
# TODO: Publish to appspot
|
package/AUTHORS
CHANGED
|
@@ -27,6 +27,8 @@ Code It <*@code-it.fr>
|
|
|
27
27
|
Charter Communications Inc <*@charter.com>
|
|
28
28
|
Damien Deis <developer.deis@gmail.com>
|
|
29
29
|
Dany L'Hébreux <danylhebreux@gmail.com>
|
|
30
|
+
Dl Dador <dldador@gmail.com>
|
|
31
|
+
Enson Choy <enson.choy@harmonicinc.com>
|
|
30
32
|
Esteban Dosztal <edosztal@gmail.com>
|
|
31
33
|
Fadomire <fadomire@gmail.com>
|
|
32
34
|
Google Inc. <*@google.com>
|
|
@@ -55,6 +57,7 @@ Peter Nycander <peter.nycander@gmail.com>
|
|
|
55
57
|
Philo Inc. <*@philo.com>
|
|
56
58
|
Prakash <duggaraju@gmail.com>
|
|
57
59
|
Robert Colantuoni <rgc@colantuoni.com>
|
|
60
|
+
Robert Galluccio <robertnw5@gmail.com>
|
|
58
61
|
Roi Lipman <roilipman@gmail.com>
|
|
59
62
|
Roksolana Ivanyshyn <roksolana.ivanyshyn.pub@gmail.com>
|
|
60
63
|
Rostislav Hejduk <Ross-cz@users.noreply.github.com>
|
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,185 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## [3.2.4](https://github.com/google/shaka-player/compare/v3.2.3...v3.2.4) (2022-02-17)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
* Add explicit release() for FakeEventTarget ([#3950](https://github.com/google/shaka-player/issues/3950)) ([6242622](https://github.com/google/shaka-player/commit/62426223272d0955e130e6f67145e3203504379c))
|
|
9
|
+
* Fix download of some HLS assets ([#3934](https://github.com/google/shaka-player/issues/3934)) ([61c0c09](https://github.com/google/shaka-player/commit/61c0c09de96a50133d28a22df632b48b89eb1d13))
|
|
10
|
+
* Fix exception in StreamingEngine for EMSG with HLS ([#3887](https://github.com/google/shaka-player/issues/3887)) ([0c4a79f](https://github.com/google/shaka-player/commit/0c4a79f4354f38dc09957fa89a80a11ec0abc88e)), closes [#3886](https://github.com/google/shaka-player/issues/3886)
|
|
11
|
+
* Fix memory leak in DASH live streams with inband EventStream ([#3957](https://github.com/google/shaka-player/issues/3957)) ([7891a85](https://github.com/google/shaka-player/commit/7891a85485ab05d5de72a496637f3b91653b2c60))
|
|
12
|
+
* **HLS:** skip whitespace in attributes ([#3884](https://github.com/google/shaka-player/issues/3884)) ([4bfc92e](https://github.com/google/shaka-player/commit/4bfc92ee536a57ea2a1e2aa1addfe1d9a1731c88))
|
|
13
|
+
|
|
14
|
+
## 3.2.3 (2022-01-28)
|
|
15
|
+
|
|
16
|
+
Bugfixes:
|
|
17
|
+
- Fix support for TTAF1 namespace (old version of TTML)
|
|
18
|
+
- https://github.com/google/shaka-player/issues/3009
|
|
19
|
+
- https://github.com/google/shaka-player/pull/3864
|
|
20
|
+
- https://github.com/google/shaka-player/pull/3906
|
|
21
|
+
- Fix misdetection of HEVC support on MS Edge
|
|
22
|
+
- https://github.com/google/shaka-player/pull/3897
|
|
23
|
+
- Fix caption overlap
|
|
24
|
+
- https://github.com/google/shaka-player/issues/3850
|
|
25
|
+
- https://github.com/google/shaka-player/issues/3741
|
|
26
|
+
- Support multiple chapter tracks with same language
|
|
27
|
+
- https://github.com/google/shaka-player/issues/3597
|
|
28
|
+
- https://github.com/google/shaka-player/pull/3868
|
|
29
|
+
- Fix text UI not updating when text is disabled
|
|
30
|
+
- https://github.com/google/shaka-player/issues/3728
|
|
31
|
+
- https://github.com/google/shaka-player/pull/3867
|
|
32
|
+
- Clear buffer on seek if mediaState is updating
|
|
33
|
+
- https://github.com/google/shaka-player/issues/3299
|
|
34
|
+
- https://github.com/google/shaka-player/pull/3795
|
|
35
|
+
- Fix thumbnails issues
|
|
36
|
+
- https://github.com/google/shaka-player/pull/3858
|
|
37
|
+
- Made nested cues inherit region
|
|
38
|
+
- https://github.com/google/shaka-player/issues/3743
|
|
39
|
+
- https://github.com/google/shaka-player/pull/3837
|
|
40
|
+
- Fix MediaCapabilities polyfill on Safari
|
|
41
|
+
- https://github.com/google/shaka-player/issues/3696
|
|
42
|
+
- https://github.com/google/shaka-player/issues/3530
|
|
43
|
+
- Fix usage of Shaka without polyfills
|
|
44
|
+
- https://github.com/google/shaka-player/issues/3843
|
|
45
|
+
- Fix playback failure due to rounding errors
|
|
46
|
+
- https://github.com/google/shaka-player/issues/3717
|
|
47
|
+
- Fix HLS image track issues
|
|
48
|
+
- https://github.com/google/shaka-player/issues/3840
|
|
49
|
+
- Remove caption wrapper bgColor
|
|
50
|
+
- https://github.com/google/shaka-player/issues/3745
|
|
51
|
+
- https://github.com/google/shaka-player/pull/3838
|
|
52
|
+
- Support "forced-subtitle" role
|
|
53
|
+
- https://github.com/google/shaka-player/issues/3767
|
|
54
|
+
- https://github.com/google/shaka-player/pull/3807
|
|
55
|
+
- Fix time element height on Safari
|
|
56
|
+
- https://github.com/google/shaka-player/issues/3739
|
|
57
|
+
- https://github.com/google/shaka-player/pull/3809
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
## 3.2.2 (2022-01-06)
|
|
61
|
+
|
|
62
|
+
Bugfixes:
|
|
63
|
+
- Allow comments in the TTML parser
|
|
64
|
+
- https://github.com/google/shaka-player/issues/3766
|
|
65
|
+
- https://github.com/google/shaka-player/pull/3827
|
|
66
|
+
- Fix HDR signalling via essential or supplemental property
|
|
67
|
+
- https://github.com/google/shaka-player/issues/3726
|
|
68
|
+
- https://github.com/google/shaka-player/pull/3727
|
|
69
|
+
- Fix MediaCapabilities polyfill on Playstation 5
|
|
70
|
+
- https://github.com/google/shaka-player/issues/3582
|
|
71
|
+
- https://github.com/google/shaka-player/pull/3808
|
|
72
|
+
- Add DASH MIME type mapping for src= playback
|
|
73
|
+
- https://github.com/google/shaka-player/pull/3805
|
|
74
|
+
- Fix captions not working after a period transition on live DASH streams
|
|
75
|
+
- https://github.com/google/shaka-player/issues/3783
|
|
76
|
+
- https://github.com/google/shaka-player/pull/3801
|
|
77
|
+
- Fix timestamp offset of CEA-608 cues
|
|
78
|
+
- https://github.com/google/shaka-player/issues/3782
|
|
79
|
+
- Force caption update when removing cues
|
|
80
|
+
- Fixes parsing of HLS 'DEFAULT' attribute
|
|
81
|
+
- https://github.com/google/shaka-player/issues/3769
|
|
82
|
+
- https://github.com/google/shaka-player/pull/3771
|
|
83
|
+
- support stpp.ttml codec in Mp4TtmlParser
|
|
84
|
+
- https://github.com/google/shaka-player/pull/3754
|
|
85
|
+
- Fix Russian translation
|
|
86
|
+
- https://github.com/google/shaka-player/pull/3751
|
|
87
|
+
- Fix HLS VOD duration
|
|
88
|
+
- https://github.com/google/shaka-player/issues/3733
|
|
89
|
+
- Query HDR transfer function
|
|
90
|
+
- https://github.com/google/shaka-player/issues/3729
|
|
91
|
+
- https://github.com/google/shaka-player/pull/3730
|
|
92
|
+
- Fix styling of UI text cues
|
|
93
|
+
- https://github.com/google/shaka-player/issues/3521
|
|
94
|
+
- https://github.com/google/shaka-player/issues/3600
|
|
95
|
+
- https://github.com/google/shaka-player/issues/3713
|
|
96
|
+
- Fix seek range issues on transition from live to VOD
|
|
97
|
+
- https://github.com/google/shaka-player/issues/3675
|
|
98
|
+
- Enforce string-format of event data keys
|
|
99
|
+
- https://github.com/google/shaka-player/issues/3710
|
|
100
|
+
- Fix vp09 playback on webOS
|
|
101
|
+
- https://github.com/google/shaka-player/pull/3566
|
|
102
|
+
- Dedupe DRM init data
|
|
103
|
+
- https://github.com/google/shaka-player/pull/3695
|
|
104
|
+
- Failover in geo-redundant streams
|
|
105
|
+
- https://github.com/google/shaka-player/pull/3587
|
|
106
|
+
- Update Cast receiver ID for v3.2
|
|
107
|
+
|
|
108
|
+
Demo App:
|
|
109
|
+
- Fix 'Tears of Steel (live, DASH, Server Side ads)'
|
|
110
|
+
- https://github.com/google/shaka-player/pull/3758
|
|
111
|
+
|
|
112
|
+
Docs:
|
|
113
|
+
- Fix typo in Fairplay tutorial
|
|
114
|
+
- https://github.com/google/shaka-player/pull/3714
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
## 3.2.1 (2021-10-13)
|
|
118
|
+
|
|
119
|
+
Bugfixes:
|
|
120
|
+
- Work around override of MediaCapabilities polyfill in Apple browsers
|
|
121
|
+
- https://github.com/google/shaka-player/issues/3530
|
|
122
|
+
- https://github.com/google/shaka-player/pull/3668
|
|
123
|
+
- Fix video poster when autoplay is disabled
|
|
124
|
+
- https://github.com/google/shaka-player/pull/3645
|
|
125
|
+
- Fix tracking of active variant track in live streams
|
|
126
|
+
- Fixes updating of nested cues
|
|
127
|
+
- https://github.com/google/shaka-player/issues/3524
|
|
128
|
+
- https://github.com/google/shaka-player/issues/3643
|
|
129
|
+
- Fix ttml erroneously dismissing cues
|
|
130
|
+
- https://github.com/google/shaka-player/issues/3643
|
|
131
|
+
- Fix control panel alignment in UI
|
|
132
|
+
- https://github.com/google/shaka-player/pull/3650
|
|
133
|
+
- Export missing polyfill install methods
|
|
134
|
+
- https://github.com/google/shaka-player/pull/3660
|
|
135
|
+
- Dispose of ad manager on player detach
|
|
136
|
+
- https://github.com/google/shaka-player/pull/3665
|
|
137
|
+
- Add ResizeObserver to CS ad manager
|
|
138
|
+
- https://github.com/google/shaka-player/pull/3652
|
|
139
|
+
- Avoid seeking on src when start time is 0
|
|
140
|
+
- https://github.com/google/shaka-player/issues/3518
|
|
141
|
+
- https://github.com/google/shaka-player/pull/3644
|
|
142
|
+
- Tolerate misaligned TS files
|
|
143
|
+
- https://github.com/google/shaka-player/issues/3580
|
|
144
|
+
- Account for server-side ad cue points in external text tracks
|
|
145
|
+
- https://github.com/google/shaka-player/pull/3617
|
|
146
|
+
- Fix stopping of Server Side Ad manager
|
|
147
|
+
- https://github.com/google/shaka-player/pull/3611
|
|
148
|
+
- Fix DRM workaround for Tizen and Xbox with ac-3 boxes
|
|
149
|
+
- https://github.com/google/shaka-player/issues/3589
|
|
150
|
+
- https://github.com/google/shaka-player/pull/3631
|
|
151
|
+
- Fix DRM workaround for Tizen and Xbox with avc3 boxes
|
|
152
|
+
- https://github.com/google/shaka-player/pull/3625
|
|
153
|
+
- Fix `BUFFER_READ_OUT_OF_BOUNDS` error when CEA caption packets are empty
|
|
154
|
+
- https://github.com/google/shaka-player/issues/3608
|
|
155
|
+
- https://github.com/google/shaka-player/pull/3609
|
|
156
|
+
- Fix error when un-storing DRM asset
|
|
157
|
+
- https://github.com/google/shaka-player/issues/3534
|
|
158
|
+
- Fix CC parsing of EPB and v1 TKHD boxes
|
|
159
|
+
- https://github.com/google/shaka-player/issues/3502
|
|
160
|
+
- https://github.com/google/shaka-player/pull/3610
|
|
161
|
+
- Always polyfill MediaCapabilities for Apple browsers
|
|
162
|
+
- https://github.com/google/shaka-player/pull/3588
|
|
163
|
+
- Add Support to iOS 12 in MediaCapabilities polyfill
|
|
164
|
+
- https://github.com/google/shaka-player/pull/3573
|
|
165
|
+
- Add support to file type in MediaCapabilities implementation
|
|
166
|
+
- https://github.com/google/shaka-player/pull/3570
|
|
167
|
+
- Display captions with forward slashes
|
|
168
|
+
- https://github.com/google/shaka-player/issues/3555
|
|
169
|
+
- https://github.com/google/shaka-player/pull/3556
|
|
170
|
+
- Add support to file type in MediaCapabilities polyfill
|
|
171
|
+
- https://github.com/google/shaka-player/pull/3569
|
|
172
|
+
- Use "undetermined" for missing CC language
|
|
173
|
+
- Fix FairPlay playback
|
|
174
|
+
- https://github.com/google/shaka-player/pull/3531
|
|
175
|
+
- Exit PiP when destroying UI
|
|
176
|
+
- https://github.com/google/shaka-player/issues/3553
|
|
177
|
+
|
|
178
|
+
Docs:
|
|
179
|
+
- Add FAQ entry for common Vue problem
|
|
180
|
+
- https://github.com/google/shaka-player/issues/3155
|
|
181
|
+
|
|
182
|
+
|
|
1
183
|
## 3.2.0 (2021-07-14)
|
|
2
184
|
|
|
3
185
|
New Features:
|
|
@@ -4452,4 +4634,3 @@ Broken Compatibility:
|
|
|
4452
4634
|
## 0.1b (2014-11-21)
|
|
4453
4635
|
|
|
4454
4636
|
Private beta release.
|
|
4455
|
-
|
package/CONTRIBUTORS
CHANGED
|
@@ -41,8 +41,10 @@ Chris Fillmore <fillmore.chris@gmail.com>
|
|
|
41
41
|
Costel Madalin Grecu <madalin.grecu@adswizz.com>
|
|
42
42
|
Damien Deis <developer.deis@gmail.com>
|
|
43
43
|
Dany L'Hébreux <danylhebreux@gmail.com>
|
|
44
|
+
Dl Dador <dldador@gmail.com>
|
|
44
45
|
Donato Borrello <donato@jwplayer.com>
|
|
45
46
|
Duc Pham <duc.pham@edgeware.tv>
|
|
47
|
+
Enson Choy <enson.choy@harmonicinc.com>
|
|
46
48
|
Esteban Dosztal <edosztal@gmail.com>
|
|
47
49
|
Fadomire <fadomire@gmail.com>
|
|
48
50
|
François Beaufort <fbeaufort@google.com>
|
|
@@ -82,6 +84,7 @@ Percy Tse <percy.tse@gmail.com>
|
|
|
82
84
|
Peter Nycander <peter.nycander@gmail.com>
|
|
83
85
|
Prakash Duggaraju <duggaraju@gmail.com>
|
|
84
86
|
Robert Colantuoni <rgc@colantuoni.com>
|
|
87
|
+
Robert Galluccio <robertnw5@gmail.com>
|
|
85
88
|
Rohit Makasana <rohitbm@google.com>
|
|
86
89
|
Roi Lipman <roilipman@gmail.com>
|
|
87
90
|
Roksolana Ivanyshyn <roksolana.ivanyshyn.pub@gmail.com>
|
package/README.md
CHANGED
|
@@ -60,10 +60,10 @@ So we are dependent on the browser supporting the manifests.
|
|
|
60
60
|
|
|
61
61
|
### Shaka Player Embedded (for native iOS)
|
|
62
62
|
|
|
63
|
-
We have another project called [Shaka Player Embedded][]
|
|
64
|
-
features and similar APIs for native apps on iOS.
|
|
63
|
+
We have another project called [Shaka Player Embedded][] which offers the same
|
|
64
|
+
features and similar APIs for native apps on iOS. This project uses its own
|
|
65
65
|
media stack, which allows it to play content that would otherwise not be
|
|
66
|
-
supported.
|
|
66
|
+
supported. This supports both DASH and HLS manifests.
|
|
67
67
|
|
|
68
68
|
[Shaka Player Embedded]: https://github.com/google/shaka-player-embedded
|
|
69
69
|
|
|
@@ -210,7 +210,7 @@ Shaka Player supports:
|
|
|
210
210
|
- SubViewer (SBV)
|
|
211
211
|
- UTF-8 encoding only
|
|
212
212
|
|
|
213
|
-
Subtitles are rendered by the browser by default.
|
|
213
|
+
Subtitles are rendered by the browser by default. Applications can create a
|
|
214
214
|
[text display plugin][] for customer rendering to go beyond browser-supported
|
|
215
215
|
attributes.
|
|
216
216
|
|
package/build/checkversion.py
CHANGED
|
@@ -37,7 +37,7 @@ def changelog_version():
|
|
|
37
37
|
"""Gets the version of the library from the CHANGELOG."""
|
|
38
38
|
path = os.path.join(shakaBuildHelpers.get_source_base(), 'CHANGELOG.md')
|
|
39
39
|
with shakaBuildHelpers.open_file(path, 'r') as f:
|
|
40
|
-
match = re.search(r'
|
|
40
|
+
match = re.search(r'^###? \[(.*?)\]\(', f.read(), re.MULTILINE)
|
|
41
41
|
return match.group(1) if match else ''
|
|
42
42
|
|
|
43
43
|
|
package/build/generateExterns.js
CHANGED
|
@@ -818,7 +818,7 @@ function main(args) {
|
|
|
818
818
|
// foo.bar.baz, foo and foo.bar will both need to be declared first.
|
|
819
819
|
const namespaces = new Set();
|
|
820
820
|
const namespaceDeclarations = [];
|
|
821
|
-
for (const name of names) {
|
|
821
|
+
for (const name of Array.from(names).sort()) {
|
|
822
822
|
// Add the full name "foo.bar.baz" and its prototype ahead of time. We
|
|
823
823
|
// should never generate these as namespaces.
|
|
824
824
|
namespaces.add(name);
|
package/build/misspellings.txt
CHANGED
|
@@ -32,6 +32,9 @@ import subprocess
|
|
|
32
32
|
import sys
|
|
33
33
|
import time
|
|
34
34
|
|
|
35
|
+
import subprocessWindowsPatch
|
|
36
|
+
|
|
37
|
+
|
|
35
38
|
# Python 3 no longer has a separate unicode type. For type-checking done in
|
|
36
39
|
# get_node_binary, create an alias to the str type.
|
|
37
40
|
if sys.version_info[0] == 3:
|
|
@@ -212,8 +215,7 @@ def npm_version(is_dirty=False):
|
|
|
212
215
|
"""Gets the version of the library from NPM."""
|
|
213
216
|
try:
|
|
214
217
|
base = cygwin_safe_path(get_source_base())
|
|
215
|
-
|
|
216
|
-
cmd_line = [cmd, '--prefix', base, 'ls', 'shaka-player']
|
|
218
|
+
cmd_line = ['npm', '--prefix', base, 'ls', 'shaka-player']
|
|
217
219
|
text = execute_get_output(cmd_line).decode('utf8')
|
|
218
220
|
except subprocess.CalledProcessError as e:
|
|
219
221
|
text = e.output.decode('utf8')
|
|
@@ -335,10 +337,9 @@ def update_node_modules():
|
|
|
335
337
|
return True
|
|
336
338
|
|
|
337
339
|
base = cygwin_safe_path(get_source_base())
|
|
338
|
-
cmd = 'npm.cmd' if is_windows() else 'npm'
|
|
339
340
|
|
|
340
341
|
# Check the version of npm.
|
|
341
|
-
version = execute_get_output([
|
|
342
|
+
version = execute_get_output(['npm', '-v']).decode('utf8')
|
|
342
343
|
|
|
343
344
|
if _parse_version(version) < _parse_version('5.0.0'):
|
|
344
345
|
logging.error('npm version is too old, please upgrade. e.g.:')
|
|
@@ -351,7 +352,7 @@ def update_node_modules():
|
|
|
351
352
|
with InDir(base):
|
|
352
353
|
# npm update seems to be the wrong thing in npm v5, so use install.
|
|
353
354
|
# See google/shaka-player#854 for more details.
|
|
354
|
-
execute_get_output([
|
|
355
|
+
execute_get_output(['npm', 'install'])
|
|
355
356
|
|
|
356
357
|
# Update the timestamp of the file that tracks when we last updated.
|
|
357
358
|
open(_node_modules_last_update_path(), 'wb').close()
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# Copyright 2021 Google LLC
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
"""Monkeypatch subprocess on Windows to find .CMD scripts.
|
|
16
|
+
|
|
17
|
+
Without this patch, subprocess fails to find .CMD scripts on Windows, even
|
|
18
|
+
though these are executables and should be treated as such according to the
|
|
19
|
+
PATHEXT environment variable.
|
|
20
|
+
|
|
21
|
+
Many people "work around" this issue on Windows with subprocess's shell=True
|
|
22
|
+
argument, but this comes with a risk of shell injection vulnerabilities.
|
|
23
|
+
|
|
24
|
+
Another solution is to explicitly add ".CMD" to the end of some commands on
|
|
25
|
+
Windows, but this breaks portability and requires "if windows" to be scattered
|
|
26
|
+
around a codebase.
|
|
27
|
+
|
|
28
|
+
This monkeypatch allows the caller of subprocess to stop worrying about Windows
|
|
29
|
+
nuances and to go back to the security best practice of shell=False. Any .CMD
|
|
30
|
+
script that would be found by the Windows shell will now be found by
|
|
31
|
+
subprocess. And because we're using the standard Windows PATHEXT environment
|
|
32
|
+
variable, this can be extended to other types of executable scripts, as well.
|
|
33
|
+
"""
|
|
34
|
+
|
|
35
|
+
import os
|
|
36
|
+
import subprocess
|
|
37
|
+
import sys
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
# NOTE: All of the higher-level methods eventually delegate to Popen, so we
|
|
41
|
+
# only patch that one method.
|
|
42
|
+
# run => Popen
|
|
43
|
+
# call => Popen
|
|
44
|
+
# check_call => call => Popen
|
|
45
|
+
# check_output => run => Popen
|
|
46
|
+
|
|
47
|
+
# These environment variables should almost certainly exist, but these are
|
|
48
|
+
# defaults in case they are missing.
|
|
49
|
+
DEFAULT_PATHEXT = '.COM;.EXE;.BAT;.CMD'
|
|
50
|
+
DEFAULT_PATH = r'C:\WINDOWS\system32;C:\WINDOWS'
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
def resolve(exe):
|
|
54
|
+
"""Resolve a command name into a full path to the executable."""
|
|
55
|
+
|
|
56
|
+
if '/' in exe or '\\' in exe or ':' in exe:
|
|
57
|
+
# This is a path, so don't modify it.
|
|
58
|
+
return exe
|
|
59
|
+
|
|
60
|
+
if '.' in exe:
|
|
61
|
+
# This has an extension already. Don't search for an extension.
|
|
62
|
+
exe_names = [exe]
|
|
63
|
+
else:
|
|
64
|
+
# This is a command name without an extension, so check for every extension
|
|
65
|
+
# in PATHEXT.
|
|
66
|
+
extensions = os.environ.get('PATHEXT', DEFAULT_PATHEXT).split(';')
|
|
67
|
+
exe_names = [exe + ext for ext in extensions]
|
|
68
|
+
|
|
69
|
+
exe_paths = os.environ.get('PATH', DEFAULT_PATH).split(';')
|
|
70
|
+
|
|
71
|
+
for path in exe_paths:
|
|
72
|
+
for name in exe_names:
|
|
73
|
+
candidate = os.path.join(path, name)
|
|
74
|
+
if os.access(candidate, os.X_OK): # If executable
|
|
75
|
+
return candidate
|
|
76
|
+
|
|
77
|
+
# Failed to resolve, so return the original name and let Popen fail with a
|
|
78
|
+
# natural-looking error complaining that this command cannot be found.
|
|
79
|
+
return exe
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
real_Popen = subprocess.Popen
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
def Popen(args, *more_args, **kwargs):
|
|
86
|
+
"""A patch to install over subprocess.Popen."""
|
|
87
|
+
|
|
88
|
+
# If the first argument is a list, resolve the command name, which is the
|
|
89
|
+
# first item in the list.
|
|
90
|
+
if isinstance(args, list):
|
|
91
|
+
args[0] = resolve(args[0])
|
|
92
|
+
|
|
93
|
+
# Delegate to the real Popen implementation.
|
|
94
|
+
return real_Popen(args, *more_args, **kwargs)
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
# Only patch win32, but not cygwin. Cygwin works correctly already.
|
|
98
|
+
if sys.platform == 'win32':
|
|
99
|
+
# Patch over Popen.
|
|
100
|
+
subprocess.Popen = Popen
|
|
101
|
+
# Copy the docstring from the real Popen into the patch, so that
|
|
102
|
+
# help(subprocess.Popen) is still relatively sane with this patch installed.
|
|
103
|
+
Popen.__doc__ = real_Popen.__doc__
|
package/build/test.py
CHANGED
|
@@ -229,6 +229,11 @@ class Launcher:
|
|
|
229
229
|
default=None,
|
|
230
230
|
const=2,
|
|
231
231
|
nargs='?')
|
|
232
|
+
running_commands.add_argument(
|
|
233
|
+
'--spec-hide-passed',
|
|
234
|
+
help='If provided, configure the spec reporter to hide passing tests.',
|
|
235
|
+
action='store_true',
|
|
236
|
+
default=False)
|
|
232
237
|
running_commands.add_argument(
|
|
233
238
|
'--test-custom-asset',
|
|
234
239
|
help='Run asset playback tests on a custom manifest URI.',
|
|
@@ -358,6 +363,7 @@ class Launcher:
|
|
|
358
363
|
'single_run',
|
|
359
364
|
'uncompiled',
|
|
360
365
|
'delay_tests',
|
|
366
|
+
'spec_hide_passed',
|
|
361
367
|
'test_custom_asset',
|
|
362
368
|
'test_custom_license_server',
|
|
363
369
|
'test_timeout',
|
package/demo/common/assets.js
CHANGED
|
@@ -499,7 +499,7 @@ shakaAssets.testAssets = [
|
|
|
499
499
|
.addFeature(shakaAssets.Feature.MP4)
|
|
500
500
|
.addFeature(shakaAssets.Feature.SUBTITLES)
|
|
501
501
|
.addFeature(shakaAssets.Feature.LIVE)
|
|
502
|
-
.setIMAAssetKey('
|
|
502
|
+
.setIMAAssetKey('PSzZMzAkSXCmlJOWDmRj8Q'),
|
|
503
503
|
new ShakaDemoAssetInfo(
|
|
504
504
|
/* name= */ 'Tears of Steel (multicodec, surround + stereo)',
|
|
505
505
|
/* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/tears_of_steel.png',
|
package/demo/index.html
CHANGED
|
@@ -128,7 +128,7 @@ UNCOMPILED_JS = [
|
|
|
128
128
|
</div>
|
|
129
129
|
<main class="mdl-layout__content" id="main-div">
|
|
130
130
|
<div id="video-bar" class="hidden">
|
|
131
|
-
<div data-shaka-player-container data-shaka-player-cast-receiver-id="
|
|
131
|
+
<div data-shaka-player-container data-shaka-player-cast-receiver-id="E7271BEC" class="video-container">
|
|
132
132
|
<video data-shaka-player autoplay playsinline id="video"></video>
|
|
133
133
|
</div>
|
|
134
134
|
</div>
|
package/dist/controls.css
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Copyright 2016 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
.shaka-hidden{display:none!important}.shaka-video-container{position:relative;top:0;left:0;display:flex}.shaka-video-container .material-icons-round{font-family:'Material Icons Round';font-size:24px}.shaka-video-container *{font-family:Roboto-Regular,Roboto,sans-serif}.shaka-video-container:fullscreen{width:100%;height:100%;background-color:#000}.shaka-video-container:fullscreen .shaka-text-container{font-size:4.4vmin}.shaka-video-container:-webkit-full-screen{width:100%;height:100%;background-color:#000}.shaka-video-container:-webkit-full-screen .shaka-text-container{font-size:4.4vmin}.shaka-video-container:-moz-full-screen{width:100%;height:100%;background-color:#000}.shaka-video-container:-moz-full-screen .shaka-text-container{font-size:4.4vmin}.shaka-video-container:-ms-fullscreen{width:100%;height:100%;background-color:#000}.shaka-video-container:-ms-fullscreen .shaka-text-container{font-size:4.4vmin}.shaka-controls-container{position:absolute;top:0;left:0;right:0;bottom:0;margin:0;padding:0;width:100%;height:100%;box-sizing:border-box;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;z-index:1}.shaka-video-container:not([shaka-controls=true]) .shaka-controls-container{display:none}.shaka-controls-container *{flex-shrink:0}.shaka-controls-container[casting=true] .shaka-fullscreen-button{display:none}.shaka-bottom-controls{width:96%;padding:0;padding-bottom:2.5%;z-index:1}.shaka-controls-button-panel{padding:0;margin:0;display:flex;flex-direction:row;justify-content:flex-end;align-items:center;overflow:hidden;min-width:48px;font-size:12px;font-weight:400;font-style:normal;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;opacity:0;transition:opacity cubic-bezier(.4,0,.6,1) .6s}.shaka-controls-container[casting=true] .shaka-controls-button-panel,.shaka-controls-container[shown=true] .shaka-controls-button-panel{opacity:1}.shaka-controls-button-panel>*{color:#fff;height:32px;margin:1px 6px;padding:0;background:0 0;border:0;cursor:pointer}.shaka-controls-button-panel .shaka-overflow-menu-only{display:none}.shaka-play-button-container{margin:0;width:100%;height:100%;flex-shrink:1;position:absolute;left:0;right:0;top:0;bottom:0;display:flex;justify-content:center;align-items:center}.shaka-scrim-container{margin:0;width:100%;height:100%;flex-shrink:1;position:absolute;left:0;right:0;top:0;bottom:0;opacity:0;transition:opacity cubic-bezier(.4,0,.6,1) .6s;background:linear-gradient(to top,#000 0,rgba(0,0,0,0) 15%)}.shaka-controls-container[casting=true] .shaka-scrim-container,.shaka-controls-container[shown=true] .shaka-scrim-container{opacity:1}.shaka-text-container{position:absolute;left:0;right:0;top:0;bottom:0;pointer-events:none;bottom:0;width:100%;min-width:48px;transition:bottom cubic-bezier(.4,0,.6,1) .1s;transition-delay:.5s
|
|
6
|
+
.shaka-hidden{display:none!important}.shaka-video-container{position:relative;top:0;left:0;display:flex}.shaka-video-container .material-icons-round{font-family:'Material Icons Round';font-size:24px}.shaka-video-container *{font-family:Roboto-Regular,Roboto,sans-serif}.shaka-video-container:fullscreen{width:100%;height:100%;background-color:#000}.shaka-video-container:fullscreen .shaka-text-container{font-size:4.4vmin}.shaka-video-container:-webkit-full-screen{width:100%;height:100%;background-color:#000}.shaka-video-container:-webkit-full-screen .shaka-text-container{font-size:4.4vmin}.shaka-video-container:-moz-full-screen{width:100%;height:100%;background-color:#000}.shaka-video-container:-moz-full-screen .shaka-text-container{font-size:4.4vmin}.shaka-video-container:-ms-fullscreen{width:100%;height:100%;background-color:#000}.shaka-video-container:-ms-fullscreen .shaka-text-container{font-size:4.4vmin}.shaka-controls-container{position:absolute;top:0;left:0;right:0;bottom:0;margin:0;padding:0;width:100%;height:100%;box-sizing:border-box;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;z-index:1}.shaka-video-container:not([shaka-controls=true]) .shaka-controls-container{display:none}.shaka-controls-container *{flex-shrink:0}.shaka-controls-container[casting=true] .shaka-fullscreen-button{display:none}.shaka-bottom-controls{width:96%;padding:0;padding-bottom:2.5%;z-index:1}.shaka-controls-button-panel{padding:0;margin:0;display:flex;flex-direction:row;justify-content:flex-end;align-items:center;overflow:hidden;min-width:48px;font-size:12px;font-weight:400;font-style:normal;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;opacity:0;transition:opacity cubic-bezier(.4,0,.6,1) .6s}.shaka-controls-container[casting=true] .shaka-controls-button-panel,.shaka-controls-container[shown=true] .shaka-controls-button-panel{opacity:1}.shaka-controls-button-panel>*{color:#fff;height:32px;line-height:.5;margin:1px 6px;padding:0;background:0 0;border:0;cursor:pointer}.shaka-controls-button-panel .shaka-overflow-menu-only{display:none}.shaka-play-button-container{margin:0;width:100%;height:100%;flex-shrink:1;position:absolute;left:0;right:0;top:0;bottom:0;display:flex;justify-content:center;align-items:center}.shaka-scrim-container{margin:0;width:100%;height:100%;flex-shrink:1;position:absolute;left:0;right:0;top:0;bottom:0;opacity:0;transition:opacity cubic-bezier(.4,0,.6,1) .6s;background:linear-gradient(to top,#000 0,rgba(0,0,0,0) 15%)}.shaka-controls-container[casting=true] .shaka-scrim-container,.shaka-controls-container[shown=true] .shaka-scrim-container{opacity:1}.shaka-text-container{position:absolute;left:0;right:0;top:0;bottom:0;pointer-events:none;bottom:0;width:100%;min-width:48px;transition:bottom cubic-bezier(.4,0,.6,1) .1s;transition-delay:.5s;font-size:20px;line-height:1.4;color:#fff}.shaka-text-container span.shaka-text-wrapper{display:inline;background:0 0}.shaka-controls-container[shown=true]~.shaka-text-container{bottom:15%;transition-delay:0s}.shaka-spinner-container{position:absolute;left:0;right:0;top:0;bottom:0;width:100%;height:100%;flex-shrink:1;display:flex;justify-content:center;align-items:center}.shaka-video-container:not([shaka-controls=true]) .shaka-spinner-container{display:none}.shaka-spinner{position:relative;top:0;left:0;margin:0;box-sizing:border-box;padding:7.8%;width:0;height:0;filter:drop-shadow(0 0 2px rgba(255, 255, 255, .5))}.shaka-play-button{box-sizing:border-box;padding:7.5%;width:0;height:0;margin:0;border-radius:50%;box-shadow:rgba(0,0,0,.1) 0 0 20px 0;border:none;background-size:50%;background-repeat:no-repeat;background-position:center center;background-color:rgba(255,255,255,.9);opacity:0;transition:opacity cubic-bezier(.4,0,.6,1) .6s}.shaka-controls-container[casting=true] .shaka-play-button,.shaka-controls-container[shown=true] .shaka-play-button{opacity:1}.shaka-play-button[icon=play]{background-image:url(data:image/svg+xml,%3Csvg%20fill%3D%22%23000000%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20width%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Cpath%20d%3D%22M8%205v14l11-7z%22%2F%3E%0A%20%20%20%20%3Cpath%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%2F%3E%0A%3C%2Fsvg%3E)}.shaka-play-button[icon=pause]{background-image:url(data:image/svg+xml,%3Csvg%20fill%3D%22%23000000%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20width%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Cpath%20d%3D%22M6%2019h4V5H6v14zm8-14v14h4V5h-4z%22%2F%3E%0A%20%20%20%20%3Cpath%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%2F%3E%0A%3C%2Fsvg%3E)}.shaka-current-time{font-size:14px;color:#fff;cursor:pointer}.shaka-current-time[disabled]{background-color:transparent;color:#fff;cursor:default}.shaka-controls-container button:focus,.shaka-controls-container input:focus{outline:1px solid Highlight}.shaka-controls-container button:-moz-focus-inner,.shaka-controls-container input:-moz-focus-outer{outline:0;border:0}.shaka-controls-container:not(.shaka-keyboard-navigation) button:focus,.shaka-controls-container:not(.shaka-keyboard-navigation) input:focus{outline:0}.shaka-range-container{position:relative;top:0;left:0;margin:4px 6px;height:4px;border-radius:4px;background:#fff}.shaka-volume-bar-container{width:100px}.shaka-range-element{-webkit-appearance:none;background:0 0;position:absolute;top:0;left:0;right:0;bottom:0;margin:0;padding:0;width:100%;height:100%;height:12px;top:-4px;z-index:1}.shaka-range-element::-webkit-slider-runnable-track{width:100%;height:12px;background:0 0;color:transparent;border:none}.shaka-range-element::-webkit-slider-thumb{-webkit-appearance:none;border:none;border-radius:12px;height:12px;width:12px;background:#fff}.shaka-range-element::-moz-range-track{width:100%;height:12px;background:0 0;color:transparent;border:none}.shaka-range-element::-moz-range-thumb{-webkit-appearance:none;border:none;border-radius:12px;height:12px;width:12px;background:#fff}.shaka-seek-bar-container{opacity:0;transition:opacity cubic-bezier(.4,0,.6,1) .6s}.shaka-controls-container[casting=true] .shaka-seek-bar-container,.shaka-controls-container[shown=true] .shaka-seek-bar-container{opacity:1}.shaka-ad-markers{position:absolute;top:0;left:0;right:0;bottom:0;margin:0;padding:0;width:100%;height:100%}/*!
|
|
7
7
|
* @license
|
|
8
8
|
* The SVG/CSS buffering spinner is based on http://codepen.io/jczimm/pen/vEBpoL
|
|
9
9
|
* Some local modifications have been made.
|
|
@@ -27,4 +27,4 @@
|
|
|
27
27
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
28
28
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
29
29
|
* SOFTWARE.
|
|
30
|
-
*/.shaka-spinner-svg{position:absolute;top:0;left:0;right:0;bottom:0;animation:rotate 2s linear infinite;transform-origin:center center;width:100%;height:100%;margin:0;padding:0}.shaka-spinner-path{stroke:#202124;stroke-dasharray:20,200;stroke-dashoffset:0;animation:dash 1s ease-in-out infinite;stroke-linecap:round}@keyframes rotate{100%{transform:rotate(360deg)}}@keyframes dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}100%{stroke-dasharray:89,200;stroke-dashoffset:-124px}}.shaka-spacer{cursor:default;flex-shrink:1;flex-grow:1;margin:0}.shaka-overflow-menu,.shaka-settings-menu{overflow-x:hidden;overflow-y:auto;white-space:nowrap;background:#fff;box-shadow:0 1px 9px 0 rgba(0,0,0,.4);border-radius:2px;max-height:250px;min-width:180px;opacity:0;transition:opacity cubic-bezier(.4,0,.6,1) .6s;display:flex;flex-direction:column;position:absolute;z-index:2;right:15px;bottom:30px}.shaka-controls-container[casting=true] .shaka-overflow-menu,.shaka-controls-container[casting=true] .shaka-settings-menu,.shaka-controls-container[shown=true] .shaka-overflow-menu,.shaka-controls-container[shown=true] .shaka-settings-menu{opacity:1}.shaka-overflow-menu button,.shaka-settings-menu button{font-size:14px;background:0 0;color:#000;border:none;min-height:30px;padding:3.5px 6px;display:flex;align-items:center;cursor:pointer}.shaka-overflow-menu button:hover,.shaka-settings-menu button:hover{background:#e0e0e0}.shaka-overflow-menu button label,.shaka-settings-menu button label{cursor:pointer}.shaka-keyboard-navigation .shaka-overflow-menu button:focus,.shaka-keyboard-navigation .shaka-settings-menu button:focus{background:#e0e0e0}.shaka-overflow-menu i,.shaka-settings-menu i{padding-left:10px;padding-right:10px}.shaka-overflow-menu.shaka-low-position,.shaka-settings-menu.shaka-low-position{bottom:15px}.shaka-overflow-menu span{text-align:left}.shaka-overflow-button-label{position:relative;display:flex;flex-direction:column}.shaka-current-selection-span{color:rgba(0,0,0,.54)}.shaka-settings-menu span{margin-left:54px}.shaka-back-to-overflow-button span{margin-left:0}.shaka-back-to-overflow-button i{padding-right:20px}.shaka-auto-span{left:17px}.shaka-captions-on{color:#000}.shaka-captions-off{color:grey}.shaka-controls-container[ad-active=true]{pointer-events:none}.shaka-controls-container[ad-active=true] .shaka-bottom-controls{pointer-events:auto}.shaka-client-side-ad-container,.shaka-server-side-ad-container{position:absolute;left:0;right:0;top:0;bottom:0}.shaka-video-container[shaka-controls=true] .shaka-client-side-ad-container iframe,.shaka-video-container[shaka-controls=true] .shaka-server-side-ad-container iframe{height:90%}.shaka-server-side-ad-container{width:100%;height:100%;flex-shrink:1}.shaka-server-side-ad-container:not([ad-active=true]){pointer-events:none}.shaka-ad-controls{display:flex;flex-direction:row;z-index:1;padding-bottom:1%}.shaka-video-container:not([shaka-controls=true]) .shaka-ad-controls{display:none}.shaka-ad-controls button,.shaka-ad-controls div{color:#fff;font-size:initial}.shaka-ad-controls div:not(.shaka-skip-ad-counter){margin:1px 6px}.shaka-ad-counter,.shaka-ad-position{display:flex;justify-content:flex-end;flex-direction:column;text-shadow:1px 1px 4px #000}.shaka-skip-ad-container{position:relative;right:-2%;display:flex;flex-direction:row;margin:0}.shaka-skip-ad-button{padding:5px 15px;background:rgba(0,0,0,.7);border:none;cursor:pointer}.shaka-skip-ad-button:disabled{background:rgba(0,0,0,.3)}.shaka-skip-ad-counter{padding:5px 5px;background:rgba(0,0,0,.7);margin:0}@font-face{font-family:Roboto;font-style:normal;font-weight:400;src:url(https://fonts.gstatic.com/s/roboto/
|
|
30
|
+
*/.shaka-spinner-svg{position:absolute;top:0;left:0;right:0;bottom:0;animation:rotate 2s linear infinite;transform-origin:center center;width:100%;height:100%;margin:0;padding:0}.shaka-spinner-path{stroke:#202124;stroke-dasharray:20,200;stroke-dashoffset:0;animation:dash 1s ease-in-out infinite;stroke-linecap:round}@keyframes rotate{100%{transform:rotate(360deg)}}@keyframes dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}100%{stroke-dasharray:89,200;stroke-dashoffset:-124px}}.shaka-spacer{cursor:default;flex-shrink:1;flex-grow:1;margin:0}.shaka-overflow-menu,.shaka-settings-menu{overflow-x:hidden;overflow-y:auto;white-space:nowrap;background:#fff;box-shadow:0 1px 9px 0 rgba(0,0,0,.4);border-radius:2px;max-height:250px;min-width:180px;opacity:0;transition:opacity cubic-bezier(.4,0,.6,1) .6s;display:flex;flex-direction:column;position:absolute;z-index:2;right:15px;bottom:30px}.shaka-controls-container[casting=true] .shaka-overflow-menu,.shaka-controls-container[casting=true] .shaka-settings-menu,.shaka-controls-container[shown=true] .shaka-overflow-menu,.shaka-controls-container[shown=true] .shaka-settings-menu{opacity:1}.shaka-overflow-menu button,.shaka-settings-menu button{font-size:14px;background:0 0;color:#000;border:none;min-height:30px;padding:3.5px 6px;display:flex;align-items:center;cursor:pointer}.shaka-overflow-menu button:hover,.shaka-settings-menu button:hover{background:#e0e0e0}.shaka-overflow-menu button label,.shaka-settings-menu button label{cursor:pointer}.shaka-keyboard-navigation .shaka-overflow-menu button:focus,.shaka-keyboard-navigation .shaka-settings-menu button:focus{background:#e0e0e0}.shaka-overflow-menu i,.shaka-settings-menu i{padding-left:10px;padding-right:10px}.shaka-overflow-menu.shaka-low-position,.shaka-settings-menu.shaka-low-position{bottom:15px}.shaka-overflow-menu span{text-align:left}.shaka-overflow-button-label{position:relative;display:flex;flex-direction:column}.shaka-current-selection-span{color:rgba(0,0,0,.54)}.shaka-settings-menu span{margin-left:54px}.shaka-back-to-overflow-button span{margin-left:0}.shaka-back-to-overflow-button i{padding-right:20px}.shaka-auto-span{left:17px}.shaka-captions-on{color:#000}.shaka-captions-off{color:grey}.shaka-controls-container[ad-active=true]{pointer-events:none}.shaka-controls-container[ad-active=true] .shaka-bottom-controls{pointer-events:auto}.shaka-client-side-ad-container,.shaka-server-side-ad-container{position:absolute;left:0;right:0;top:0;bottom:0}.shaka-video-container[shaka-controls=true] .shaka-client-side-ad-container iframe,.shaka-video-container[shaka-controls=true] .shaka-server-side-ad-container iframe{height:90%}.shaka-server-side-ad-container{width:100%;height:100%;flex-shrink:1}.shaka-server-side-ad-container:not([ad-active=true]){pointer-events:none}.shaka-ad-controls{display:flex;flex-direction:row;z-index:1;padding-bottom:1%}.shaka-video-container:not([shaka-controls=true]) .shaka-ad-controls{display:none}.shaka-ad-controls button,.shaka-ad-controls div{color:#fff;font-size:initial}.shaka-ad-controls div:not(.shaka-skip-ad-counter){margin:1px 6px}.shaka-ad-counter,.shaka-ad-position{display:flex;justify-content:flex-end;flex-direction:column;text-shadow:1px 1px 4px #000}.shaka-skip-ad-container{position:relative;right:-2%;display:flex;flex-direction:row;margin:0}.shaka-skip-ad-button{padding:5px 15px;background:rgba(0,0,0,.7);border:none;cursor:pointer}.shaka-skip-ad-button:disabled{background:rgba(0,0,0,.3)}.shaka-skip-ad-counter{padding:5px 5px;background:rgba(0,0,0,.7);margin:0}@font-face{font-family:Roboto;font-style:normal;font-weight:400;src:url(https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu4mxP.ttf) format('truetype')}@font-face{font-family:'Material Icons Round';font-style:normal;font-weight:400;src:url(https://fonts.gstatic.com/s/materialiconsround/v99/LDItaoyNOAY6Uewc665JcIzCKsKc_M9flwmM.otf) format('opentype')}.material-icons-round{font-family:'Material Icons Round';font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr}/*# sourceMappingURL=controls.css.map */
|