aboutsummaryrefslogtreecommitdiffhomepage
path: root/client/src/standalone/videos/embed-api.ts
diff options
context:
space:
mode:
Diffstat (limited to 'client/src/standalone/videos/embed-api.ts')
-rw-r--r--client/src/standalone/videos/embed-api.ts74
1 files changed, 14 insertions, 60 deletions
diff --git a/client/src/standalone/videos/embed-api.ts b/client/src/standalone/videos/embed-api.ts
index b5c9da431..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 {
64 if (this.isWebtorrent()) { 64 if (this.isWebtorrent()) {
65 if (resolutionId === -1 && this.embed.player.webtorrent().isAutoResolutionPossible() === false) return 65 if (resolutionId === -1 && this.embed.player.webtorrent().isAutoResolutionPossible() === false) return
66 66
67 // Auto resolution 67 this.embed.player.webtorrent().changeQuality(resolutionId)
68 if (resolutionId === -1) {
69 this.embed.player.webtorrent().enableAutoResolution()
70 return
71 }
72
73 this.embed.player.webtorrent().disableAutoResolution()
74 this.embed.player.webtorrent().updateResolution(resolutionId)
75 68
76 return 69 return
77 } 70 }
78 71
79 this.embed.player.p2pMediaLoader().getHLSJS().nextLevel = resolutionId 72 this.embed.player.p2pMediaLoader().getHLSJS().currentLevel = resolutionId
80 } 73 }
81 74
82 private getCaptions (): PeerTubeTextTrack[] { 75 private getCaptions (): PeerTubeTextTrack[] {
@@ -139,15 +132,10 @@ export class PeerTubeEmbedApi {
139 }) 132 })
140 133
141 // PeerTube specific capabilities 134 // PeerTube specific capabilities
142 if (this.isWebtorrent()) { 135 this.embed.player.peertubeResolutions().on('resolutionsAdded', () => this.loadResolutions())
143 this.embed.player.webtorrent().on('autoResolutionUpdate', () => this.loadWebTorrentResolutions()) 136 this.embed.player.peertubeResolutions().on('resolutionChanged', () => this.loadResolutions())
144 this.embed.player.webtorrent().on('videoFileUpdate', () => this.loadWebTorrentResolutions())
145 137
146 this.loadWebTorrentResolutions() 138 this.loadResolutions()
147 } else {
148 this.embed.player.p2pMediaLoader().on('resolutionChange', () => this.loadP2PMediaLoaderResolutions())
149 this.embed.player.p2pMediaLoader().on('resolutionsLoaded', () => this.loadP2PMediaLoaderResolutions())
150 }
151 139
152 this.embed.player.on('volumechange', () => { 140 this.embed.player.on('volumechange', () => {
153 this.channel.notify({ 141 this.channel.notify({
@@ -157,49 +145,15 @@ export class PeerTubeEmbedApi {
157 }) 145 })
158 } 146 }
159 147
160 private loadWebTorrentResolutions () { 148 private loadResolutions () {
161 this.resolutions = [] 149 this.resolutions = this.embed.player.peertubeResolutions().getResolutions()
162 150 .map(r => ({
163 const currentResolutionId = this.embed.player.webtorrent().getCurrentResolutionId() 151 id: r.id,
164 152 label: r.label,
165 for (const videoFile of this.embed.player.webtorrent().videoFiles) { 153 active: r.selected,
166 let label = videoFile.resolution.label 154 width: r.width,
167 if (videoFile.fps && videoFile.fps >= 50) { 155 height: r.height
168 label += videoFile.fps 156 }))
169 }
170
171 this.resolutions.push({
172 id: videoFile.resolution.id,
173 label,
174 src: videoFile.magnetUri,
175 active: videoFile.resolution.id === currentResolutionId,
176 height: videoFile.resolution.id
177 })
178 }
179
180 this.channel.notify({
181 method: 'resolutionUpdate',
182 params: this.resolutions
183 })
184 }
185
186 private loadP2PMediaLoaderResolutions () {
187 this.resolutions = []
188
189 const qualityLevels = this.embed.player.qualityLevels()
190 const currentResolutionId = this.embed.player.qualityLevels().selectedIndex
191
192 for (let i = 0; i < qualityLevels.length; i++) {
193 const level = qualityLevels[i]
194
195 this.resolutions.push({
196 id: level.id,
197 label: level.height + 'p',
198 active: level.id === currentResolutionId,
199 width: level.width,
200 height: level.height
201 })
202 }
203 157
204 this.channel.notify({ 158 this.channel.notify({
205 method: 'resolutionUpdate', 159 method: 'resolutionUpdate',