Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to tell if a <video> element is currently playing?

I see that the MediaElement interface exposes attributes like paused, seeking, and ended. Missing from the list, however, is playing.

I know there are playing events that fire when an element starts playing, and timeupdate events events periodically while playing, but I'm looking for a way to determine whether a video is playing right now. Is there an easy way to determine this?

The closest I've got is:

!(video.paused || video.ended || video.seeking || video.readyState < video.HAVE_FUTURE_DATA) 
like image 950
Evan Krall Avatar asked Jul 29 '11 18:07

Evan Krall


People also ask

How do you check video is paused or not?

You can use the . paused() method in javascript to check whether a video is playing or not. It will return true if the video is playing and return false if the video is not playing. You can get a video DOM element using its tag name or id.

What is the correct HTML element for playing video?

<video>: The Video Embed element. The <video> HTML element embeds a media player which supports video playback into the document.

What element is used to show a video on a web page?

The HTML <video> element is used to show a video on a web page.


1 Answers

There is not a specific attribute that will reveal whether a MediaElement is currently playing. However, you can deduce this from the state of the other attributes. If:

  • currentTime is greater than zero, and
  • paused is false, and
  • ended is false

then the element is currently playing.

You may also need to check readyState to see if the media stopped due to errors. Maybe something like that:

const isVideoPlaying = video => !!(video.currentTime > 0 && !video.paused && !video.ended && video.readyState > 2); 
like image 93
George Cummins Avatar answered Nov 15 '22 08:11

George Cummins