Embedding YouTube HTML5-video with newTube

With all the discussions about the place of Flash on the ever-evolving web and the excitement following Google’s announcement about YouTube going HTML5, one would almost forget that YouTube is only at the very start of their “open video” endeavor. The limitations of the current implementations are numerous; there’s no OGG (damn), no ads (yeah!) and no embedding either (damn) for example.
After looking into ways to call the YouTube mp4-file from within a Video for Everybody html-block (which is not possible, Google protects raw video-files using what seems to be a session-based hash that has to be provided in the URL), I decided to take another (dirty) approach; faking it!
The solution is entirely javascript-based and is as un-elegant as it is simple; create a html-file with a script include of http://futtta.be/newTube/newTube.js and a div with “id=newTube” containing a link to a YouTube-page and the script automagically takes care of the rest. Check out http://futtta.be/newTube/ to see it in action.
The result is an embedded YouTube player which will display the HTML5-version if you’re running a browser which supports mp4/h264 playback (i.e. a recent version of Chrome or Safari) and if you enrolled in the beta. If either of these preconditions aren’t met, you’ll just see the plain old Flash-player.
Don’t get your hopes up too high,  newTube is probably not as obvious as normal YouTube embeds (for reasons I’ll get into in a follow-up post, when I have some time to spare that is). You’ll have to wait for someone (YouTube, Dailymotion, Vimeo, … are you listening?) to offer real embeddable html5-video (with support for both mp4/h264 and and ogg/theora).
But I did have fun creating the very first html5-capable embedded YouTube-player 😉

13 thoughts on “Embedding YouTube HTML5-video with newTube”

  1. Thank you very much, i included it on my webpage. Great work …
    BTW: i changed it from (div id=”newTube”) to class=”newTube”, so it is possible to have multiple videos on one page.

  2. thank you . great work!
    i was trying to have more than 1 video in a single page,, but the getElementsbyClassName seems not no work.
    i change from id to class in html code and getElementById to getElementsbyClassName in the js but the result is no video!

  3. i add you getElementByClassName-code js and change from id=”newTube” to class=”newTube” but it doesn’t seem to work..

    • ok, different approach: enter your video’s like this and all should be well (you’ll be eating my bandwidth though 😉 ):

      <div class="lyte" id="8ADwPLSFeY8">
      <div class="lyte" id="QQPSMRQnNlU">
      <script src="http://blog.futtta.be/wp-content/plugins/wp-youtube-lyte/lyte/lyte-newtube-min.js">

      feel free to check the code in lyte-newtube-min.js and/or moving it (including the images) to your server 🙂

  4. This is cool. For my purposes, though, I do need to be able to override some of the default behaviors, especially what happens when the video ends (REALLY don’t want to show related videos, and there doesn’t seem to be a way to suppress that on mobile devices with the iframe approach). Any way to detect video ending with this?


Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.