JSMpegPlayer.jsx 905 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. import { h } from 'preact';
  2. import { baseUrl } from '../api/baseUrl';
  3. import { useRef, useEffect } from 'preact/hooks';
  4. import JSMpeg from '@cycjimmy/jsmpeg-player';
  5. export default function JSMpegPlayer({ camera }) {
  6. const playerRef = useRef();
  7. const url = `${baseUrl.replace(/^http/, 'ws')}/live/${camera}`
  8. useEffect(() => {
  9. const video = new JSMpeg.VideoElement(
  10. playerRef.current,
  11. url,
  12. {},
  13. {protocols: [], audio: false}
  14. );
  15. const fullscreen = () => {
  16. console.log("fullscreen");
  17. if(video.els.canvas.webkitRequestFullScreen) {
  18. video.els.canvas.webkitRequestFullScreen();
  19. }
  20. else {
  21. video.els.canvas.mozRequestFullScreen();
  22. }
  23. }
  24. video.els.canvas.addEventListener("click",fullscreen)
  25. return () => {
  26. video.destroy();
  27. };
  28. }, [url]);
  29. return (
  30. <div ref={playerRef} class="jsmpeg" />
  31. );
  32. }