I recently noticed that Wikipedia has starting using a P2P based
system for distributing video, and since I am working on a similar
system I contacted Michael Dale who suggested that I send an email to
this list regarding this.
The most simple way to describe the system is that it is conceptually
very similar to HTTP with P2P support; the protocol is essentially
HTTP with additional commands to handle P2P operations.
Files are stored on a server that also keeps track of other hosts
where all or parts of the content can be found. Before downloading a
file, clients will contact the server to obtain general file
information, such as file and block size. Files are divided into
blocks and clients request a list of hosts where the blocks they want
to retrieve can be found. The list might contain only a fixed set of
addresses (such as that of the server and any mirrors), or it can
include the addresses of other clients that have retrieved the blocks
previously. Clients attempt to automatically determine the best hosts
from the list to retrieve the content from and later report successful
block downloads to the server.
The system also supports caches, similar to web caches, to reduce
redundant network traffic.
More information can be found here: http://www.inet.no/shepherd/p2pd/
The software was previously extensively tested on PlanetLab, but now
needs more testing after a major restructuring of the code. It also
needs to be ported to Windows.
It is in other words not yet ready for production usage, but it would
be interesting to discuss potential challenges with e.g., browser
integration when a P2P-based protocol is used for video streaming. Not
only will the protocol most likely not be directly supported by
browsers, but to get the most benefit from a P2P system users should
ideally continue to share the content they have downloaded after
having finished watching it. This will require some kind of server
process to continue running, perhaps independently of the browser.
Especially for infrequently accessed video files this would likely
have an impact on the degree to which using a P2P system will reduce
the server load.
The following page has links to a few documents that describe various
usage scenarios and some simple ways of integrating p2pd with a
Any thoughts on these integration issues from the perspective of
I'm going to stream a conference, i'm using pure HTML5 video-tag for
now (with cortado fallback), but I'm looking into using mwembed or a
similar player if it can provide more features and niceties.
One requirement of this particular conference is that captioning
(subtitles) is present.
I'm thinking about using COMET for this, so ajax server-side push
messages, and built a small website for the translator to sit and type
in the text.
Has anyone else looked into this? Obviously, synchronization is a huge
problem, and that has been fixed in the spec, but none of the browsers
has implemented it, so everything will be horribly out of sync, but
sync is no requirement (but very nice of course).
Also, as an aside, it'd be nice to have a chat, where people watching
the stream can chat, and maybe get Twitter and Identica-messages into
the chat box when they arrive. With the comet approach this should be
Odin Hørthe Omdal <odin.omdal(a)gmail.com>