Dispatch load events for mp4/mjpeg from go2rtc.

This commit is contained in:
Dermot Duffy
2023-05-14 20:55:31 -07:00
parent 08e74a70ea
commit 9b359b579d
+15 -2
View File
@@ -1,13 +1,13 @@
import { mayHaveAudio } from '../../../utils/audio'; import { mayHaveAudio } from '../../../utils/audio';
import { import {
hideMediaControlsTemporarily, hideMediaControlsTemporarily,
MEDIA_LOAD_CONTROLS_HIDE_SECONDS MEDIA_LOAD_CONTROLS_HIDE_SECONDS,
} from '../../../utils/media'; } from '../../../utils/media';
import { import {
dispatchMediaLoadedEvent, dispatchMediaLoadedEvent,
dispatchMediaPauseEvent, dispatchMediaPauseEvent,
dispatchMediaPlayEvent, dispatchMediaPlayEvent,
dispatchMediaVolumeChangeEvent dispatchMediaVolumeChangeEvent,
} from '../../../utils/media-info'; } from '../../../utils/media-info';
/** /**
@@ -630,9 +630,18 @@ export class VideoRTC extends HTMLElement {
} }
onmjpeg() { onmjpeg() {
let receivedFirstFrame = false;
this.ondata = (data) => { this.ondata = (data) => {
this.video.controls = false; this.video.controls = false;
this.video.poster = 'data:image/jpeg;base64,' + VideoRTC.btoa(data); this.video.poster = 'data:image/jpeg;base64,' + VideoRTC.btoa(data);
if (!receivedFirstFrame) {
receivedFirstFrame = true;
dispatchMediaLoadedEvent(this, this.video, {
player: this.containingPlayer,
});
}
}; };
this.send({ type: 'mjpeg' }); this.send({ type: 'mjpeg' });
@@ -655,6 +664,10 @@ export class VideoRTC extends HTMLElement {
canvas.width = video2.videoWidth; canvas.width = video2.videoWidth;
canvas.height = video2.videoHeight; canvas.height = video2.videoHeight;
context = canvas.getContext('2d'); context = canvas.getContext('2d');
dispatchMediaLoadedEvent(this, video2, {
player: this.containingPlayer,
});
} }
context.drawImage(video2, 0, 0, canvas.width, canvas.height); context.drawImage(video2, 0, 0, canvas.width, canvas.height);