diff --git a/client/src/assets/player/webtorrent/webtorrent-plugin.ts b/client/src/assets/player/webtorrent/webtorrent-plugin.ts index a464f02d5..1a1cd7f1a 100644 --- a/client/src/assets/player/webtorrent/webtorrent-plugin.ts +++ b/client/src/assets/player/webtorrent/webtorrent-plugin.ts @@ -178,7 +178,7 @@ class WebTorrentPlugin extends Plugin { this.selectAppropriateResolution(true) } - updateResolution (resolutionId: number, delay = 0) { + updateEngineResolution (resolutionId: number, delay = 0) { // Remember player state const currentTime = this.player.currentTime() const isPaused = this.player.paused() @@ -236,6 +236,22 @@ class WebTorrentPlugin extends Plugin { return this.currentVideoFile } + changeQuality (id: number) { + if (id === -1) { + if (this.autoResolutionPossible === true) { + this.autoResolution = true + + this.selectAppropriateResolution(false) + } + + return + } + + this.autoResolution = false + this.updateEngineResolution(id) + this.selectAppropriateResolution(false) + } + private addTorrent ( magnetOrTorrentUrl: string, previousVideoFile: VideoFile, @@ -458,7 +474,7 @@ class WebTorrentPlugin extends Plugin { } if (changeResolution === true) { - this.updateResolution(file.resolution.id, changeResolutionDelay) + this.updateEngineResolution(file.resolution.id, changeResolutionDelay) // Wait some seconds in observation of our new resolution this.isAutoResolutionObservation = true @@ -598,14 +614,14 @@ class WebTorrentPlugin extends Plugin { label: this.buildQualityLabel(file), height: file.resolution.id, selected: false, - selectCallback: () => this.qualitySwitchCallback(file.resolution.id) + selectCallback: () => this.changeQuality(file.resolution.id) })) resolutions.push({ id: -1, label: this.player.localize('Auto'), selected: true, - selectCallback: () => this.qualitySwitchCallback(-1) + selectCallback: () => this.changeQuality(-1) }) this.player.peertubeResolutions().add(resolutions) @@ -621,22 +637,6 @@ class WebTorrentPlugin extends Plugin { return label } - private qualitySwitchCallback (id: number) { - if (id === -1) { - if (this.autoResolutionPossible === true) { - this.autoResolution = true - - this.selectAppropriateResolution(false) - } - - return - } - - this.autoResolution = false - this.updateResolution(id) - this.selectAppropriateResolution(false) - } - private selectAppropriateResolution (byEngine: boolean) { const resolution = this.autoResolution ? -1 diff --git a/client/src/standalone/videos/embed-api.ts b/client/src/standalone/videos/embed-api.ts index 8443cb7e9..a28aeeaef 100644 --- a/client/src/standalone/videos/embed-api.ts +++ b/client/src/standalone/videos/embed-api.ts @@ -64,19 +64,12 @@ export class PeerTubeEmbedApi { if (this.isWebtorrent()) { if (resolutionId === -1 && this.embed.player.webtorrent().isAutoResolutionPossible() === false) return - // Auto resolution - if (resolutionId === -1) { - this.embed.player.webtorrent().enableAutoResolution() - return - } - - this.embed.player.webtorrent().disableAutoResolution() - this.embed.player.webtorrent().updateResolution(resolutionId) + this.embed.player.webtorrent().changeQuality(resolutionId) return } - this.embed.player.p2pMediaLoader().getHLSJS().nextLevel = resolutionId + this.embed.player.p2pMediaLoader().getHLSJS().currentLevel = resolutionId } private getCaptions (): PeerTubeTextTrack[] { @@ -142,6 +135,8 @@ export class PeerTubeEmbedApi { this.embed.player.peertubeResolutions().on('resolutionsAdded', () => this.loadResolutions()) this.embed.player.peertubeResolutions().on('resolutionChanged', () => this.loadResolutions()) + this.loadResolutions() + this.embed.player.on('volumechange', () => { this.channel.notify({ method: 'volumeChange', @@ -150,37 +145,11 @@ export class PeerTubeEmbedApi { }) } - private loadWebTorrentResolutions () { - this.resolutions = [] - - const currentResolutionId = this.embed.player.webtorrent().getCurrentResolutionId() - - for (const videoFile of this.embed.player.webtorrent().videoFiles) { - let label = videoFile.resolution.label - if (videoFile.fps && videoFile.fps >= 50) { - label += videoFile.fps - } - - this.resolutions.push({ - id: videoFile.resolution.id, - label, - src: videoFile.magnetUri, - active: videoFile.resolution.id === currentResolutionId, - height: videoFile.resolution.id - }) - } - - this.channel.notify({ - method: 'resolutionUpdate', - params: this.resolutions - }) - } - private loadResolutions () { this.resolutions = this.embed.player.peertubeResolutions().getResolutions() .map(r => ({ id: r.id, - label: r.height + 'p', + label: r.label, active: r.selected, width: r.width, height: r.height diff --git a/client/src/standalone/videos/test-embed.ts b/client/src/standalone/videos/test-embed.ts index 301c95d7b..7213cbf8b 100644 --- a/client/src/standalone/videos/test-embed.ts +++ b/client/src/standalone/videos/test-embed.ts @@ -84,8 +84,6 @@ window.addEventListener('load', async () => { captionEl.innerHTML = '' captions.forEach(c => { - console.log(c) - if (c.mode === 'showing') { const itemEl = document.createElement('strong') itemEl.innerText = `${c.label} (active)` diff --git a/server/tools/peertube.ts b/server/tools/peertube.ts index 34152bd13..9e07640f0 100644 --- a/server/tools/peertube.ts +++ b/server/tools/peertube.ts @@ -43,7 +43,7 @@ if (!process.argv.slice(2).length) { / / -" _/"/ / | ._\\\\ |\\ |_.".-" / / | __\\)|)|),/|_." _,." - / \_." " ") | ).-""---''-- + / \\_." " ") | ).-""---''-- ( "/.""7__-""'' | " ."._--._ \\ \\ (_ __ "" ".,_