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.
Serviio doesn't include any plugins as part of the install but you can…
From version 0.6.1 Serviio supports plugins for RSS/Atom feeds and other Web Resources. 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.
After up to 5 mins the streams should be available to view. On the DLNA client look for a new folder called “Online Sources”
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. You can also define whether the content is a live stream or static content.
A plugin can be tested outside of groovy by running:
Please make sure the Serviio folder is located in either Program Files or Program Files (x86).
groovy -cp “C:\Program Files (x86)\Serviio\lib\serviio.jar;C:\Program Files (x86)\Serviio\lib\slf4j-api.jar;C:\Program Files (x86)\Serviio\lib\slf4j-log4j12.jar;C:\Program Files (x86)\Serviio\lib\log4j.jar” “C:\Program Files (x86)\Serviio\plugins\CNN.groovy”
I suggest to create a MS-DOS batch file (ex: “ PluginsTest.bat” ) with following content, then drag&drop the groovy over the batch file (%1 variable will be replaced by groovy file path):
@echo off @ set ServiioPath="C:\Program Files (x86)\Serviio" @echo "Testing %1 plugin" %GROOVY_HOME%\bin\groovy.exe -cp "%ServiioPath%\lib\serviio.jar;%ServiioPath%\lib\slf4j-api.jar;%ServiioPath%\lib\slf4j-log4j12.jar;%ServiioPath%\lib\log4j.jar;%ServiioPath%\lib\org.restlet.jar" "%1" rm "If this did not compile, check the ServiioPatch in this file to make sure the Serviio folder is in Program Files (x86) or in Program Files." @pause
From your serviio install folder (eg /usr/bin/serviio-0.6.2) and with a S4c.groovy file installed in plugins:
groovy -cp lib/serviio.jar:lib/slf4j-api.jar:lib/slf4j-log4j12.jar:lib/log4j.jar:lib/org.restlet.jar plugins/S4c.groovy
Or with Java and groovy-all.jar:
java -cp lib/serviio.jar:lib/slf4j-api.jar:lib/slf4j-log4j12.jar:lib/log4j.jar:lib/org.restlet.jar:lib/groovy-all.jar groovy.ui.GroovyMain plugins/S4c.groovy
And of course you can use the Plugin development forum if you get stuck
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>