User Tools

Site Tools


servio_plugins

This is an old revision of the document!


Serviio Plugins

Serviio plugins provide access to online sources such as Youtube or Regional Catchup TV services (e.g. BBC Iplayer). A DLNA client will be able to browse these streams in a similar fashion to local movies and music.

This feature was made available as part of Serviio 0.6, the plugins plugins announcement page describes the feature in some detail.

Serviio doesn't include any plugins as part of the install but you can…

Currently the plugins mechanism only works with online sources that expose their content as RSS / Atom feeds. Note some feeds that link directly to media require no plugin at all!

Plugins help Serviio locate the exact location of the media streams as the feed often links to html pages rather than the stream.

Installation

 1. Download the plugin
 2. Copy the plugin to the plugins folder
 3. Configure Serviio with at least one url to an RSS feed.  This is done using the serviio console.

After up to 5 mins the streams should be available to view. On the DLNA client look for a new folder called “Online Sources”

Development

Read the Guide to plugin development

Online content is usually served via http or rtmp protocol. The former is very easy to consume. The latter is mostly used by Adobe Flash servers and used in many online video services and FFmpeg compiled with libRTMP is necessary for playback. Some rtmp streams require swf verification (not implementing that usually means the stream is cut after a period of time, like 1 minute).

Feed item URLs can expire with time, if that is the case you will have to provide the expiry date so that Serviio can re-run the URL extraction when that happens and get a valid URL when necessary.

Tips:

  • Look at existing plugins, there may be a plugins that can be adapted with only minor changes
  • The plugins can be largely tested outside of serviio (to speed up development).
    • Look at Youtube.groovy's main method, this acts like a unit test.
      • test1: does this plugin correctly identifies feeds it can and can't handle
      • test2: when given a link from an rss item, does the plugin correctly determine the media?
  • Once the tests above pass it's time to install the plugin and do some final testing

A plugin can be tested outside of groovy by running:

On Windows:
groovy -cp “C:\Program Files (x86)\Serviio\lib\serviio.jar;C:\Prog
ram Files (x86)\Serviio\lib\slf4j-api.jar;C:\Program Files (x86)\Serviio\lib\slf
4j-log4j12.jar;C:\Program Files (x86)\Serviio\lib\log4j.jar” “C:\Program Files (
x86)\Serviio\plugins\CNN.groovy”

On Linux:
groovy -cp lib/serviio.jar:lib/slf4j-api.jar:lib/slf4j-log4j12.jar:lib/log4j.jar S4c.groovy

And of course you can use the Plugin development forum if you get stuck

Logging

Logging is configured through conf/log4j.xml. You could change the priority of all packages to DEBUG but this is very verbose.

I've found adding the following gives me useful additional info for plugin development:

 <category name="org.serviio.external">
    <priority value="DEBUG"/>
 </category>
 <category name="org.serviio.upnp.webserver">
    <priority value="DEBUG"/>
 </category>
 <category name="org.serviio.renderer">
    <priority value="DEBUG"/>
 </category>
 <category name="org.serviio.delivery">
    <priority value="DEBUG"/>
 </category>
 <category name="org.serviio.library.online">
   <priority value="DEBUG"/>
 </category></note>
servio_plugins.1320449289.txt.gz · Last modified: 2011/11/04 23:28 by zip