From 641d7e9894fbd0dfe920a02a4ca53cfb1c548ccf Mon Sep 17 00:00:00 2001 From: Thibault Nocchi <1619359+ThibaultNocchi@users.noreply.github.com> Date: Wed, 1 Feb 2023 10:45:56 +0100 Subject: [PATCH] partial work --- frontend/package.json | 2 + frontend/src/App.vue | 2 +- .../src/components/Buttons/PlayButton.vue | 6 +- .../Buttons/SubtitleSelectionButton.vue | 125 +++----- .../src/components/Playback/OsdPlayer.vue | 276 ++++++++++++++++++ .../src/components/Playback/PlayerElement.vue | 203 +++++++++++-- frontend/src/composables/index.ts | 1 + frontend/src/composables/use-router.ts | 10 + frontend/src/pages/playback/video/index.vue | 61 +++- frontend/src/store/index.ts | 8 + frontend/src/store/playbackManager.ts | 169 ++++++++--- frontend/src/store/videoPlayer.ts | 38 +++ package-lock.json | 12 + 13 files changed, 768 insertions(+), 145 deletions(-) create mode 100644 frontend/src/components/Playback/OsdPlayer.vue create mode 100644 frontend/src/composables/use-router.ts create mode 100644 frontend/src/store/videoPlayer.ts diff --git a/frontend/package.json b/frontend/package.json index 26a532c4ca9..c189fe10f01 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -26,6 +26,7 @@ "vue-i18n-extract-remove": "vue-i18n-extract --remove" }, "dependencies": { + "@jellyfin/libass-wasm": "4.1.1", "@jellyfin/sdk": "0.0.0-unstable.202301101857", "@vueuse/components": "9.12.0", "@vueuse/core": "9.12.0", @@ -36,6 +37,7 @@ "destr": "1.1.1", "dompurify": "2.3.8", "he": "1.2.0", + "hls.js": "1.3.1", "langs": "2.0.0", "lodash-es": "4.17.21", "screenfull": "6.0.1", diff --git a/frontend/src/App.vue b/frontend/src/App.vue index d7ea9d9181e..33619239ef3 100644 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -3,6 +3,6 @@ - + diff --git a/frontend/src/components/Buttons/PlayButton.vue b/frontend/src/components/Buttons/PlayButton.vue index d9645692334..564e6fa5bc7 100644 --- a/frontend/src/components/Buttons/PlayButton.vue +++ b/frontend/src/components/Buttons/PlayButton.vue @@ -92,7 +92,7 @@ export default defineComponent({ await this.playbackManager.play({ item: this.item, audioTrackIndex: this.audioTrackIndex, - subtitleTrackIndex: this.subtitleTrackIndex || -1, + subtitleTrackIndex: this.subtitleTrackIndex, videoTrackIndex: this.videoTrackIndex, startFromTime: ticksToMs(this.item.UserData?.PlaybackPositionTicks) / 1000 @@ -104,7 +104,7 @@ export default defineComponent({ await this.playbackManager.play({ item: this.item, audioTrackIndex: this.audioTrackIndex, - subtitleTrackIndex: this.subtitleTrackIndex || -1, + subtitleTrackIndex: this.subtitleTrackIndex, videoTrackIndex: this.videoTrackIndex, startShuffled: true }); @@ -112,7 +112,7 @@ export default defineComponent({ await this.playbackManager.play({ item: this.item, audioTrackIndex: this.audioTrackIndex, - subtitleTrackIndex: this.subtitleTrackIndex || -1, + subtitleTrackIndex: this.subtitleTrackIndex, videoTrackIndex: this.videoTrackIndex }); } diff --git a/frontend/src/components/Buttons/SubtitleSelectionButton.vue b/frontend/src/components/Buttons/SubtitleSelectionButton.vue index 2b73f9dc1c2..8f41a779854 100644 --- a/frontend/src/components/Buttons/SubtitleSelectionButton.vue +++ b/frontend/src/components/Buttons/SubtitleSelectionButton.vue @@ -2,95 +2,64 @@ - - - diff --git a/frontend/src/components/Playback/OsdPlayer.vue b/frontend/src/components/Playback/OsdPlayer.vue new file mode 100644 index 00000000000..b83c52c4c3e --- /dev/null +++ b/frontend/src/components/Playback/OsdPlayer.vue @@ -0,0 +1,276 @@ + + + + + + + diff --git a/frontend/src/components/Playback/PlayerElement.vue b/frontend/src/components/Playback/PlayerElement.vue index 83ed0a5261c..86faef71369 100644 --- a/frontend/src/components/Playback/PlayerElement.vue +++ b/frontend/src/components/Playback/PlayerElement.vue @@ -1,47 +1,72 @@