aboutsummaryrefslogtreecommitdiffhomepage
path: root/client/src/assets/player/shared/manager-options/hls-options-builder.ts
diff options
context:
space:
mode:
Diffstat (limited to 'client/src/assets/player/shared/manager-options/hls-options-builder.ts')
-rw-r--r--client/src/assets/player/shared/manager-options/hls-options-builder.ts27
1 files changed, 23 insertions, 4 deletions
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..497a97436 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
@@ -5,7 +5,7 @@ import { LiveVideoLatencyMode } from '@shared/models'
5import { getAverageBandwidthInStore } from '../../peertube-player-local-storage' 5import { getAverageBandwidthInStore } from '../../peertube-player-local-storage'
6import { P2PMediaLoader, P2PMediaLoaderPluginOptions } from '../../types' 6import { P2PMediaLoader, P2PMediaLoaderPluginOptions } from '../../types'
7import { PeertubePlayerManagerOptions } from '../../types/manager-options' 7import { PeertubePlayerManagerOptions } from '../../types/manager-options'
8import { getRtcConfig } from '../common' 8import { getRtcConfig, isSameOrigin } from '../common'
9import { RedundancyUrlManager } from '../p2p-media-loader/redundancy-url-manager' 9import { RedundancyUrlManager } from '../p2p-media-loader/redundancy-url-manager'
10import { segmentUrlBuilderFactory } from '../p2p-media-loader/segment-url-builder' 10import { segmentUrlBuilderFactory } from '../p2p-media-loader/segment-url-builder'
11import { segmentValidatorFactory } from '../p2p-media-loader/segment-validator' 11import { segmentValidatorFactory } from '../p2p-media-loader/segment-validator'
@@ -19,15 +19,20 @@ export class HLSOptionsBuilder {
19 19
20 } 20 }
21 21
22 getPluginOptions () { 22 async getPluginOptions () {
23 const commonOptions = this.options.common 23 const commonOptions = this.options.common
24 24
25 const redundancyUrlManager = new RedundancyUrlManager(this.options.p2pMediaLoader.redundancyBaseUrls) 25 const redundancyUrlManager = new RedundancyUrlManager(this.options.p2pMediaLoader.redundancyBaseUrls)
26 26
27 const p2pMediaLoaderConfig = this.getP2PMediaLoaderOptions(redundancyUrlManager) 27 const p2pMediaLoaderConfig = await this.options.pluginsManager.runHook(
28 'filter:internal.player.p2p-media-loader.options.result',
29 this.getP2PMediaLoaderOptions(redundancyUrlManager)
30 )
28 const loader = new this.p2pMediaLoaderModule.Engine(p2pMediaLoaderConfig).createLoaderClass() as P2PMediaLoader 31 const loader = new this.p2pMediaLoaderModule.Engine(p2pMediaLoaderConfig).createLoaderClass() as P2PMediaLoader
29 32
30 const p2pMediaLoader: P2PMediaLoaderPluginOptions = { 33 const p2pMediaLoader: P2PMediaLoaderPluginOptions = {
34 requiresAuth: commonOptions.requiresAuth,
35
31 redundancyUrlManager, 36 redundancyUrlManager,
32 type: 'application/x-mpegURL', 37 type: 'application/x-mpegURL',
33 startTime: commonOptions.startTime, 38 startTime: commonOptions.startTime,
@@ -81,7 +86,21 @@ export class HLSOptionsBuilder {
81 simultaneousHttpDownloads: 1, 86 simultaneousHttpDownloads: 1,
82 httpFailedSegmentTimeout: 1000, 87 httpFailedSegmentTimeout: 1000,
83 88
84 segmentValidator: segmentValidatorFactory(this.options.p2pMediaLoader.segmentsSha256Url, this.options.common.isLive), 89 xhrSetup: (xhr, url) => {
90 if (!this.options.common.requiresAuth) return
91 if (!isSameOrigin(this.options.common.serverUrl, url)) return
92
93 xhr.setRequestHeader('Authorization', this.options.common.authorizationHeader())
94 },
95
96 segmentValidator: segmentValidatorFactory({
97 segmentsSha256Url: this.options.p2pMediaLoader.segmentsSha256Url,
98 isLive: this.options.common.isLive,
99 authorizationHeader: this.options.common.authorizationHeader,
100 requiresAuth: this.options.common.requiresAuth,
101 serverUrl: this.options.common.serverUrl
102 }),
103
85 segmentUrlBuilder: segmentUrlBuilderFactory(redundancyUrlManager), 104 segmentUrlBuilder: segmentUrlBuilderFactory(redundancyUrlManager),
86 105
87 useP2P: this.options.common.p2pEnabled, 106 useP2P: this.options.common.p2pEnabled,