Category Archives: vquence

Rails and plugins

I’ve come to really love working with Ruby on Rails – it forces a structured approach of Web development upon you which helps enough to get you organised, but doesn’t get in the way of being productive.

I’ve also learnt to search for plugins or gems whenever I need a specific functionality because more often than not somebody has already solved the problem that I am trying to address.

Today I played with Andy Singleton’s GUID plugin (global unique identifier) and found a bug. I haven’t found a way to publish the solution through the rails wiki (I’m really new to the community), so I’m posting it here. I’ve also sent Andy an email, so hopefully the issue will get addressed.

Here is what happend.

I got the plugin working on my development computer and wanted to test it on another machine. However, the plugin gave me the following error message:

#{RAILS_ROOT}/vendor/plugins/guid/lib/uuidtools.rb:235:in `timestamp_create'
#{RAILS_ROOT}/vendor/plugins/guid/lib/uuidtools.rb:225:in `timestamp_create'
#{RAILS_ROOT}/vendor/plugins/guid/lib/usesguid.rb:25:in `after_initialize'

After some digging I found that it uses the MAC address of the computer for seeding the GUID. To query the MAC address, it calls ifconfig (or ipconfig on a Windows machine) – which is fair enough. It has several cases that it goes through. However, the case of my machine was missing and the code did not address a nil return from the get_mac_address function.

My case was simple to solve: my MAC address comes in upper case characters, while the code only tested for lower-case characters. So, I added another parsing condition for my case:

if mac_addresses.size == 0
ifconfig_output = `/sbin/ifconfig | grep HWaddr | cut -c39-`
mac_addresses = ifconfig_output.scan(
Regexp.new("(#{(["[0-9A-F]{2}"] * 6).join(":")})"))
end

The generic problem is harder to solve – and maybe it should not be solved, but fail on the programmer, since he/she is trying to roll out GUID calculation on a machine where the program is unable to calculate a MAC address…..

Hmmm….

New Vquence Website

I’m excited to present the all new http://www.vquence.com/ website.

As you may know, Vquence is the online video startup that Chris Gilbey and I have created over the past months. We now have a great team of people working with us.

We’ve worked hard on our new Web presence to get a nice modern logo and Web design, to produce some good pictures to describe what we actually do, and to give a sneak preview of our technology.

Go check out the video on the front page. It’s a flash player (sorry, not Annodex yet) and has some awesome functionality hidden inside – thanks to Peter Withers, Michael Dale and Jamie Madden. Click on the video slices as they are playing. And notice how all the full videos are hosted on different video hosting sites (sorry to all those hosting providers who missed out – we simply haven’t got enough people working for us yet ;).

Thanks to Julian Frumar and Alister Walters for all the great design work, to Chris Gilbey and Richard McKinnon for the copy, and to Matt Moor and John Ferlito for getting the hosting under control with some cool scripts to be used for future rollouts of our final product.

Have fun!

Video hosting and autoplay

This week, we’ve been working hard towards getting the corporate website for my new company Vquence up. As part of that, we shot videos of most of our key people in an attempt to “eat our own dogfood”: show off our slicecasting technology, which comes as embeddable vquences (video sequences). The idea is to extract slices from a set of videos, collate them together like highlights, and make them clickable – so people can click through to the full length videos.

On our website, we decided to show the vquence with a clickthrough to full-length videos hosted at different video hosting sites, including not just the popular YouTube and Google video sites, but also sites such as Metacafe, Guba, iFilm, blip.tv, Grouper, Gofish, VSocial or DailyMotion.

On click-through, we wanted to have the embedded videos from those hosting sites to start playback directly without enforcing people to make another click on the image. This has turned out as quite a challenge.

Not every video hosting site that supports embedding also supports autoplay. Here’s what I found.

