Category Archives: Video

Whatever happened to DirectShow?

Some time ago, I stopped following the ins and outs of Windows development. I keep wondering if I will ever return, but it hasn’t happened yet.

I still see echos of the work the DirectShow team did in the 1990’s (I’m aware they were building on the work of others), and today I stumbled on this update from Geraint Davies, one of the original architects.

It was nice to learn what happened next – thanks Geraint!

Sign of the times

I finally got caught up with wiring in several recent additions to our main TV. I needed to replace a 5 way ethernet switch with an 8 way, in order to keep them connected. At some point in the last few years, everything entertainment has grown an ethernet socket. Buying the 5 way felt outrageously advanced, only a few years ago!

Sabbatical Progress

I’m now about half way through my sabbatical year, so I thought a progress update would be in order. You may recall that I wanted to see if I could do two things:

  • Integrate more cycling into my habits.
  • Find out if I have the capacity to start my own software company.

Taking the cycling first, I haven’t much. Indeed, I cycle as infrequently as when I had a full time job. An early start has fizzled out, and my main activity has been to watch this year’s Tour de France. However, I got a nice new cycle computer for my birthday last week, so perhaps the trick of ‘new equipment’ will get me going (it has worked in the past).

On the software company front, I have made more progress, although I don’t claim to have a going concern yet! I have formed Transmission Begins, and developed its first product, My Own TV Channel. This is now just starting to be used by people other than me. It’s well received whenever I discuss it, so my current plan is to improve it somewhat and then focus on building a service business around it. The software itself is available for download with an open-source licence.

Beta testers wanted

Inspired by my encounter with the Miro team, and mindful of a need to broaden my skillset beyond client software, I’ve been busy the last few weeks. One comment that was made at the Miro presentation was that most of the channels are hosted over plain http, and make no use of the bittorrent client in Miro. In the pub discussion afterward, we seemed to conclude that bittorrent server software was still too hard to use.

Curious, I started looking around. Most of the bittorrent software I could find was limited in some awkward way – perhaps implemented in a less popular language, or designed to handle the needs of the high traffic pirate content servers rather than small providers of their own content. Two services stood out: Amazon’s S3 service lets you turn any hosted file into a torrent by adding the ‘.torrent’ extension to its URL, and the Miro Team’s Broadcast Machine did all the torrent generation server side, on your own server.

However, Broadcast Machine is no longer supported, and S3 leaves you needing to create an RSS feed. I’ve therefore been busy implementing a bittorrent server that can be hosted at any domain that supports PHP and MySQL. If you can install WordPress, I intend this software to work too. It can create a .torrent for any file already on your server, and then include it in an RSS based channel feed, ideal for clients like Miro.

I’m looking for a few beta testers to see if this software works outside of my own test set up. If you want to host some video content (perhaps you already post them to youtube) on your own domain, and you are familiar with installing software like WordPress there, you would be an ideal candidate. It would also be useful to see how multiple downloads work, so if you already use a torrent aware RSS reader (Miro is one), or would like to, please get in touch.

