diff options
author | Chocobozzz <me@florianbigard.com> | 2019-01-24 13:43:44 +0100 |
---|---|---|
committer | Chocobozzz <chocobozzz@cpy.re> | 2019-02-11 09:13:02 +0100 |
commit | 4348a27d252a3349bafa7ef4859c0e2cf060c255 (patch) | |
tree | ab3d60118ebb31c84050c3d544dbd600006491d1 /client/src/assets/player/peertube-player-manager.ts | |
parent | 3b6f205c34bb931de0323581edf991ca33256e6b (diff) | |
download | PeerTube-4348a27d252a3349bafa7ef4859c0e2cf060c255.tar.gz PeerTube-4348a27d252a3349bafa7ef4859c0e2cf060c255.tar.zst PeerTube-4348a27d252a3349bafa7ef4859c0e2cf060c255.zip |
Add lazy loading in player
Diffstat (limited to 'client/src/assets/player/peertube-player-manager.ts')
-rw-r--r-- | client/src/assets/player/peertube-player-manager.ts | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/client/src/assets/player/peertube-player-manager.ts b/client/src/assets/player/peertube-player-manager.ts index 2e090847c..91ca6a2aa 100644 --- a/client/src/assets/player/peertube-player-manager.ts +++ b/client/src/assets/player/peertube-player-manager.ts | |||
@@ -15,7 +15,6 @@ import './videojs-components/theater-button' | |||
15 | import { P2PMediaLoaderPluginOptions, UserWatching, VideoJSCaption, VideoJSPluginOptions, videojsUntyped } from './peertube-videojs-typings' | 15 | import { P2PMediaLoaderPluginOptions, UserWatching, VideoJSCaption, VideoJSPluginOptions, videojsUntyped } from './peertube-videojs-typings' |
16 | import { buildVideoEmbed, buildVideoLink, copyToClipboard } from './utils' | 16 | import { buildVideoEmbed, buildVideoLink, copyToClipboard } from './utils' |
17 | import { getCompleteLocale, getShortLocale, is18nLocale, isDefaultLocale } from '../../../../shared/models/i18n/i18n' | 17 | import { getCompleteLocale, getShortLocale, is18nLocale, isDefaultLocale } from '../../../../shared/models/i18n/i18n' |
18 | import { Engine } from 'p2p-media-loader-hlsjs' | ||
19 | 18 | ||
20 | // Change 'Playback Rate' to 'Speed' (smaller for our settings menu) | 19 | // Change 'Playback Rate' to 'Speed' (smaller for our settings menu) |
21 | videojsUntyped.getComponent('PlaybackRateMenuButton').prototype.controlText_ = 'Speed' | 20 | videojsUntyped.getComponent('PlaybackRateMenuButton').prototype.controlText_ = 'Speed' |
@@ -32,6 +31,7 @@ export type WebtorrentOptions = { | |||
32 | 31 | ||
33 | export type P2PMediaLoaderOptions = { | 32 | export type P2PMediaLoaderOptions = { |
34 | playlistUrl: string | 33 | playlistUrl: string |
34 | trackerAnnounce: string[] | ||
35 | } | 35 | } |
36 | 36 | ||
37 | export type CommonOptions = { | 37 | export type CommonOptions = { |
@@ -88,10 +88,17 @@ export class PeertubePlayerManager { | |||
88 | } | 88 | } |
89 | 89 | ||
90 | static async initialize (mode: PlayerMode, options: PeertubePlayerManagerOptions) { | 90 | static async initialize (mode: PlayerMode, options: PeertubePlayerManagerOptions) { |
91 | let p2pMediaLoader: any | ||
92 | |||
91 | if (mode === 'webtorrent') await import('./webtorrent-plugin') | 93 | if (mode === 'webtorrent') await import('./webtorrent-plugin') |
92 | if (mode === 'p2p-media-loader') await import('./p2p-media-loader-plugin') | 94 | if (mode === 'p2p-media-loader') { |
95 | [ p2pMediaLoader ] = await Promise.all([ | ||
96 | import('p2p-media-loader-hlsjs'), | ||
97 | import('./p2p-media-loader-plugin') | ||
98 | ]) | ||
99 | } | ||
93 | 100 | ||
94 | const videojsOptions = this.getVideojsOptions(mode, options) | 101 | const videojsOptions = this.getVideojsOptions(mode, options, p2pMediaLoader) |
95 | 102 | ||
96 | await this.loadLocaleInVideoJS(options.common.serverUrl, options.common.language) | 103 | await this.loadLocaleInVideoJS(options.common.serverUrl, options.common.language) |
97 | 104 | ||
@@ -133,7 +140,7 @@ export class PeertubePlayerManager { | |||
133 | return p.then(json => videojs.addLanguage(getShortLocale(completeLocale), json)) | 140 | return p.then(json => videojs.addLanguage(getShortLocale(completeLocale), json)) |
134 | } | 141 | } |
135 | 142 | ||
136 | private static getVideojsOptions (mode: PlayerMode, options: PeertubePlayerManagerOptions) { | 143 | private static getVideojsOptions (mode: PlayerMode, options: PeertubePlayerManagerOptions, p2pMediaLoaderModule?: any) { |
137 | const commonOptions = options.common | 144 | const commonOptions = options.common |
138 | const webtorrentOptions = options.webtorrent | 145 | const webtorrentOptions = options.webtorrent |
139 | const p2pMediaLoaderOptions = options.p2pMediaLoader | 146 | const p2pMediaLoaderOptions = options.p2pMediaLoader |
@@ -157,16 +164,19 @@ export class PeertubePlayerManager { | |||
157 | src: p2pMediaLoaderOptions.playlistUrl | 164 | src: p2pMediaLoaderOptions.playlistUrl |
158 | } | 165 | } |
159 | 166 | ||
160 | const config = { | 167 | const p2pMediaLoaderConfig = { |
168 | // loader: { | ||
169 | // trackerAnnounce: p2pMediaLoaderOptions.trackerAnnounce | ||
170 | // }, | ||
161 | segments: { | 171 | segments: { |
162 | swarmId: 'swarm' // TODO: choose swarm id | 172 | swarmId: p2pMediaLoaderOptions.playlistUrl |
163 | } | 173 | } |
164 | } | 174 | } |
165 | const streamrootHls = { | 175 | const streamrootHls = { |
166 | html5: { | 176 | html5: { |
167 | hlsjsConfig: { | 177 | hlsjsConfig: { |
168 | liveSyncDurationCount: 7, | 178 | liveSyncDurationCount: 7, |
169 | loader: new Engine(config).createLoaderClass() | 179 | loader: new p2pMediaLoaderModule.Engine(p2pMediaLoaderConfig).createLoaderClass() |
170 | } | 180 | } |
171 | } | 181 | } |
172 | } | 182 | } |