The following sites provide an autoplay parameter for their embed tags (only key components shown in the code):

  • youtube:
    <embed src="http://www.youtube.com/v/xxxxxx&autoplay=1" type="application/x-shockwave-flash" />
  • google video:
    <embed type="application/x-shockwave-flash" src="http://video.google.com/googleplayer.swf?docId=-xxxxxxx&hl=en-AU" FlashVars="autoPlay=true&playerMode=embedded"/>
  • metacafe:
    <embed src="http://www.metacafe.com/fplayer/xxxx/title_yyy.swf?playerVars=autoPlay=yes" type="application/x-shockwave-flash"/>
  • blip.tv:
    <embed src="http://blip.tv/scripts/flash/blipplayer.swf?autoStart=true &file=http://blip.tv/file/get/xxxxxx.flv%3Fsource%3D3" type="application/x-shockwave-flash" />
  • DailyMotion:
    <embed src="http://www.dailymotion.com/flash/flvplayer.swf?xxxxxx" flashvars="url=http%3A%2F%2Fwww.dailymotion.com%2Fget%2F14%2F320x240 %2Fflv%2Fxxxx.flv%3Fkey%3Dxxxxxx.flv&duration=68&autoStart=1" type="application/x-shockwave-flash"/>
  • Grouper:
    <embed src="http://grouper.com/mtg/mtgPlayer.swf?v=1.7" FlashVars="ap=1&mu=0&rf=-1&vfver=8&extid=-1&extsite=-1&ml=xxxxxx" type="application/x-shockwave-flash"/>
  • GoFish:
    <embed src="http://www.gofish.com/player/fwplayer.swf" type="application/x-shockwave-flash" FlashVars="&loc=blog&gf=true&ns=false&fs=false&gfid=xxxxxx&c=grey
    &autoPlay=true&getAd=false&wm=false&ct=true&tb=false&svr=www.gofish.com:80">
  • VSocial:
    <embed src="http://static.vsocial.com/flash/ups.swf?d=yyyy&a=1&s=xxxxxx"/> – be warned though that their player takes a third for menu stuff

I know that both Guba and iFilm have an autoplay feature since the video on their websites plays without the need for an additional activation, but I couldn’t find out what parameters were needed or which other flash player I would need to use.

Revver simply refuses to support this feature reasoning that nobody would want a video to play back automatically without the need for an interaction. Guys – come on! Nowadays videos live on their own Web page. A person that is navigating to that Webpage and knows what they are navigating to shouldn’t really have to jump an additional hurdle just to get your videos to play!

BTW: I was unable to manage to upload a video to Metacafe from my Mac inside Firefox, although I tried for 3 days. 🙁
– worked now!

I do not claim to have tested all the video hosting sites out there. But these are a good selection and my current state of experience.

Ah yes: go and enjoy our new site – http://www.vquence.com/ – and don’t forget to check out the videos at the bottom of the front page.

$1.65bn for YouTube – will Google now finally offer video search?

No, Google do not offer a video search service, don’t be blinded. Time and time again I have to explain that Google’s video.google.com is a video hosting service, not a horizontal video search service. They do not follow their own mission with Google video, but offer search only on their own collection of content, i.e. they offer vertical search and not search on “the world’s” video, which is what horizontal search is about.

And now they have acquired YouTube – btw: this was a really cheap deal, too, through a masterly financial stragey. But I diverge – I am not a market analyst, but a technologist. And I want to share what I see as an immense opportunity for Google in this deal.

Let me go back in history: Google started video.google.com because there was not enough video content on the Web and thus a dedicated video search engine didn’t make much sense. So they ran a dual strategy to get content on the Web: they made it simple for consumers to upload their content thus starting the wave of consumer-created (and consumer-mediated) content. And they mediated content from the old media industry to go online. This instantly put Google into the video hosting business.

Fast-forward a year and you find YouTube did a better job at providing consumers with a video hosting service. So, Google buys them. With what intention? To have a second video hosting business? Maybe… but to be quite honest, I have a different take on this.

This is the chance for Google to turn the Google brand away from video hosting and back to horizontal video search. With YouTube they have a channel to move their existing corporate customers and their upload users to a more successful hosting site. Then they can get their core brand back into search.

