Experiments with HTML5 video and media fragment URI references

URI Query Example

Davy Van Deursen of the W3C Media Fragments working group implemented a demonstration of media fragment URIs using the URI query (?) mechanism on the NinSuna platform. It supports the time and the track dimension. It will return a complete resource for a query such as: http://ninsuna.elis.ugent.be/DownloadServlet/mfwg/fragf2f.ogv?t=2,9&track='ogg_1'.

NinSuna is implemented in Java and is both a HTTP and RTSP server. It supports both MP4 and Ogg files.

The following video is a Ogg video served by NinSuna and allows loading different resources by changing the url given on the <video> element:

Use t=3,9 (in seconds) for a single time interval, ts=2,6;10,15 (in seconds) to combine multiple time intervals, and track='ogg_1' for video track / track='ogg_2' for audio track.

URI Fragment Example: UA mapped byte ranges

Silvia Pfeiffer of the W3C Media Fragments working group implemented a demonstration of media fragment URIs using the URI fragment (#) mechanism and the HTML5 video element's video seeking functionalities using a new URI load() on the video element. It does not support URI queries (?) on the given server and only works with HTTP. It supports only time fragments and Ogg video.

Note: Jumping around on the video's timeline is quite slow, in particular for a reload, because the browser needs to determine the duration of the video. When using oggz-chop on the server, you can add a X-Content-Duration header. In this demo, that has been hard coded into a .htaccess file on the server.

Use temporal addressing only, e.g. t=40 (in seconds) for a jump to the time offset 40s.

URI Fragment Example: server mapped byte ranges

NinSuna also supports URI fragments (#) as requested via HTTP Range requests. It supports the time, the track, and the xyzh dimensions - but not the id dimension. It can return byte ranges of the complete resource for a URI fragment request such as: http://ninsuna.elis.ugent.be/DownloadServlet/mfwg/fragf2f.ogv#t=2,9&track='ogg_1'.

The following video is a Ogg video served by NinSuna and allows loading different fragments of the resource by changing the url given on the <video> element:

For this demo, use temporal addressing only, e.g. t=40,60 (in seconds) for a jump to the time offset 40s and loading/playback till 60s.

Note: The demo works best in Firefox version >= 3.5, but also in the latest experimental releases of Safari (with XiphQT installed), Opera and Chrome. It will not work in IE.

Note: The demo only takes time in float format for seconds - no other parsing or even error handling has been implemented yet.

Thanks to the Orange Open Movie Team for the Creative Commons licensed "Elephants Dream" movie that was used as an example here, (c) copyright 2006, Blender Foundation / Netherlands Media Art Institute / www.elephantsdream.org.