- if (commonOptions.enableHotkeys === true) {
- PeertubePlayerManager.addHotkeysOptions(plugins)
- }
-
- if (mode === 'p2p-media-loader') {
- const { hlsjs } = PeertubePlayerManager.addP2PMediaLoaderOptions(plugins, options, p2pMediaLoaderModule)
-
- html5 = hlsjs.html5
- }
-
- if (mode === 'webtorrent') {
- PeertubePlayerManager.addWebTorrentOptions(plugins, options)
-
- // WebTorrent plugin handles autoplay, because we do some hackish stuff in there
- autoplay = false
- }
-
- const videojsOptions = {
- html5,
-
- // We don't use text track settings for now
- textTrackSettings: false as any, // FIXME: typings
- controls: commonOptions.controls !== undefined ? commonOptions.controls : true,
- loop: commonOptions.loop !== undefined ? commonOptions.loop : false,
-
- muted: commonOptions.muted !== undefined
- ? commonOptions.muted
- : undefined, // Undefined so the player knows it has to check the local storage
-
- autoplay: this.getAutoPlayValue(autoplay),
-
- poster: commonOptions.poster,
- inactivityTimeout: commonOptions.inactivityTimeout,
- playbackRates: [ 0.5, 0.75, 1, 1.25, 1.5, 2 ],
-
- plugins,
-
- controlBar: {
- children: this.getControlBarChildren(mode, {
- captions: commonOptions.captions,
- peertubeLink: commonOptions.peertubeLink,
- theaterButton: commonOptions.theaterButton,
- nextVideo: commonOptions.nextVideo
- }) as any // FIXME: typings
- }
- }
-
- if (commonOptions.language && !isDefaultLocale(commonOptions.language)) {
- Object.assign(videojsOptions, { language: commonOptions.language })
- }
-
- return videojsOptions
- }
-
- private static addP2PMediaLoaderOptions (
- plugins: VideoJSPluginOptions,
- options: PeertubePlayerManagerOptions,
- p2pMediaLoaderModule: any
- ) {
- const p2pMediaLoaderOptions = options.p2pMediaLoader
- const commonOptions = options.common
-
- const trackerAnnounce = p2pMediaLoaderOptions.trackerAnnounce
- .filter(t => t.startsWith('ws'))
-
- const redundancyUrlManager = new RedundancyUrlManager(options.p2pMediaLoader.redundancyBaseUrls)
-
- const p2pMediaLoader: P2PMediaLoaderPluginOptions = {
- redundancyUrlManager,
- type: 'application/x-mpegURL',
- startTime: commonOptions.startTime,
- src: p2pMediaLoaderOptions.playlistUrl
- }
-
- let consumeOnly = false
- // FIXME: typings
- if (navigator && (navigator as any).connection && (navigator as any).connection.type === 'cellular') {
- console.log('We are on a cellular connection: disabling seeding.')
- consumeOnly = true
- }
-
- const p2pMediaLoaderConfig = {
- loader: {
- trackerAnnounce,
- segmentValidator: segmentValidatorFactory(options.p2pMediaLoader.segmentsSha256Url),
- rtcConfig: getRtcConfig(),
- requiredSegmentsPriority: 5,
- segmentUrlBuilder: segmentUrlBuilderFactory(redundancyUrlManager),
- useP2P: getStoredP2PEnabled(),
- consumeOnly
- },
- segments: {
- swarmId: p2pMediaLoaderOptions.playlistUrl