CableLabs proposed an initial API to the Web and TV Interest Group's Home Network Task Force.

The initial API has been superceded by a new API developed in collaboration with Opera Software.

A proof-of-concept of the latest API was developed as a Java Applet that has been demonstated on Internet Explorer, Firefox, Chrome, Safari and Opera browsers and on Windows, Mac and Linux platforms.The pieces of the proof-of-concept are shown below


This file brings up a sample web page that gives the basic structure for using the home networking API. The page doesn't really do anything. It just provides a framework for a html/css/js web page interface to use the home networking API.


This application uses the home networking API to discover local content (via UPnP and Zeroconf), then allows playback via the HTML5 video tag. Before the application is run, a message will appear asking the user to authorize the Java Applet to run. This applet enables the API, so it must be authorized if the application is to work. Two buttons on the web page call the discovery API for UPnP and Zeroconf, respectively. The first time the buttons are pressed, nothing will be discovered because the process has just been launched. The next time the buttons are pressed, local content services should be available. The bottom display area will display a directory tree that can be navigated by clicking on file folders. Content items can be played by clicking on them. Some content item types will not play in some browsers.

The content will play in the content box at the top of the web page. Normal video transport controls implemented by the video tag are used to control playback.


This web page demonstartes a "three-box" model control point. The web page acts as a remote control. It allows for selection of content from content servers (just like DiscoveryPlayer.html), but also allows for selection of a destination device (e.g. a television) that will play the content. In addition to the discovery buttons for UPnP and Zeroconf, there is also a discovery button for UPnP AVTransport devices (renderers). The top box displays the directory tree for the content services. The drop-down box lists the discovered rendering devices. The "Play," "Pause," and "Stop" buttons control the selected content playing on the currently selected device. Multiple streams can be sent simultaneously to the various rendering devices (one stream per device) and can be controlled individually. The "debug info" box displays some feedback indicating which commands are currently being executed.

Applet Source Code

Zip file with the Java applet source for the API.