add autoplay audio if possible
This commit is contained in:
parent
50e5483661
commit
217cc451ea
@ -229,7 +229,6 @@
|
|||||||
private observer = new ResizeObserver(this.onResize.bind(this))
|
private observer = new ResizeObserver(this.onResize.bind(this))
|
||||||
private focused = false
|
private focused = false
|
||||||
private fullscreen = false
|
private fullscreen = false
|
||||||
private startsMuted = true
|
|
||||||
private mutedOverlay = true
|
private mutedOverlay = true
|
||||||
|
|
||||||
get admin() {
|
get admin() {
|
||||||
@ -361,7 +360,6 @@
|
|||||||
onMutedChanged(muted: boolean) {
|
onMutedChanged(muted: boolean) {
|
||||||
if (this._video && this._video.muted != muted) {
|
if (this._video && this._video.muted != muted) {
|
||||||
this._video.muted = muted
|
this._video.muted = muted
|
||||||
this.startsMuted = muted
|
|
||||||
|
|
||||||
if (!muted) {
|
if (!muted) {
|
||||||
this.mutedOverlay = false
|
this.mutedOverlay = false
|
||||||
@ -391,9 +389,21 @@
|
|||||||
// would be thinking we're playing when we're not
|
// would be thinking we're playing when we're not
|
||||||
try {
|
try {
|
||||||
await this._video.play()
|
await this._video.play()
|
||||||
|
} catch (err: any) {
|
||||||
|
if (!this._video.muted ) {
|
||||||
|
// video.play() can fail if audio is set due restrictive browsers autoplay policy
|
||||||
|
// retry with muted audio
|
||||||
|
try {
|
||||||
|
this.$accessor.video.setMuted(true)
|
||||||
|
this._video.muted = true
|
||||||
|
await this._video.play()
|
||||||
} catch (err: any) {
|
} catch (err: any) {
|
||||||
this.$accessor.video.pause()
|
this.$accessor.video.pause()
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
this.$accessor.video.pause()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this._video && !this._video.paused && !playing) {
|
if (this._video && !this._video.paused && !playing) {
|
||||||
@ -431,10 +441,6 @@
|
|||||||
this._video.addEventListener('canplaythrough', () => {
|
this._video.addEventListener('canplaythrough', () => {
|
||||||
this.$accessor.video.setPlayable(true)
|
this.$accessor.video.setPlayable(true)
|
||||||
if (this.autoplay) {
|
if (this.autoplay) {
|
||||||
// start as muted due to restrictive browsers autoplay policy
|
|
||||||
if (this.startsMuted && (!document.hasFocus() || !this.$accessor.active)) {
|
|
||||||
this.$accessor.video.setMuted(true)
|
|
||||||
}
|
|
||||||
|
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
this.$accessor.video.play()
|
this.$accessor.video.play()
|
||||||
|
Reference in New Issue
Block a user