Bah – gotta get back to coding, so our company is ready for when the time comes!

Best practice in Web video publication

I’ve spent a lot of time recently analysing video on the Web.

YouTube and Google Video introduced what seems to be the standard now: videos get published on what I like to call a “host page”. This is one webpage completely dedicated to this video.

Why are there still so many videos out there that get published through a hyperlink behind two words of text instead of giving them proper recognition?

Think about it: the creation of a video usually costs a lot of effort and when it’s done, it needs a proper presentation. Hiding it behind a hyperlink is like putting your blog up on an ftp server in pdf format.

So, what information has to be on a video host page?

Best practice is to have an embeddable video player on the host page that displays a keyframe.

Other information that typically resides on a host page is a short textual description of the video, its duration, who published it, who created it, license rights (check out Creative Commons for this), tags & category attributions, comments from viewers, number of page views, and a description of how to use this thing in other environments, such as how to embed it in blogs or how to download it to the iPod or PSP.

We don’t need Google or YouTube to do this for us. We can publish video in that way ourselves. Well, maybe apart from the bit about transcoding to the iPod or PSP. Incidentally, is there any open source SW around to do that?

We can transcode our videos to Ogg Theora using ffmpeg2theora and then publish it with the embedded java theora player Cortado. Then we just need to create our own host page in html.

All we need now are a few more plugins for common Web content management systems like WordPress or drupal to simplify this process even more. Here’s your Friday afternoon challenge. 🙂

Making your video discoverable

Videos will be everywhere on the web! Yes, cope with it: soon the majority of videos won’t be with some hosting site like youtube, but it will reside on our private servers, on company servers, actually on any and all web servers. And there will be interesting stuff, but it will be hard to find.

Yes, history will repeat itself again and finding those videos on the Web that satisfy our need – be it for information or entertainment – will be a nightmare. Why? Because google’s pagerank (and many other ranking algorithms) rely on Web pages pointing to the videos to give them a higher rank. However, the way in which videos are currently published is through embedding them into Web pages (let’s call such a page the “embedding page”). Thus, the link analysis will actually return the pagerank for the embedding page – but not for the video itself!

Now, if the embedding page can actually be seen as representative for the video because the only reason that the webpage exists is to publish the video and its annotations, then the pagerank for the embedding page is actually the same as the pagerank for the video. This is the case for google video and for youtube and for many other hosting sites.

However, you and I mostly publish our videos in blogs or on Web pages that describe more than just the video – some will even have several videos embedded. This is where the chaos for a Web search engine for videos begins. And this is where the discoverability of your videos through video search engines ends.

Here is the solution.

Just as we do with normal Web pages, we have to introduce SEO (search engine optimisation) for videos. That means, we have to make it easier for the search engines to find out information about our videos, i.e. to index and rank them.

Because videos are binary data, a common Web search engine cannot extract information about this Web resource directly from it (let’s ignore signal analysis and automatic content analysis approaches for the moment). We have to help the search engine.

The solution is to have a text file sitting “next” to the actual video file which contains indexable text about the video. It will have all the annotations, meta data, tags, copyright information and other textual meta information that search engines require to index and rank it better. This text file is an indexable textual representation of the video.

So, whenever a video search engine reaches a video in a crawl, it will check out this text file for its indexing work. If this text file is HTML, then people may link directly to it and it will be included in the pagerank calculations again. If it is a XML file, there should be a simple way to transcode it to HTML, e.g. via a xslt script, so links can go there directly again.

So much for the theory: here comes the practice.

For every video file (and incidentally it would work for audio, too), you should start writing a CMML file and publish it on your Web server together with the original. Here is a xslt script that you can use to transcode CMML to HTML. If you actually use Ogg Theora as your Video publishing format, you can even publish Annodex videos and make direct access to the clips that you defined in CMML and to time offsets possible by using the Apache Annodex module. Try using it in your blog with the external embedding of the Annodex Firefox extension.

When we’ve done this, all that remains is to encourage the video search engines to exploit the CMML data in their crawls. 🙂