Fix embed api

This commit is contained in:
Chocobozzz 2021-09-10 15:43:15 +02:00
parent 624e42fdf9
commit 89ac282e04
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
4 changed files with 26 additions and 59 deletions

View File

@ -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

View File

@ -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

View File

@ -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)`

View File

@ -43,7 +43,7 @@ if (!process.argv.slice(2).length) {
/ / -" _/"/
/ | ._\\\\ |\\ |_.".-" /
/ | __\\)|)|),/|_." _,."
/ \_." " ") | ).-""---''--
/ \\_." " ") | ).-""---''--
( "/.""7__-""''
| " ."._--._
\\ \\ (_ __ "" ".,_