ended event workarounds

by jib1

HTML

<script src="https://webrtc.github.io/adapter/adapter-latest.js"></script>
<video id="video" width="160" height="120" autoplay></video><br>
<div id="div"></div>

JavaScript

const console = { log: msg => div.innerHTML += msg + "<br>" };

(async () => {
  try {
    video.srcObject = await navigator.mediaDevices.getUserMedia({video: true});
    const track = video.srcObject.getVideoTracks()[0];
    track.onended = () => console.log("ended!");
    await new Promise(r => video.onloadedmetadata = r);
    track.stop();
    track.dispatchEvent(new Event("ended"));
    video.addEventListener("ended", () => console.log("inactive!"));
  } catch(e) {
    console.log(e);
  }
})();