Fallback to built in HLS if possible

This commit is contained in:
Chocobozzz 2020-07-20 10:13:56 +02:00
parent 1dee8d68cb
commit 69a019968e
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
1 changed files with 34 additions and 22 deletions

View File

@ -43,20 +43,24 @@ class P2pMediaLoaderPlugin extends Plugin {
// FIXME: typings https://github.com/Microsoft/TypeScript/issues/14080
if (!(videojs as any).Html5Hlsjs) {
const message = 'HLS.js does not seem to be supported.'
console.warn(message)
console.warn('HLS.js does not seem to be supported. Try to fallback to built in HLS.')
player.ready(() => player.trigger('error', new Error(message)))
return
if (!player.canPlayType('application/vnd.apple.mpegurl')) {
const message = 'Cannot fallback to built-in HLS'
console.warn(message)
player.ready(() => player.trigger('error', new Error(message)))
return
}
} else {
// FIXME: typings https://github.com/Microsoft/TypeScript/issues/14080
(videojs as any).Html5Hlsjs.addHook('beforeinitialize', (videojsPlayer: any, hlsjs: any) => {
this.hlsjs = hlsjs
})
initVideoJsContribHlsJsPlayer(player)
}
// FIXME: typings https://github.com/Microsoft/TypeScript/issues/14080
(videojs as any).Html5Hlsjs.addHook('beforeinitialize', (videojsPlayer: any, hlsjs: any) => {
this.hlsjs = hlsjs
})
initVideoJsContribHlsJsPlayer(player)
this.startTime = timeToInt(options.startTime)
player.src({
@ -64,11 +68,13 @@ class P2pMediaLoaderPlugin extends Plugin {
src: options.src
})
player.one('play', () => {
player.addClass('vjs-has-big-play-button-clicked')
})
player.ready(() => {
this.initializeCore()
player.ready(() => this.initialize())
if ((videojs as any).Html5Hlsjs) {
this.initializePlugin()
}
})
}
dispose () {
@ -82,7 +88,19 @@ class P2pMediaLoaderPlugin extends Plugin {
return this.hlsjs
}
private initialize () {
private initializeCore () {
this.player.one('play', () => {
this.player.addClass('vjs-has-big-play-button-clicked')
})
this.player.one('canplay', () => {
if (this.startTime) {
this.player.currentTime(this.startTime)
}
})
}
private initializePlugin () {
initHlsJsPlayer(this.hlsjs)
// FIXME: typings
@ -102,12 +120,6 @@ class P2pMediaLoaderPlugin extends Plugin {
this.statsP2PBytes.numPeers = 1 + this.options.redundancyUrlManager.countBaseUrls()
this.runStats()
this.player.one('canplay', () => {
if (this.startTime) {
this.player.currentTime(this.startTime)
}
})
}
private runStats () {