posted on Sunday, November 27, 2005 1:29 PM
by
Jonathan Hodgson
Windows Media Encoder and BitTorrent
Microsoft UK recorded the sessions from one of the main rooms at the recent DeveloperDeveloperDeveloper Day community event.
Because the event is for the community and by the community, we don't have huge web hosting and media streaming facilities. So faced with 6 video clips each 550Mb in size, what was the best way to quickly and easily host these for people to download?
Well I decided to experiment using BitTorrent, a peer-to-peer file sharing system. As explained here, What is BitTorrent?, it's a scalable distribution solution where users co-operate and share what they have downloaded with other people who are also downloading or seeding at the same time.
Although peer-to-peer file sharing often gets bad press being associated with illegal use, it is a fanastic way to utilise available bandwidth amongst multiple users who would otherwise saturate the one source of the content. The moment one person has some of the file, they immediately start sharing it with everyone.
To create a .torrent file, you could use either TorrentSpy or Azureus, these tools create a small text file which contents basic information of the original file, hashes of 'chunks' of the file and the tracker location.
The tracker tells clients about the other clients who then communicate directly with each other. So we used a free, legal tracker called Bittorrent Support (unfortunately this site doesn't seem to be available anymore), another which seems popular is Mongo56. BitTorrent uses a range of ports, normally 6881-6889, so a quick router configuration was needed to port-forward these to my desktop PC.
In only 4 days I seeding and transferred over 25Gb of traffic from these 6 video clips to a large number of people, who would have saturated the website hosting if we had hosted all 3Gb of data! That's not counting the other traffic the peers were sharing amongst each other.
However because installing a BitTorrent client isn't as easy as downloading a .wmv file via http, I also looked into re-encoding these large clips into a more compressed format using Windows Media Encoder. I could bring the bit-rate down with no noticeable loss in quality (the screen capture wasn't perfect and already had compression artifacts), meaning the recompressed file sizes were about 100Mb each - but the encoding took about 6 hours to process on each file. So over the week these were generated and then hosted on the site as normal, 600Mb is alot smaller than 3Gb!
Overall I was pleased with the experiment and it kind of had a community feel about sharing the files like that. We'll look at other mechanisms for the future (using Google Video just didn't seem right ;) ) and also other compression settings.
Peer-to-peer technology is here to stay and will become more widespread in legal distribution; you might be using FolderShare to synchronize your own content or a spin-off from Microsoft Research SplitStream for your WindowsUpdate or MSDN subscribers content in the near future.
(We would like to point out that the content we were distributing was free and non-copyright, in no way do we condone illegal distribution of copyright material)