Fixing the vid.ly embed code for my needsMonday, June 13th, 2011
As you may have guessed from my talks and all I am a big fan of Vid.ly, a service that automatically converts uploaded videos to all kind of HTML5 compatible formats on the fly. I met with the owner for a coffee and they are overall good guys! Yesterday I realized though that they broke all my blog posts from the past where I embedded their videos as they changed their embed code!
OK, vid.ly was beta when I used it and I should have read my email but it was annoying nonetheless. I contacted them and we are sorting things out. To recap: Vid.ly converts a video you upload to 13 different formats supporting all browsers, mobile devices and consoles. It creates a single URL that redirects you to the correct format of the video in accordance of the device or the browser used to request it. Awesome!
In the beta program all you had to do to embed a video in HTML5 compliant browsers was this:
<video src="http://vid.ly/3l4e0q?content=video" controls width="500"> <a href="http://vidly.s3.amazonaws.com/3l4e0q/mp4.mp4"> Download “Multimedia on the web” </a> </video>
For some reason though this now sends my Firefox Aurora to the MP4 version which doesn’t work any more. I guess there is just a detection issue of Firefox Aurora. The official embed endorsed by Vid.ly is the following:
<iframe frameborder="0" width="640" height="360" name="vidly-frame" src="http://s.vid.ly/embeded.html?link=2m1w3f&width=640&height=360&autoplay=false"> <a target='_blank' href='http://vid.ly/2m1w3f'> <img src='http://cf.cdn.vid.ly/2m1w3f/poster.jpg' /> </a></iframe>
The embeded.html file always loads a player to play the video that falls back to Flash in Firefox Aurora and Chrome. On Safari and Opera it uses the HTML5 native controls. I want that for all – why load an extra player and Flash when the browser is capable? So instead of using the official player I checked what URLs it generates and put in the URLs by hand:
<video width="500" height="375" controls style="display:block"> <source src="http://cf.cdn.vid.ly/2m1w3f/mp4.mp4" type="video/mp4"> <source src="http://cf.cdn.vid.ly/2m1w3f/webm.webm" type="video/webm"> <source src="http://cf.cdn.vid.ly/2m1w3f/ogv.ogv" type="video/ogg"> <a target='_blank' href='http://vid.ly/2m1w3f'> <img src='http://cf.cdn.vid.ly/2m1w3f/poster.jpg' width="500"> </a> </video>
This is unfortunate, and it seems to be an issue with Aurora detection. The following works fine in Opera and Chrome and Safari.
<video width="640" height="360" controls src="http://vid.ly/3l4e0q?content=video"></video>
I could also use this redirect URL to get formats, f.e. http://vid.ly/3l4e0q?content=video&format=webm gets you the WEBM version.
Detecting the video capabilities of a browser seems to be still quite an annoying thing as you need to do it in JS and not by just reading the user agent on the server. To me, players should never fall back to Flash when the browser is capable of playing it natively – for the sake of accessibility.