Feel free to email me (, or post a response to this blog entry.

Incidentally, selling this software is not my business idea. This is BSD licensed open source.

Try Miro today

Other internet video products have frustrating limitations which mean I don’t use them very much: Perhaps the files can only be watched for a few hours; I’m limited to watching programming that can sustain a large technology infrastructure or I have to put up with muddy, low quality, pictures. Often they are just incredibly complex combinations of technologies and applications.

Miro eliminates all these gripes, and I’ve been impressed by the experience of using Miro on my TV over the last six months or so. I’ve tried to write up some of the reasons from a professional perspective over the last few blog entries: Miro respects my own honesty; respects the authoring effort of the people who create video; allows people to publish at low cost and is easy to understand and use.

There’s another reason I like it though – it has become easy for me to download and watch some really high quality video on my TV I wouldn’t see elsewhere. Right now, Miro claims to have more HD content than similar competitors, and it looks great!

I’ve not seen a better way to watch video on the internet.

Miro video player

Blogs make great TV channels.

Miro makes Channels a central part of its user experience, using the same technology as a blog. Having chosen not to offer instant playback video (unlike, say, YouTube) I think that the metaphor of a channel to helps me to understand what I will see after waiting for a download to occur. The TV channel metaphor was easy to grasp, since I’m often asked to subscribe in some way to a channel on my TV. Using the technology behind a blog (syndication feeds like RSS), it makes me consider a flow of new videos in the future, again like a TV channel. By using bandwidth friendly downloading, it can allow a channel to make the promise that the download will be better quality than a live feed.

While it is running, Miro is capable of downloading in the background without impacting the playing video. Therefore it’s often my experience that once I’ve watched one video in a channel, the next has downloaded. By leaving Miro running on the computer attached to my TV, there are also always downlaods that have completed while I’m away. As such, whenever I want to watch channels in Miro, there is something to view. In practice, this means that when I encounter a new channel, I hit the subscribe button, anticipating I will be able to watch it next time I sit in front of the TV.

As an aside, downloading before viewing has another advantage – playback is far more reliable. Most of the internet live feeds I’ve used experience breakup and dropout, making them unpleasant to watch. Miro never suffers from this, which is great.

Whilst I’m generally sceptical about copying the user experience from traditional TV’s and HiFi’s, the channel as blog metaphor seems to work well for Miro.

Broadcasting without a broadcast network

Hosting video (or any large file) on a webserver has a problem – when a moderately large number of clients want to download it simultaneously the overhead of each individual connection can overwhelm the server. The number of people that can be serviced is quite likely to be lower than the audience for any popular file, and waiting an unpredictable time for the server to become free is a frustrating experience for the viewer.

There are several possible solutions to this:

  • Multicast IP
  • Hosting on multiple servers via Mirroring or a Content Delivery Network (CDN)
  • Collaborative (peer-to-peer) downloading

Multicast IP allows the server to share a connection among many clients, but for various reasons is not available on the public internet so needs to be discounted. Hosting on multiple servers is straightforward, but is costly and out of reach of individual authors.

Collaborative downloading allows the author to require each viewer to also act as a server for that file. In this way an ad-hoc multiple server system can be created, with costs split between the author and each viewer. Whether your viewers will be happy with this probably depends on what you charge them, and what they get in return. Most pay-per-month internet connections allow them to make a useful server contribution at no direct financial cost to them.

A popular collaborative download protocol is BitTorrent, which is included in Miro. An author distributing video to Miro (or similar) viewers can therefore choose whether to deploy multiple servers, or rely on viewers to collaborate as downloads occur. The ability to broadcast without investing in a network of servers should make it materially easier to distribute video from small providers on the internet, in a similar way that blogging has brought publishing words within an individuals reach.

Video formats are important for artists not viewers

Most of the widely used media players were historically produced to showcase the videos produced by the creator’s authoring tools. They usually recognise that other formats exist, and provide some means of plugging these in, but very few attempt to include all popular formats at once. This has the effect that sometimes, when pressing play, I’m presented with a dialog that announces the file is in an ‘unsupported’ format. While they often offer to download a suitable player, I want to watch a video, and I’m not disposed to buying and installing software. I may not even have the ability to do so. As such, most players don’t work well with all formats and I have to choose a player to match a format, although I’m not particularly interested in the format a video is in – I just want to watch it.

Artists, on the other hand, care a lot about the formats used, as they create the visual limits the artist must live within as they create video. All practical formats create visual artefacts when they are pushed beyond their intended limits, which artists must carefully avoid. As an example, some are good at cartoon content, while others are better at fast moving sport. Another important point is that encoding in a particular format is an expensive operation – video format owners typically charge a lot more for the encoder than the decoder.

Miro attempts to include as many codecs as possible, and has a catholic taste in video formats. Rather than focussing on any one codec, or graciously permitting me to add more, Miro uses a video playback subsystem – VLC – that attempts to play anything you throw at it. I’m not annoyed by strange dialogs that announce they first need to download a codec, and artists are free to select among a wide range of codecs for the one that best suits the video they create.

Including many codecs is not the only option – services such as YouTube instead provide one codec, and re-encode all incoming video into it. Whilst pragmatic, this is sure to lose quality. Any digitisation of a performance necessarily involves making decisions about what to keep, and what to throw away. Of course, the highest quality options produce staggeringly large files that are essentially impractical to use on today’s computers and networks. Whilst a lot of the decisions about what not to keep can be made by the encoder, not all of them can be automated, and high quality encoding is more of an art than a science. As I’ve noted the encoder creates the visual limits for a file, and all of the major ones have various options that can be tuned by a careful operator.

Any translation between modern video formats will involve a loss of quality, and visual artefacts appearing. Whilst I’m often grateful this means I can see any video at all, I’m not happy about throwing away all the effort of the original artist. There are interesting risks – who’d want to watch a football clip where the ball has disappeared due to the automated translation?

By allowing Miro Channels to contain any format of video, the artists can choose the codecs that best suit their purpose. They can also publish the content they’ve already created, without having to re-encode it, opening low cost access to their whole portfolio.

DRM free video is easy to watch

I’ve claimed that Miro is unusually liberal with the video files it downloads for watching. It treats them just like any other file on my computer. That might sound like a statement of the obvious, but it’s not true of most media files I haven’t created myself. For better or worse, the companies that own the copyright of much of our popular culture have successfully lobbied the companies that make most of our software, and arranged it so that copying media files is hard. This is why music purchased in iTunes can’t be listened to on most mobile phones, and why you cant copy several DVDs onto a laptop’s hard disk for watching on the plane. Whilst this is a reasonable carry over from the distribution of media on DVDs, CD’s and tapes, it is not without problems and it misses the opportunities the new distribution medium offers.

The generic name of this technology is DRM (Digital Rights Management), and it has been well described elsewhere. Founded on the simple premise that copying digital files should be as cumbersome as copying physical objects, it fails in my opinion because normal usage of digital files requires copying people are often unaware of, and the lack of a physical object makes it impossible for customers to easily comprehend the limits they face. So many people have a conception of how their computer works that runs counter to the decisions made in DRM systems that explaining them becomes a hopeless task. Sometimes I can copy it, and sometimes I cant. Sometimes I know I’m copying, and sometimes I don’t. This makes using media files a frustrating experience, and I personally try to avoid adding frustration to my life.

Miro completely lacks any attempt to implement a DRM system. This means that Miro never surprisingly prevents me from doing something reasonable, making using it simpler, and the files it downloads easier to watch.

Miro – Internet TV as it was meant to be

As a matter of professional interest, I pay attention to media playback applications. This isn’t generally hard – most of them are very ‘me too’, and I’ve grown used to spotting the common patterns they tend to follow. There are only so many ways to plug together the various playback technologies needed, and the likes of VLC, Quicktime, Windows Media Player and Flash all share common design decisions. I’ve personally never understood why so many try to ape the complexity of my hi-fi in their UI, but there you go.

Some time ago I stumbled across ‘Democracy Player’, which stood out interestingly. It’s now called Miro, and if you have any desire to watch video on an internet connected computer, I recommend you try it out. Four things caught my eye:

  • The video stands on its own and I can view it where and when I like.
  • The player respects the format the video was made in, without tinkering with it.
  • It can download in a way that allows me to help small producers publish video cheaply.
  • It includes a useful nod to traditional TV to make it easy to use. Simply subscribe to a channel from the on-screen guide!

Having lived without a TV since my move to London in 2000, I decided the time was right last year to buy one – thanks to the Nintendo Wii. A high priority was to get Miro set up to try it out from a technology perspective, so I added a Mac Mini to the rack of equipment under the TV. I didn’t have high hopes for the videos I’d actually find on it, after all they are mostly amateur freebies. It’s clear the technology works, but the big surprise was the actual videos. I should probably make some formal notes about how often I use it, but I’d guess that fifty percent of the time I sit down in front of the TV, I flip over to Miro, and spend some time watching stuff there. Programming on traditional TV is so often filler designed with little more in mind than selling advertising, that in my opinion, the bar for free content to go over in order to be as interesting is actually quite low. It’s not just amateur freebies on Miro though, there’s also a fair few professional videos, and they seem to be paid for in the traditional way – by inserting advertising clips or product placement. Whether they work depends on the quality of combined package, and many work very well.

There’s another key point about Miro – all of the non-video technology it uses appears to be entirely public, so developing players that share the features I’ve outlined as unusual, but perhaps better suit certain usage patterns (full screen from the sofa, perhaps), will be very easy.

I’d like to thank Holmes Wilson for his recent talk here in London at GLLUG. I probably need to apologise for introducing myself in the bar afterward via some crass American stereotypes, but it was great to see such enthusiasm for high quality digital video, and the opportunities the internet offers to both video makers and viewers.

I’d like follow up on the points above, and how they make Miro particularly good at internet TV, over the next few days. Stay tuned!