diff --git a/client/src/assets/player/shared/manager-options/hls-options-builder.ts b/client/src/assets/player/shared/manager-options/hls-options-builder.ts index a572febc2..361c76f4b 100644 --- a/client/src/assets/player/shared/manager-options/hls-options-builder.ts +++ b/client/src/assets/player/shared/manager-options/hls-options-builder.ts @@ -19,12 +19,15 @@ export class HLSOptionsBuilder { } - getPluginOptions () { + async getPluginOptions () { const commonOptions = this.options.common const redundancyUrlManager = new RedundancyUrlManager(this.options.p2pMediaLoader.redundancyBaseUrls) - const p2pMediaLoaderConfig = this.getP2PMediaLoaderOptions(redundancyUrlManager) + const p2pMediaLoaderConfig = await this.options.pluginsManager.runHook( + 'filter:internal.player.p2p-media-loader.options.result', + this.getP2PMediaLoaderOptions(redundancyUrlManager) + ) const loader = new this.p2pMediaLoaderModule.Engine(p2pMediaLoaderConfig).createLoaderClass() as P2PMediaLoader const p2pMediaLoader: P2PMediaLoaderPluginOptions = { diff --git a/client/src/assets/player/shared/manager-options/manager-options-builder.ts b/client/src/assets/player/shared/manager-options/manager-options-builder.ts index 07678493d..2d96c9410 100644 --- a/client/src/assets/player/shared/manager-options/manager-options-builder.ts +++ b/client/src/assets/player/shared/manager-options/manager-options-builder.ts @@ -20,7 +20,7 @@ export class ManagerOptionsBuilder { } - getVideojsOptions (alreadyPlayed: boolean): videojs.PlayerOptions { + async getVideojsOptions (alreadyPlayed: boolean): Promise { const commonOptions = this.options.common let autoplay = this.getAutoPlayValue(commonOptions.autoplay, alreadyPlayed) @@ -61,7 +61,7 @@ export class ManagerOptionsBuilder { if (this.mode === 'p2p-media-loader') { const hlsOptionsBuilder = new HLSOptionsBuilder(this.options, this.p2pMediaLoaderModule) - const options = hlsOptionsBuilder.getPluginOptions() + const options = await hlsOptionsBuilder.getPluginOptions() Object.assign(plugins, pick(options, [ 'hlsjs', 'p2pMediaLoader' ])) Object.assign(html5, options.html5) diff --git a/shared/models/plugins/client/client-hook.model.ts b/shared/models/plugins/client/client-hook.model.ts index e6313b60e..20e019304 100644 --- a/shared/models/plugins/client/client-hook.model.ts +++ b/shared/models/plugins/client/client-hook.model.ts @@ -88,7 +88,10 @@ export const clientFilterHookObject = { 'filter:share.video-playlist-url.build.result': true, // Filter videojs options built for PeerTube player - 'filter:internal.player.videojs.options.result': true + 'filter:internal.player.videojs.options.result': true, + + // Filter p2p media loader options built for PeerTube player + 'filter:internal.player.p2p-media-loader.options.result': true } export type ClientFilterHookName = keyof typeof clientFilterHookObject