inline-video-ready.web.ts 756 B

123456789101112131415161718192021
  1. /**
  2. * Web: is the transcoded mp4 there yet? UNA answers 404 until it is. A cross-origin fetch
  3. * can't read that (no CORS on image_transcoder.php), a detached <video> loading metadata can.
  4. */
  5. export function isInlineVideoReady(src: string): Promise<boolean> {
  6. return new Promise((resolve) => {
  7. const video = document.createElement('video')
  8. const done = (ok: boolean) => {
  9. video.onloadedmetadata = null
  10. video.onerror = null
  11. video.removeAttribute('src')
  12. video.load()
  13. resolve(ok)
  14. }
  15. video.preload = 'metadata'
  16. video.muted = true
  17. video.onloadedmetadata = () => done(true)
  18. video.onerror = () => done(false)
  19. video.src = src
  20. })
  21. }