Hello everybody,
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
browser: http://www.inet.no/shepherd/p2pd/docs.html
Any thoughts on these integration issues from the perspective of
Wikipedia?
Regards,
Karl-Andre' Skevik
Hey,
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
quite doable.
--
Beste helsing,
Odin Hørthe Omdal <odin.omdal(a)gmail.com>
http://velmont.no
Dear SMIL and WikiMedia folks, I wanted to bring this to your attention:
The HTML5-driven Wikimedia "sequencer" - a template-based online video
editor - stores the EDL (Edit Decision List) in the SMIL format.
There's a recent introductory blog post [1] about it.
You can see an example for yourself by opening this page [2] with
Firefox 4 (preferably), by clicking on "Edit Sequence", then by
clicking on the "View" button in the upper-left corner, followed by
"Sequence SMIL XML" from the popup menu. The SMIL 3.0 source will be
revealed. For convenience, I quoted the XML source at the bottom of
this email.
This appears to be a custom version of what I would normally qualify
as SMIL, at least (as far as I can tell) not something based on the
normative Scalability Framework [3], nor based on an existing subset
of SMIL (see Modularization and Profiling [4]).
For example, the format overrides the normal SMIL namespace for "img"
and "ref" with xmlns="http://www.w3.org/1999/xhtml", although I'm a
bit confused as I can't see any XHTML constructs there. There's a
combination of XML attribute name/value pairs coming from SMIL a well
as from some domain-specific markup (none of which seem to belong to
the specified namespace). The format also injects arbitrary parameters
into media objects using nested "param" tags (and "name" + "value"
pairs), thereby adding another layer of extensibility (why mix native
attributes and the param element ?).
I am wondering whether there is scope in this "lab" project to discuss
the EDL syntax ? It would be great if the final format was compatible
with SMIL user agents (playback engines and production tools). I am
sure that simple changes could be made to "clean-up" the namespaces
and to define an XML schema that draws the boundaries between SMIL and
domain-specific markup.
The statement from the blog "The SMIL spec has evolved over time and
has become famous for being very large and complicated to implement in
a real world player" may be true for the specification as a whole, but
not for a domain-specific subset ;) Just look at SVG or DAISY as
prime examples of standards that integrate only the strictly-necessary
parts of SMIL.
The claim that "Another nice feature of SMIL xml is that it is
extensible for custom components" may be true indeed, but this is not
quite achieved with the proposed format, as it doesn't conform to the
extensibility guidelines.
I am looking forward to hearing your thoughts. Feel free to correct me
if I got something wrong ! :)
I assume the "public-smil" and "wikivideo-l" mailing lists are most
appropriate to continue this discussion, but I also CC'ed the more
mature WikiMedia technical lists to ensure this message reaches "whom
it may concern" :)
[1]
http://techblog.wikimedia.org/2010/09/video-labs-kaltura-html5-sequencer-av…
[2]
http://commons.wikimedia.org/w/index.php?title=Sequence:Cats&withJS=MediaWi…
[3]
http://www.w3.org/TR/SMIL3/smil-scalabilityFramework.html
[4]
http://www.w3.org/TR/SMIL/smil-modules.html
----- SNIP ----8<---------
<?xml version="1.0" encoding="UTF-8"?>
<smil baseProfile="Language" version="3.0" xmlns="http://www.w3.org/ns/SMIL
">
<head>
<meta name="title" content="Cats"/>
<transition xmlns="http://www.w3.org/1999/xhtml"
id="REF_5_fadeFromColor" type="fade" dur="0:02" fadeColor="#000000"
subtype="fadeFromColor">
</transition>
</head>
<body id="seq_0">
<par id="par_1">
<seq title="Video Track 1" tracktype="video"
id="seq_2">
<ref xmlns="http://www.w3.org/1999/
xhtml" type="application/x-wikitemplate"
apititlekey="Template:SequenceTitleBlackBG" apiprovider="commons"
dur="0:06" id="REF_5" transIn="REF_5_fadeFromColor">
<param name="Title" value="House Catff" />
<param name="SubTitle" value="English House Cat
Article <br> ''Read by DollieLlama'' " />
<param name="Image"
value="File:Olhos_de_um_gato-3.jpg" />
</ref>
<img xmlns="http://www.w3.org/1999/xhtml" dur="0:03"
title="Spielendes Kätzchen" src="http://upload.wikimedia.org/wikipedia/commons/3/33/Spielendes_K%C3%A4tzchen…
" poster="http://upload.wikimedia.org/wikipedia/commons/thumb/3/33/Spielendes_K%C3%A4…
" id="IMG_4" panZoom="0%, 0%, 100%, 100%">
<param name="id" value="3494791" />
<param name="apiTitleKey"
value="File:Spielendes_Kätzchen.JPG" />
</img>
<img xmlns="http://www.w3.org/1999/xhtml" dur="2"
title="Woman with Cat" src="http://upload.wikimedia.org/wikipedia/commons/8/8c/Woman_with_Cat.jpg
" poster="http://upload.wikimedia.org/wikipedia/commons/thumb/8/8c/Woman_with_Cat.jpg…
" id="IMG_0" panZoom="6%, -13%, 170%, 127%">
<param name="id" value="1410943" />
<param name="apiTitleKey"
value="File:Woman_with_Cat.jpg" />
</img>
<img xmlns="http://www.w3.org/1999/xhtml" dur="0:03"
title="Cat and mouse" src="http://upload.wikimedia.org/wikipedia/commons/thumb/8/82/Cat_and_mouse.jpg/…
" poster="http://upload.wikimedia.org/wikipedia/commons/thumb/8/82/Cat_and_mouse.jpg/…
" id="IMG_1" panZoom="0%, -81%, 196%, 147%">
<param name="id" value="6979116" />
<param name="apiTitleKey"
value="File:Cat_and_mouse.jpg" />
</img>
<img xmlns="http://www.w3.org/1999/xhtml" dur="0:05"
title="Ancient Egyptian bronze cat" src="http://upload.wikimedia.org/wikipedia/commons/thumb/2/2f/Ancient_Egyptian_b…
" poster="http://upload.wikimedia.org/wikipedia/commons/thumb/2/2f/Ancient_Egyptian_b…
" id="IMG_5" panZoom="-1%, -35%, 181%, 135%">
<param name="id" value="3804250" />
<param name="apiTitleKey"
value="File:Ancient_Egyptian_bronze_cat.jpg" />
</img>
<img xmlns="http://www.w3.org/1999/xhtml" dur="2"
title="Catstalkprey" src="http://upload.wikimedia.org/wikipedia/commons/thumb/6/6a/Catstalkprey.jpg/8…
" poster="http://upload.wikimedia.org/wikipedia/commons/thumb/6/6a/Catstalkprey.jpg/8…
" id="IMG_2" panZoom="-18%, -5%, 116%, 87%">
<param name="id" value="3820113" />
<param name="apiTitleKey"
value="File:Catstalkprey.jpg" />
</img>
<img xmlns="http://www.w3.org/1999/xhtml" dur="2"
title="Cat&Pigeon" src="http://upload.wikimedia.org/wikipedia/commons/6/6d/Cat%26Pigeon.jpg
" poster="http://upload.wikimedia.org/wikipedia/commons/thumb/6/6d/Cat%26Pigeon.jpg/8…
" id="IMG_6" panZoom="-6%, -10%, 135%, 101%">
<param name="id" value="444674" />
<param name="apiTitleKey"
value="File:Cat&Pigeon.jpg" />
</img>
<img xmlns="http://www.w3.org/1999/xhtml" dur="0:03"
title="Cat1" src="http://upload.wikimedia.org/wikipedia/commons/a/ae/Cat1.jpg
" poster="http://upload.wikimedia.org/wikipedia/commons/thumb/a/ae/Cat1.jpg/80px-Cat1…
" id="IMG_3" panZoom="-1%, -1%, 100%, 100%">
<param name="id" value="2954217" />
<param name="apiTitleKey" value="File:Cat1.jpg" />
</img>
<video xmlns="http://www.w3.org/1999/xhtml"
durationhint="6.5" dur="0:04" title="Cat claws" src="http://upload.wikimedia.org/wikipedia/commons/a/a6/Cat_claws.ogg
" poster="http://upload.wikimedia.org/wikipedia/commons/thumb/a/a6/Cat_claws.ogg/mid-…
" id="VIDEO_7" clipBegin="0:00">
<param name="id" value="532143" />
<param name="apiTitleKey"
value="File:Cat_claws.ogg" />
</video>
<ref xmlns="http://www.w3.org/1999/xhtml"
type="application/x-wikitemplate"
apititlekey="Template:SequenceTitleBlackBG" apiprovider="commons"
dur="2" id="REF_0">
<param name="Title" value="end title" />
</ref>
</seq>
<seq title="Audio track 1" tracktype="audio"
id="seq_3">
<audio xmlns="http://www.w3.org/1999/
xhtml" durationhint="1628.9262585034" dur="0:29" title="En-Cat (part
1)" src="http://upload.wikimedia.org/wikipedia/commons/d/d5/En-Cat_%28part_1%29.ogg
" id="AUDIO_4" clipBegin="1:05">
<param name="id" value="2755934" />
<param name="apiTitleKey" value="File:En-
Cat_(part_1).ogg" />
</audio>
</seq>
</par>
</body>
</smil>
----- SNIP ----8<---------