fix: Fix certain webrtc streams that were not loading correctly (#1766)

This commit is contained in:
Dermot Duffy
2024-12-15 21:16:36 -08:00
committed by GitHub
parent 9f4ddb1e88
commit 092c050a17
+15 -10
View File
@@ -12,6 +12,7 @@
import { css, CSSResultGroup, html, TemplateResult, unsafeCSS } from 'lit'; import { css, CSSResultGroup, html, TemplateResult, unsafeCSS } from 'lit';
import { customElement } from 'lit/decorators.js'; import { customElement } from 'lit/decorators.js';
import { query } from 'lit/decorators/query.js'; import { query } from 'lit/decorators/query.js';
import { ifDefined } from 'lit/directives/if-defined.js';
import { dispatchLiveErrorEvent } from '../components-lib/live/utils/dispatch-live-error.js'; import { dispatchLiveErrorEvent } from '../components-lib/live/utils/dispatch-live-error.js';
import { renderMessage } from '../components/message.js'; import { renderMessage } from '../components/message.js';
import liveHAComponentsStyle from '../scss/live-ha-components.scss'; import liveHAComponentsStyle from '../scss/live-ha-components.scss';
@@ -111,6 +112,7 @@ customElements.whenDefined('ha-web-rtc-player').then(() => {
.muted=${this.muted} .muted=${this.muted}
?playsinline=${this.playsInline} ?playsinline=${this.playsInline}
?controls=${this.controls} ?controls=${this.controls}
poster=${ifDefined(this.posterUrl)}
@loadedmetadata=${() => { @loadedmetadata=${() => {
if (this.controls) { if (this.controls) {
hideMediaControlsTemporarily( hideMediaControlsTemporarily(
@@ -119,16 +121,7 @@ customElements.whenDefined('ha-web-rtc-player').then(() => {
); );
} }
}} }}
@loadeddata=${(ev) => { @loadeddata=${(ev) => this._loadedDataHandler(ev)}
dispatchMediaLoadedEvent(this, ev, {
player: this,
capabilities: {
supportsPause: true,
hasAudio: mayHaveAudio(this._video),
},
technology: ['webrtc'],
});
}}
@volumechange=${() => dispatchMediaVolumeChangeEvent(this)} @volumechange=${() => dispatchMediaVolumeChangeEvent(this)}
@play=${() => dispatchMediaPlayEvent(this)} @play=${() => dispatchMediaPlayEvent(this)}
@pause=${() => dispatchMediaPauseEvent(this)} @pause=${() => dispatchMediaPauseEvent(this)}
@@ -136,6 +129,18 @@ customElements.whenDefined('ha-web-rtc-player').then(() => {
`; `;
} }
private _loadedDataHandler(ev: Event) {
super._loadedData();
dispatchMediaLoadedEvent(this, ev, {
player: this,
capabilities: {
supportsPause: true,
hasAudio: mayHaveAudio(this._video),
},
technology: ['webrtc'],
});
}
static get styles(): CSSResultGroup { static get styles(): CSSResultGroup {
return [ return [
super.styles, super.styles,