Disable youtube autoplay if video has been seen - javascript

Is it possible to disable 'autoplay' of an embedded YouTube video if the visitor's seen it already.
My idea is on front page I've got a video which is set to autoplay, but I don't want it to play every time a visitor returns.
Thanks!

Related

how to observe embedded youtube video

I want to embed a youtube video on my own website and I want this youtube video not to be skipped in any way, but not to adjust its speed and to track the time it watches, but I could not find any source.
I tried to use the youtube iframe api, but I can't follow the stats without stopping or starting the youtube video there.
I would suggest that you should first download the video, and then put it onto your site through a <video> tag. The youtube iframe api is designed only for having videos that function exactly like they do on the youtube website, which includes the things you don't want.

How to change youtube's automatically queued autoplay video?

I'm developing a chrome extension that sets a different video to autoplay other than the one youtube queues by default. I searched through the html and replaced all instances of the next queued video with another one, but it didn't work. So I'm stumped as to where else I can search for where this video url is set. Where is this url set?

Why do Youtube and many other video pages play on page load?

There are a lot pages like Youtube starting their videos with sound on load:
https://www.arte.tv/de/videos/091148-000-A/forschung-fake-und-faule-tricks/
Sound should be only allowed after click, whitelisting or if multiple videos on the page have been viewed before. This is not needed here.
What is the difference between these pages and a simple HTML5 Video element using autoplay attribute or Javascript videoElement.play()?
In case you are using Chrome there is another thing which influences if a page can autoplay media or not. It's the Media Engagement Index. It's basically a number which is larger if you used to play media on that particular page before. If it's large enough the page is allowed to autoplay.

Content script for pausing youtube videos

I am currently working on a google chrome extension that features a content script for altering youtube pages. I have done some work with altering the DOM already and all of that works, however, I have been looking for solutions to have the youtube video pause when the page loads.
I initially thought perhaps I could simulate a keystroke as the spacebar pauses youtube videos. I also tried using javascript to pause the video but I don't think it works with Youtube's custom video player.
Don't feel obligated to write any code for this but if someone could point me in the right direction I would be very grateful.
On the main page of a video, the HTML5 video element playing the video has a specific class, so you can target that; and as an HTML5 video element, it has the play() and pause() methods already.
document.querySelectorAll('.html5-main-video').forEach(vid => vid.pause());
That will pause all HTML5 main videos on the page. Helpfully enough, that's the same class used by the little autoplaying video on some channel pages, so it should work for those as well :)
(Don't worry about Flash videos; YouTube hasn't supported those for years now.)

Is it possible to determine if a user finished to see an embedded youtube video with the api?

I need to check if a user has actually seen an embedded youtube video (meaning that he pressed play and saw until the end). Is it possible to do this with the youtube api (javascript)?
Thank you very much
Regards
Using the Youtube API is the most easiest way determining if the user clicked the play button.
For starters check out the Google Youtube Api:
https://developers.google.com/youtube/js_api_reference
You will be needing to use the Swfobject.js to load the video to use the Youtube API controls
on loading the video don't forget to add a listener (addListener)
when the API or the video was loaded you will able to see the state of the videos , here are those:
"-1" - video is ready to play
"1" - the video is playing (it clicked the play button)
"2" - the video is paused
"0" - end of the video
Sample coding on checking the current state of the loaded video:
https://developers.google.com/youtube/js_api_reference#SubscribingEvents
If it is a chromeless YouTube player or if you embedded the video via JW Player, then it is possible.
The chromeless player will strip out the coding and allow you to embed
the YouTube video like javascript, once done, then you can embed a
Google Analytics extension snippet/code to the address of the video
and track the hits that way. Another way is installing JW Player which
allows you to easily track analytics for YouTube videos by
incorporating your Google Analytics UPI.

Categories