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. der Flo

    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.

    Reply
  2. Sammy

    Great work! Be good if you are able to re-size the height and width via url or something to =]

    Reply
    1. frank Post author

      thanks sammy. resizing will probably not be possible, as the size of the player is the size it has on YouTube itself.

      Reply
  3. busa

    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!

    Reply
  4. busa

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

    Reply
    1. frank Post author

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

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

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

      Reply
  5. Greg

    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?

    Reply
    1. frank Post author

      i’m afraid newtube.js is a pretty old solution, which eventually evolved into the wp youtube lyte plugin for wordpress. if configured to output the html5-compatible version of youtube’s embed code, it does work on ios (tested on the ipad).

      the javascript-file (essentially a newer version of newtube.js) used in that case can be seen at http://plugins.svn.wordpress.org/wp-youtube-lyte/trunk/lyte/lyte-newtube-min.js should be usable standalone as well with some tweaking.

      Reply
      1. frank Post author

        no idea about RIM, buy my android 2.1 htc hero does play the html5-capable version (albeit automatically falling back to the flash-version which works thanks to flash lite). android 2.2 or 2.3 might play the html5-version (with respectively h264 or webm codec).

Leave a Reply

Your email address will not be published. Required fields are marked *