<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.videolan.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nhumfrey</id>
	<title>VideoLAN Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.videolan.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nhumfrey"/>
	<link rel="alternate" type="text/html" href="https://wiki.videolan.org/Special:Contributions/Nhumfrey/"/>
	<updated>2026-11-04T18:39:52Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Documentation:Building_Lua_Playlist_Scripts&amp;diff=62194</id>
		<title>Documentation:Building Lua Playlist Scripts</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Documentation:Building_Lua_Playlist_Scripts&amp;diff=62194"/>
		<updated>2023-06-06T10:36:01Z</updated>

		<summary type="html">&lt;p&gt;Nhumfrey: Deleted lua scripts that don&amp;#039;t exist anymore and added hyperlinks to source code&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Example code}}&lt;br /&gt;
{{RightMenu|Documentation TOC}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Starting with version 0.9.0, VLC gives you the possible to implement your own playlist loading modules easily. Such modules can do stuff like:&lt;br /&gt;
* &#039;&#039;URL translation&#039;&#039;: You give it the youtube webpage URL and VLC starts playing the corresponding video;&lt;br /&gt;
* &#039;&#039;Text playlist parsing&#039;&#039;: You use some custom text playlist format.&lt;br /&gt;
&lt;br /&gt;
Lua playlist scripts shipped with VLC are stored in the following directory:&lt;br /&gt;
* C:\Program Files\VideoLAN\VLC\lua\playlist\ on Windows;&lt;br /&gt;
* VLC.app/Contents/MacOS/share/lua/playlist/ on Mac OS X;&lt;br /&gt;
* /usr/share/vlc/lua/playlist/ on Linux.&lt;br /&gt;
&lt;br /&gt;
You can add your own Lua playlist scripts in this directory or in your VLC&#039;s preferences folder &amp;quot;lua/playlist&amp;quot; subdirectory on Windows or Mac OS X and in your local VLC shared data folder on Linux (~/.local/share/vlc/lua/playlist).&lt;br /&gt;
&lt;br /&gt;
== Simple Examples ==&lt;br /&gt;
&lt;br /&gt;
=== URL translation ===&lt;br /&gt;
&lt;br /&gt;
==== What we want to do ====&lt;br /&gt;
Let&#039;s say that we want VLC to open Google Video links automatically. Google Video pages have URLs like&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;http://video.google.com/videoplay?docid=-5784010886294950089&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
to the URL of the corresponding Google Video Playlist file which is&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;http://video.google.com/videogvp?docid=-5784010886294950089&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Probe ====&lt;br /&gt;
The Lua script is going to be made of 2 functions. The first one is the &#039;&#039;&#039;probe()&#039;&#039;&#039; function. This function tells VLC if the Lua script should be used (function returns true) or not (function returns false). Here it would look like:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
 function probe()&lt;br /&gt;
     if vlc.access ~= &amp;quot;http&amp;quot;&lt;br /&gt;
     then&lt;br /&gt;
         return false&lt;br /&gt;
     end&lt;br /&gt;
     if string.match( vlc.path, &amp;quot;video.google.com/videoplay&amp;quot; )&lt;br /&gt;
     then&lt;br /&gt;
         return true&lt;br /&gt;
     else&lt;br /&gt;
         return false&lt;br /&gt;
     end&lt;br /&gt;
 end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lets analyse that function step by step. First we check that VLC is using HTTP. If it isn&#039;t (for example it&#039;s reading a file off your hard drive or a DVD), we don&#039;t want to trigger the Google Video URL translation. The &#039;&#039;&#039;vlc&#039;&#039;&#039; Lua object provides &#039;&#039;&#039;vlc.access&#039;&#039;&#039; which should be equal to string &#039;&#039;&#039;&amp;quot;http&amp;quot;&#039;&#039;&#039;. Then we check that the URL is a Google Video page. This is easily done by trying to find the &#039;&#039;&#039;&amp;quot;video.google.com/videoplay&amp;quot;&#039;&#039;&#039; string in &#039;&#039;&#039;vlc.path&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Note that the same function can be written as&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
 function probe()&lt;br /&gt;
     return vlc.access == &amp;quot;http&amp;quot; and string.match( vlc.path, &amp;quot;video.google.com/videoplay&amp;quot; )&lt;br /&gt;
 end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Parse ====&lt;br /&gt;
If the &#039;&#039;&#039;probe()&#039;&#039;&#039; function returns true, VLC will use the &#039;&#039;&#039;parse()&#039;&#039;&#039; to ask for the new playlist item(s) which need to be added.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
 function parse()&lt;br /&gt;
     item = {}&lt;br /&gt;
     item.path = &amp;quot;http://&amp;quot; .. string.gsub( vlc.path, &amp;quot;videoplay&amp;quot;, &amp;quot;videogvp&amp;quot; )&lt;br /&gt;
     item.name = &amp;quot;Some Google video playlist&amp;quot;&lt;br /&gt;
     return { item }&lt;br /&gt;
 end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We create a new playlist item (a Lua table). We set the item&#039;s path to the appropriate string: 1/ we prepend &amp;quot;http://&amp;quot; since the &#039;&#039;&#039;vlc.path&#039;&#039;&#039; string doesn&#039;t include that part of the original URL and 2/ we replace &amp;quot;videoplay&amp;quot; by &amp;quot;videogvp&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We also set the new playlist item&#039;s name to &amp;quot;Some Google video playlist&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We then return the new playlist to VLC (a Lua table which basically represents a list of items).&lt;br /&gt;
&lt;br /&gt;
A shorter version would be:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
 function parse()&lt;br /&gt;
     return { { path = &amp;quot;http://&amp;quot; .. string.gsub( vlc.path, &amp;quot;videoplay&amp;quot;, &amp;quot;videogvp&amp;quot; ); name = &amp;quot;Some Google video playlist&amp;quot; } }&lt;br /&gt;
 end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Saving that to a file ====&lt;br /&gt;
To make that script available to VLC, simply create a new something.lua file in one of the directories listed in the introduction (You should also remove the googlevideo.lua file shipped with VLC to make sure that it isn&#039;t used instead of your new script).&lt;br /&gt;
&lt;br /&gt;
=== Text Playlist Parsing ===&lt;br /&gt;
&lt;br /&gt;
In the previous example we translated a URL to another URL. This new URL redirects VLC to a Google Video Playlist which is basically a text file. This file needs to be read to get the final video&#039;s true URL. Here&#039;s what such a file would look like if you were to open it with a text editor:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# download the free Google Video Player from http://video.google.com/&lt;br /&gt;
gvp_version:1.1&lt;br /&gt;
url:http://vp.video.google.com/videodownload?version=0&amp;amp;secureurl=uQAAAAznrU3q0BdxTkn_lLSpVJQ4a4JBDFAc5V8lB5OXXPqJ6Dts-Hq5Ll-2dIgeBIDGN1ZAMv65MMP0Zu5cwbIrgAhinWRNl-UtZCU4CgPpnYrR5IwLCk-sEXjs4o89dTT8MQxWcSo3lFPKulC0_TT9L0EW_IyANloBjyoEld5KGkcXdUTtXvj1TmaRh5Yvq4zIfxmYPQ4fehJY6rucnqMQLm8NTD32NvVpSp1bJ06ub_YJgDz4Nic-_qpW0rnFReSyrQ&amp;amp;sigh=zy8gMs8AhAM0Hv3N1PR7djz3m2I&amp;amp;begin=0&amp;amp;len=72640&amp;amp;docid=-5784010886294950089&lt;br /&gt;
docid:-5784010886294950089&lt;br /&gt;
duration:72640&lt;br /&gt;
title:Penguins go for a stroll&lt;br /&gt;
description:African penguins caught a breath of fresh air as they were out for a stroll through Tokyo&#039;s aquarium. Ikebukuro Sunshine Aquarium offer spectators a chance to get a closer encounter with penguins as they are taken for a walk through the aquariums compound.&lt;br /&gt;
description:&lt;br /&gt;
description:During the parade the penguins were separated from spectators, mainly children, by portable fences on wheels which were pushed by the zookeepers. The fence ensures they don&#039;t run away and also prevents them from biting spectators. &lt;br /&gt;
description:&lt;br /&gt;
description:&amp;quot;I came up with this idea to let people get a close look at penguins walking.&amp;quot; said Keeper Masahiro Tomiyama, adding only penguins born and raised at the aquarium can walk outside their cage without feeling stressed by all the attention.&lt;br /&gt;
description:&lt;br /&gt;
description:Reuters 16094/06&lt;br /&gt;
description:Keywords: animals, cute, sweet, funny, ITN Source.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Probe ====&lt;br /&gt;
The first thing we need to worry about is making sure that the file we&#039;re playing is a Google Video Playlist (GVP) file. We could rely on the URL, but that would prevent playing GVP files from our hard drive. Fortunately, the file&#039;s contents, especially the &amp;quot;gvp_version:&amp;quot; string seem specific to GVP files. We&#039;ll thus try reading a bunch of characters from the beginning of the file and look for the &amp;quot;gvp_version:&amp;quot; string.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
 function probe()&lt;br /&gt;
     return string.match( vlc.peek( 512 ), &amp;quot;gvp_version:&amp;quot; )&lt;br /&gt;
 end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;vlc.peek(&#039;&#039;&#039; &#039;&#039;&amp;lt;number of chars&amp;gt;&#039;&#039; &#039;&#039;&#039;)&#039;&#039;&#039; function asks VLC to return the first &amp;lt;number of chars&amp;gt; characters. If the string &amp;quot;gvp_version:&amp;quot; isn&#039;t found in a file&#039;s first 512 characters, we&#039;re almost 100% sure that it&#039;s not a valid GVP file.&lt;br /&gt;
&lt;br /&gt;
==== Parse ====&lt;br /&gt;
We now need to read information from the file to create our new playlist item. A simple version would only fetch the URL:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
 function parse()&lt;br /&gt;
     item = {}&lt;br /&gt;
     while true&lt;br /&gt;
     do&lt;br /&gt;
         line = vlc.readline()&lt;br /&gt;
         if not line&lt;br /&gt;
         then&lt;br /&gt;
             break&lt;br /&gt;
         end&lt;br /&gt;
         if string.match( line, &amp;quot;^url:&amp;quot; )&lt;br /&gt;
         then&lt;br /&gt;
             item.path = string.sub( line, 5 )&lt;br /&gt;
         end&lt;br /&gt;
     end&lt;br /&gt;
     return { item }&lt;br /&gt;
 end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We read all the file&#039;s lines using the &#039;&#039;&#039;vlc.readline()&#039;&#039;&#039; function. If we encounter the line starting with &#039;&#039;&#039;&amp;quot;url:&amp;quot;&#039;&#039;&#039; (&#039;&#039;string.match( line, &amp;quot;url:&amp;quot; )&#039;&#039; would match lines containing &amp;quot;url:&amp;quot;, while &#039;&#039;string.match( line, &amp;quot;^url:&amp;quot; )&#039;&#039; only matches those starting with &amp;quot;url:&amp;quot;), we use that as our new item&#039;s path.&lt;br /&gt;
&lt;br /&gt;
If vlc.readline() returns nil, this means that we&#039;ve finished reading the file so we break out of the while loop and return our new playlist.&lt;br /&gt;
&lt;br /&gt;
This simple &#039;&#039;&#039;parse()&#039;&#039;&#039; function unfortunately discards all the other useful meta information available in the GVP file. Lets try to use it:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
 function parse()&lt;br /&gt;
     item = {}&lt;br /&gt;
     while true&lt;br /&gt;
     do&lt;br /&gt;
         line = vlc.readline()&lt;br /&gt;
         if not line&lt;br /&gt;
         then&lt;br /&gt;
             break&lt;br /&gt;
         end&lt;br /&gt;
         if string.match( line, &amp;quot;^url:&amp;quot; )&lt;br /&gt;
         then&lt;br /&gt;
             item.path = string.sub( line, 5 )&lt;br /&gt;
         elseif string.match( line, &amp;quot;^title:&amp;quot; )&lt;br /&gt;
         then&lt;br /&gt;
             item.name = string.sub( line, 7 )&lt;br /&gt;
         elseif string.match( line, &amp;quot;^duration:&amp;quot; )&lt;br /&gt;
         then&lt;br /&gt;
             item.duration = string.sub( line, 10 ) / 1000&lt;br /&gt;
         elseif string.match( line, &amp;quot;^description:&amp;quot; )&lt;br /&gt;
         then&lt;br /&gt;
             if item.description&lt;br /&gt;
             then&lt;br /&gt;
                 item.description = item.description .. &amp;quot;\n&amp;quot; .. string.sub( line, 13 )&lt;br /&gt;
             else&lt;br /&gt;
                 item.description = string.sub( line, 13 )&lt;br /&gt;
             end&lt;br /&gt;
         end&lt;br /&gt;
     end&lt;br /&gt;
     return { item }&lt;br /&gt;
 end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Getting the video&#039;s title works like the URL parameter.&lt;br /&gt;
The duration is a bit more tricky. GVP uses times in milliseconds while VLC wants a time in seconds. We thus have to divide it by 1000.&lt;br /&gt;
For the description, it works like the URL and title parameters except that a GVP file can have more than one description parameter. If we read more than one parameter we thus concatenate the different description lines.&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
Information about the VLC Lua scripts is available in your VLC installation in the lua subdirectory.&lt;br /&gt;
&lt;br /&gt;
* [https://code.videolan.org/videolan/vlc/-/blob/master/share/lua/README.txt Global VLC Lua README]&lt;br /&gt;
* [https://code.videolan.org/videolan/vlc/-/blob/master/share/lua/playlist/README.txt Playlist script specific README]&lt;br /&gt;
&lt;br /&gt;
== Scripts shipped with VLC ==&lt;br /&gt;
&lt;br /&gt;
Scripts for popular playlist formats and video websites are available in the default VLC installer:&lt;br /&gt;
* [https://code.videolan.org/videolan/vlc/-/blob/master/share/lua/playlist/dailymotion.lua dailymotion.lua]: URL translation for Daily Motion video pages;&lt;br /&gt;
* [https://code.videolan.org/videolan/vlc/-/blob/master/share/lua/playlist/metacafe.lua metacafe.lua]: URL translation for metacafe video pages and flash player;&lt;br /&gt;
* [https://code.videolan.org/videolan/vlc/-/blob/master/share/lua/playlist/vimeo.lua vimeo.lua]: URL translation for Vimeo video pages;&lt;br /&gt;
* [https://code.videolan.org/videolan/vlc/-/blob/master/share/lua/playlist/youtube.lua youtube.lua]: URL translation for YouTube video pages and flash player (including fullscreen video URLs);&lt;br /&gt;
&lt;br /&gt;
== Useful links ==&lt;br /&gt;
* [http://www.lua.org/manual/5.1/ Lua 5.1 reference manual]&lt;br /&gt;
* [http://lua-users.org/wiki/TutorialDirectory Lua tutorials]&lt;br /&gt;
&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Playlist]]&lt;/div&gt;</summary>
		<author><name>Nhumfrey</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Documentation:Building_Lua_Playlist_Scripts&amp;diff=62193</id>
		<title>Documentation:Building Lua Playlist Scripts</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Documentation:Building_Lua_Playlist_Scripts&amp;diff=62193"/>
		<updated>2023-06-06T10:32:42Z</updated>

		<summary type="html">&lt;p&gt;Nhumfrey: Fixed links to README.txt files&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Example code}}&lt;br /&gt;
{{RightMenu|Documentation TOC}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Starting with version 0.9.0, VLC gives you the possible to implement your own playlist loading modules easily. Such modules can do stuff like:&lt;br /&gt;
* &#039;&#039;URL translation&#039;&#039;: You give it the youtube webpage URL and VLC starts playing the corresponding video;&lt;br /&gt;
* &#039;&#039;Text playlist parsing&#039;&#039;: You use some custom text playlist format.&lt;br /&gt;
&lt;br /&gt;
Lua playlist scripts shipped with VLC are stored in the following directory:&lt;br /&gt;
* C:\Program Files\VideoLAN\VLC\lua\playlist\ on Windows;&lt;br /&gt;
* VLC.app/Contents/MacOS/share/lua/playlist/ on Mac OS X;&lt;br /&gt;
* /usr/share/vlc/lua/playlist/ on Linux.&lt;br /&gt;
&lt;br /&gt;
You can add your own Lua playlist scripts in this directory or in your VLC&#039;s preferences folder &amp;quot;lua/playlist&amp;quot; subdirectory on Windows or Mac OS X and in your local VLC shared data folder on Linux (~/.local/share/vlc/lua/playlist).&lt;br /&gt;
&lt;br /&gt;
== Simple Examples ==&lt;br /&gt;
&lt;br /&gt;
=== URL translation ===&lt;br /&gt;
&lt;br /&gt;
==== What we want to do ====&lt;br /&gt;
Let&#039;s say that we want VLC to open Google Video links automatically. Google Video pages have URLs like&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;http://video.google.com/videoplay?docid=-5784010886294950089&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
to the URL of the corresponding Google Video Playlist file which is&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;http://video.google.com/videogvp?docid=-5784010886294950089&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Probe ====&lt;br /&gt;
The Lua script is going to be made of 2 functions. The first one is the &#039;&#039;&#039;probe()&#039;&#039;&#039; function. This function tells VLC if the Lua script should be used (function returns true) or not (function returns false). Here it would look like:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
 function probe()&lt;br /&gt;
     if vlc.access ~= &amp;quot;http&amp;quot;&lt;br /&gt;
     then&lt;br /&gt;
         return false&lt;br /&gt;
     end&lt;br /&gt;
     if string.match( vlc.path, &amp;quot;video.google.com/videoplay&amp;quot; )&lt;br /&gt;
     then&lt;br /&gt;
         return true&lt;br /&gt;
     else&lt;br /&gt;
         return false&lt;br /&gt;
     end&lt;br /&gt;
 end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lets analyse that function step by step. First we check that VLC is using HTTP. If it isn&#039;t (for example it&#039;s reading a file off your hard drive or a DVD), we don&#039;t want to trigger the Google Video URL translation. The &#039;&#039;&#039;vlc&#039;&#039;&#039; Lua object provides &#039;&#039;&#039;vlc.access&#039;&#039;&#039; which should be equal to string &#039;&#039;&#039;&amp;quot;http&amp;quot;&#039;&#039;&#039;. Then we check that the URL is a Google Video page. This is easily done by trying to find the &#039;&#039;&#039;&amp;quot;video.google.com/videoplay&amp;quot;&#039;&#039;&#039; string in &#039;&#039;&#039;vlc.path&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Note that the same function can be written as&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
 function probe()&lt;br /&gt;
     return vlc.access == &amp;quot;http&amp;quot; and string.match( vlc.path, &amp;quot;video.google.com/videoplay&amp;quot; )&lt;br /&gt;
 end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Parse ====&lt;br /&gt;
If the &#039;&#039;&#039;probe()&#039;&#039;&#039; function returns true, VLC will use the &#039;&#039;&#039;parse()&#039;&#039;&#039; to ask for the new playlist item(s) which need to be added.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
 function parse()&lt;br /&gt;
     item = {}&lt;br /&gt;
     item.path = &amp;quot;http://&amp;quot; .. string.gsub( vlc.path, &amp;quot;videoplay&amp;quot;, &amp;quot;videogvp&amp;quot; )&lt;br /&gt;
     item.name = &amp;quot;Some Google video playlist&amp;quot;&lt;br /&gt;
     return { item }&lt;br /&gt;
 end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We create a new playlist item (a Lua table). We set the item&#039;s path to the appropriate string: 1/ we prepend &amp;quot;http://&amp;quot; since the &#039;&#039;&#039;vlc.path&#039;&#039;&#039; string doesn&#039;t include that part of the original URL and 2/ we replace &amp;quot;videoplay&amp;quot; by &amp;quot;videogvp&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We also set the new playlist item&#039;s name to &amp;quot;Some Google video playlist&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We then return the new playlist to VLC (a Lua table which basically represents a list of items).&lt;br /&gt;
&lt;br /&gt;
A shorter version would be:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
 function parse()&lt;br /&gt;
     return { { path = &amp;quot;http://&amp;quot; .. string.gsub( vlc.path, &amp;quot;videoplay&amp;quot;, &amp;quot;videogvp&amp;quot; ); name = &amp;quot;Some Google video playlist&amp;quot; } }&lt;br /&gt;
 end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Saving that to a file ====&lt;br /&gt;
To make that script available to VLC, simply create a new something.lua file in one of the directories listed in the introduction (You should also remove the googlevideo.lua file shipped with VLC to make sure that it isn&#039;t used instead of your new script).&lt;br /&gt;
&lt;br /&gt;
=== Text Playlist Parsing ===&lt;br /&gt;
&lt;br /&gt;
In the previous example we translated a URL to another URL. This new URL redirects VLC to a Google Video Playlist which is basically a text file. This file needs to be read to get the final video&#039;s true URL. Here&#039;s what such a file would look like if you were to open it with a text editor:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# download the free Google Video Player from http://video.google.com/&lt;br /&gt;
gvp_version:1.1&lt;br /&gt;
url:http://vp.video.google.com/videodownload?version=0&amp;amp;secureurl=uQAAAAznrU3q0BdxTkn_lLSpVJQ4a4JBDFAc5V8lB5OXXPqJ6Dts-Hq5Ll-2dIgeBIDGN1ZAMv65MMP0Zu5cwbIrgAhinWRNl-UtZCU4CgPpnYrR5IwLCk-sEXjs4o89dTT8MQxWcSo3lFPKulC0_TT9L0EW_IyANloBjyoEld5KGkcXdUTtXvj1TmaRh5Yvq4zIfxmYPQ4fehJY6rucnqMQLm8NTD32NvVpSp1bJ06ub_YJgDz4Nic-_qpW0rnFReSyrQ&amp;amp;sigh=zy8gMs8AhAM0Hv3N1PR7djz3m2I&amp;amp;begin=0&amp;amp;len=72640&amp;amp;docid=-5784010886294950089&lt;br /&gt;
docid:-5784010886294950089&lt;br /&gt;
duration:72640&lt;br /&gt;
title:Penguins go for a stroll&lt;br /&gt;
description:African penguins caught a breath of fresh air as they were out for a stroll through Tokyo&#039;s aquarium. Ikebukuro Sunshine Aquarium offer spectators a chance to get a closer encounter with penguins as they are taken for a walk through the aquariums compound.&lt;br /&gt;
description:&lt;br /&gt;
description:During the parade the penguins were separated from spectators, mainly children, by portable fences on wheels which were pushed by the zookeepers. The fence ensures they don&#039;t run away and also prevents them from biting spectators. &lt;br /&gt;
description:&lt;br /&gt;
description:&amp;quot;I came up with this idea to let people get a close look at penguins walking.&amp;quot; said Keeper Masahiro Tomiyama, adding only penguins born and raised at the aquarium can walk outside their cage without feeling stressed by all the attention.&lt;br /&gt;
description:&lt;br /&gt;
description:Reuters 16094/06&lt;br /&gt;
description:Keywords: animals, cute, sweet, funny, ITN Source.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Probe ====&lt;br /&gt;
The first thing we need to worry about is making sure that the file we&#039;re playing is a Google Video Playlist (GVP) file. We could rely on the URL, but that would prevent playing GVP files from our hard drive. Fortunately, the file&#039;s contents, especially the &amp;quot;gvp_version:&amp;quot; string seem specific to GVP files. We&#039;ll thus try reading a bunch of characters from the beginning of the file and look for the &amp;quot;gvp_version:&amp;quot; string.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
 function probe()&lt;br /&gt;
     return string.match( vlc.peek( 512 ), &amp;quot;gvp_version:&amp;quot; )&lt;br /&gt;
 end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;vlc.peek(&#039;&#039;&#039; &#039;&#039;&amp;lt;number of chars&amp;gt;&#039;&#039; &#039;&#039;&#039;)&#039;&#039;&#039; function asks VLC to return the first &amp;lt;number of chars&amp;gt; characters. If the string &amp;quot;gvp_version:&amp;quot; isn&#039;t found in a file&#039;s first 512 characters, we&#039;re almost 100% sure that it&#039;s not a valid GVP file.&lt;br /&gt;
&lt;br /&gt;
==== Parse ====&lt;br /&gt;
We now need to read information from the file to create our new playlist item. A simple version would only fetch the URL:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
 function parse()&lt;br /&gt;
     item = {}&lt;br /&gt;
     while true&lt;br /&gt;
     do&lt;br /&gt;
         line = vlc.readline()&lt;br /&gt;
         if not line&lt;br /&gt;
         then&lt;br /&gt;
             break&lt;br /&gt;
         end&lt;br /&gt;
         if string.match( line, &amp;quot;^url:&amp;quot; )&lt;br /&gt;
         then&lt;br /&gt;
             item.path = string.sub( line, 5 )&lt;br /&gt;
         end&lt;br /&gt;
     end&lt;br /&gt;
     return { item }&lt;br /&gt;
 end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We read all the file&#039;s lines using the &#039;&#039;&#039;vlc.readline()&#039;&#039;&#039; function. If we encounter the line starting with &#039;&#039;&#039;&amp;quot;url:&amp;quot;&#039;&#039;&#039; (&#039;&#039;string.match( line, &amp;quot;url:&amp;quot; )&#039;&#039; would match lines containing &amp;quot;url:&amp;quot;, while &#039;&#039;string.match( line, &amp;quot;^url:&amp;quot; )&#039;&#039; only matches those starting with &amp;quot;url:&amp;quot;), we use that as our new item&#039;s path.&lt;br /&gt;
&lt;br /&gt;
If vlc.readline() returns nil, this means that we&#039;ve finished reading the file so we break out of the while loop and return our new playlist.&lt;br /&gt;
&lt;br /&gt;
This simple &#039;&#039;&#039;parse()&#039;&#039;&#039; function unfortunately discards all the other useful meta information available in the GVP file. Lets try to use it:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
 function parse()&lt;br /&gt;
     item = {}&lt;br /&gt;
     while true&lt;br /&gt;
     do&lt;br /&gt;
         line = vlc.readline()&lt;br /&gt;
         if not line&lt;br /&gt;
         then&lt;br /&gt;
             break&lt;br /&gt;
         end&lt;br /&gt;
         if string.match( line, &amp;quot;^url:&amp;quot; )&lt;br /&gt;
         then&lt;br /&gt;
             item.path = string.sub( line, 5 )&lt;br /&gt;
         elseif string.match( line, &amp;quot;^title:&amp;quot; )&lt;br /&gt;
         then&lt;br /&gt;
             item.name = string.sub( line, 7 )&lt;br /&gt;
         elseif string.match( line, &amp;quot;^duration:&amp;quot; )&lt;br /&gt;
         then&lt;br /&gt;
             item.duration = string.sub( line, 10 ) / 1000&lt;br /&gt;
         elseif string.match( line, &amp;quot;^description:&amp;quot; )&lt;br /&gt;
         then&lt;br /&gt;
             if item.description&lt;br /&gt;
             then&lt;br /&gt;
                 item.description = item.description .. &amp;quot;\n&amp;quot; .. string.sub( line, 13 )&lt;br /&gt;
             else&lt;br /&gt;
                 item.description = string.sub( line, 13 )&lt;br /&gt;
             end&lt;br /&gt;
         end&lt;br /&gt;
     end&lt;br /&gt;
     return { item }&lt;br /&gt;
 end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Getting the video&#039;s title works like the URL parameter.&lt;br /&gt;
The duration is a bit more tricky. GVP uses times in milliseconds while VLC wants a time in seconds. We thus have to divide it by 1000.&lt;br /&gt;
For the description, it works like the URL and title parameters except that a GVP file can have more than one description parameter. If we read more than one parameter we thus concatenate the different description lines.&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
Information about the VLC Lua scripts is available in your VLC installation in the lua subdirectory.&lt;br /&gt;
&lt;br /&gt;
* [https://code.videolan.org/videolan/vlc/-/blob/master/share/lua/README.txt Global VLC Lua README]&lt;br /&gt;
* [https://code.videolan.org/videolan/vlc/-/blob/master/share/lua/playlist/README.txt Playlist script specific README]&lt;br /&gt;
&lt;br /&gt;
== Scripts shipped with VLC ==&lt;br /&gt;
&lt;br /&gt;
Scripts for popular playlist formats and video websites are available in the default VLC installer:&lt;br /&gt;
* dailymotion.lua: URL translation for Daily Motion video pages;&lt;br /&gt;
* googlevideo.lua: URL translation for Google Video video pages;&lt;br /&gt;
* metacafe.lua: URL translation for metacafe video pages and flash player;&lt;br /&gt;
* youtube.lua: URL translation for YouTube video pages and flash player (including fullscreen video URLs);&lt;br /&gt;
* youtube_hompage.lua: Parse YouTube homepage and browse page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Useful links ==&lt;br /&gt;
* [http://www.lua.org/manual/5.1/ Lua 5.1 reference manual]&lt;br /&gt;
* [http://lua-users.org/wiki/TutorialDirectory Lua tutorials]&lt;br /&gt;
&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Playlist]]&lt;/div&gt;</summary>
		<author><name>Nhumfrey</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Documentation:Modules/mqtt&amp;diff=26763</id>
		<title>Documentation:Modules/mqtt</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Documentation:Modules/mqtt&amp;diff=26763"/>
		<updated>2014-05-05T10:31:09Z</updated>

		<summary type="html">&lt;p&gt;Nhumfrey: Restructured as a table of commands and responses&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;NOTE: this module is in active development and has not made it into the main tree yet.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Module|name=mqtt|type=Interface|os=Any that support the [http://mosquitto.org/ mosquitto] library|description=control VLC using the MQTT protocol}}&lt;br /&gt;
&lt;br /&gt;
This module will let you send control messages to VLC using the [http://www.mqtt.org/ MQTT] protocol.&lt;br /&gt;
&lt;br /&gt;
== Options ==&lt;br /&gt;
{{Option&lt;br /&gt;
|name=mqtt-host&lt;br /&gt;
|value=string&lt;br /&gt;
|default=localhost&lt;br /&gt;
|description=Hostname of MQTT broker to connect to&lt;br /&gt;
}}&lt;br /&gt;
{{Option&lt;br /&gt;
|name=mqtt-port&lt;br /&gt;
|value=integer&lt;br /&gt;
|default=1883&lt;br /&gt;
|description=Port number of MQTT broker to connect to&lt;br /&gt;
}}&lt;br /&gt;
{{Option&lt;br /&gt;
|name=mqtt-username&lt;br /&gt;
|value=string&lt;br /&gt;
|default=none&lt;br /&gt;
|description=The username to connect to the broker with&lt;br /&gt;
}}&lt;br /&gt;
{{Option&lt;br /&gt;
|name=mqtt-password&lt;br /&gt;
|value=string&lt;br /&gt;
|default=none&lt;br /&gt;
|description=The password to connect to the broker with&lt;br /&gt;
}}&lt;br /&gt;
{{Option&lt;br /&gt;
|name=mqtt-prefix&lt;br /&gt;
|value=string&lt;br /&gt;
|default=vlc/&lt;br /&gt;
|description=The topic name prefix to use&lt;br /&gt;
}}&lt;br /&gt;
{{Option&lt;br /&gt;
|name=mqtt-clientid&lt;br /&gt;
|value=string&lt;br /&gt;
|default=random&lt;br /&gt;
|description=The client identifier to connect to the broker as&lt;br /&gt;
}}&lt;br /&gt;
{{Option&lt;br /&gt;
|name=mqtt-keepalive&lt;br /&gt;
|value=string&lt;br /&gt;
|default=10&lt;br /&gt;
|description=The keep alive time for the MQTT protocol (in seconds)&lt;br /&gt;
}}&lt;br /&gt;
{{Option&lt;br /&gt;
|name=mqtt-qos&lt;br /&gt;
|value=string&lt;br /&gt;
|default=1&lt;br /&gt;
|description=The QoS level to publish and subscribe using (0, 1 or 2)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Protocol ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Commands ===&lt;br /&gt;
&lt;br /&gt;
Sent from client to VLC.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Direction !! Topic !! Payload !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;big&amp;gt;&amp;amp;#x2192;&amp;lt;/big&amp;gt; || vlc/command || &amp;lt;cmd&amp;gt; &amp;lt;arguments&amp;gt; || Any of the below&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;big&amp;gt;&amp;amp;#x2192;&amp;lt;/big&amp;gt; || vlc/command/add || &amp;lt;url&amp;gt; || Add &amp;lt;url&amp;gt; to the playlist&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;big&amp;gt;&amp;amp;#x2192;&amp;lt;/big&amp;gt; || vlc/command/delete || &amp;lt;pos&amp;gt; || delete item &amp;lt;pos&amp;gt; in playlist&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;big&amp;gt;&amp;amp;#x2192;&amp;lt;/big&amp;gt; || vlc/command/clear ||  || clear the playlist&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;big&amp;gt;&amp;amp;#x2192;&amp;lt;/big&amp;gt; || vlc/command/play || &amp;lt;pos&amp;gt; || Start playing item at &amp;lt;pos&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;big&amp;gt;&amp;amp;#x2192;&amp;lt;/big&amp;gt; || vlc/command/pause ||  || Pause Playback&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;big&amp;gt;&amp;amp;#x2192;&amp;lt;/big&amp;gt; || vlc/command/stop ||  || Stop Playback&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;big&amp;gt;&amp;amp;#x2192;&amp;lt;/big&amp;gt; || vlc/command/goto || &amp;lt;pos&amp;gt; || Goto item at index &amp;lt;pos&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;big&amp;gt;&amp;amp;#x2192;&amp;lt;/big&amp;gt; || vlc/command/next ||  || Start playing next item in playlist&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;big&amp;gt;&amp;amp;#x2192;&amp;lt;/big&amp;gt; || vlc/command/prev ||  || Start playing prev item in playlist&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;big&amp;gt;&amp;amp;#x2192;&amp;lt;/big&amp;gt; || vlc/command/seek || &amp;lt;time&amp;gt; || Seek to &amp;lt;time&amp;gt; in the current item (in seconds)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;big&amp;gt;&amp;amp;#x2192;&amp;lt;/big&amp;gt; || vlc/command/volume || &amp;lt;vol&amp;gt; || Set volume to &amp;lt;vol&amp;gt; (0 to 255)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;big&amp;gt;&amp;amp;#x2192;&amp;lt;/big&amp;gt; || vlc/command/volup || &amp;lt;vol&amp;gt; || Increase volume by &amp;lt;vol&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;big&amp;gt;&amp;amp;#x2192;&amp;lt;/big&amp;gt; || vlc/command/voldown || &amp;lt;vol&amp;gt; || Decrease volume by &amp;lt;vol&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;big&amp;gt;&amp;amp;#x2192;&amp;lt;/big&amp;gt; || vlc/command/repeat || &amp;lt;mode&amp;gt; || Turn on or off playlist &#039;&#039;repeat&#039;&#039; mode (0 or 1)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;big&amp;gt;&amp;amp;#x2192;&amp;lt;/big&amp;gt; || vlc/command/random || &amp;lt;mode&amp;gt; || Turn on or off playlist &#039;&#039;random&#039;&#039; mode (0 or 1)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;big&amp;gt;&amp;amp;#x2192;&amp;lt;/big&amp;gt; || vlc/command/loop || &amp;lt;mode&amp;gt; || Turn on or off playlist &#039;&#039;loop&#039;&#039; mode (0 or 1)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Status ===&lt;br /&gt;
&lt;br /&gt;
Sent from VLC to client.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Direction !! Topic !! Payload !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;big&amp;gt;&amp;amp;#x2190;&amp;lt;/big&amp;gt; || vlc/status/playlist || &amp;lt;json&amp;gt; || A JSON representation of the playlist is sent whenever the playlist changes.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;big&amp;gt;&amp;amp;#x2190;&amp;lt;/big&amp;gt; || vlc/status/state || &amp;lt;state&amp;gt; || This retained message is sent by VLC whenever the player changes state:&lt;br /&gt;
* opening&lt;br /&gt;
* buffering&lt;br /&gt;
* playing&lt;br /&gt;
* paused&lt;br /&gt;
* stopped&lt;br /&gt;
* ended&lt;br /&gt;
* error&lt;br /&gt;
* notconnected&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;big&amp;gt;&amp;amp;#x2190;&amp;lt;/big&amp;gt; || vlc/status/playing || &amp;lt;json&amp;gt; || Information about the currently playing item as JSON is sent whenever a new item starts playing.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;big&amp;gt;&amp;amp;#x2190;&amp;lt;/big&amp;gt; || vlc/status/time || &amp;lt;time&amp;gt; || Progress through the current stream as decimal seconds&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;big&amp;gt;&amp;amp;#x2190;&amp;lt;/big&amp;gt; || vlc/status/length || &amp;lt;time&amp;gt; || Duration of current stream as decimal seconds&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;big&amp;gt;&amp;amp;#x2190;&amp;lt;/big&amp;gt; || vlc/status/volume || &amp;lt;vol&amp;gt; || The current volume between 0 and 255 (inclusive)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Interfaces]]&lt;/div&gt;</summary>
		<author><name>Nhumfrey</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Documentation:Modules/mqtt&amp;diff=26762</id>
		<title>Documentation:Modules/mqtt</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Documentation:Modules/mqtt&amp;diff=26762"/>
		<updated>2014-05-04T21:08:19Z</updated>

		<summary type="html">&lt;p&gt;Nhumfrey: /* Options */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;NOTE: this module is in active development and has not made it into the main tree yet.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Module|name=mqtt|type=Interface|os=Any that support the [http://mosquitto.org/ mosquitto] library|description=control VLC using the MQTT protocol}}&lt;br /&gt;
&lt;br /&gt;
This module will let you send control messages to VLC using the [http://www.mqtt.org/ MQTT] protocol.&lt;br /&gt;
&lt;br /&gt;
== Options ==&lt;br /&gt;
{{Option&lt;br /&gt;
|name=mqtt-host&lt;br /&gt;
|value=string&lt;br /&gt;
|default=localhost&lt;br /&gt;
|description=Hostname of MQTT broker to connect to&lt;br /&gt;
}}&lt;br /&gt;
{{Option&lt;br /&gt;
|name=mqtt-port&lt;br /&gt;
|value=integer&lt;br /&gt;
|default=1883&lt;br /&gt;
|description=Port number of MQTT broker to connect to&lt;br /&gt;
}}&lt;br /&gt;
{{Option&lt;br /&gt;
|name=mqtt-username&lt;br /&gt;
|value=string&lt;br /&gt;
|default=none&lt;br /&gt;
|description=The username to connect to the broker with&lt;br /&gt;
}}&lt;br /&gt;
{{Option&lt;br /&gt;
|name=mqtt-password&lt;br /&gt;
|value=string&lt;br /&gt;
|default=none&lt;br /&gt;
|description=The password to connect to the broker with&lt;br /&gt;
}}&lt;br /&gt;
{{Option&lt;br /&gt;
|name=mqtt-prefix&lt;br /&gt;
|value=string&lt;br /&gt;
|default=vlc/&lt;br /&gt;
|description=The topic name prefix to use&lt;br /&gt;
}}&lt;br /&gt;
{{Option&lt;br /&gt;
|name=mqtt-clientid&lt;br /&gt;
|value=string&lt;br /&gt;
|default=random&lt;br /&gt;
|description=The client identifier to connect to the broker as&lt;br /&gt;
}}&lt;br /&gt;
{{Option&lt;br /&gt;
|name=mqtt-keepalive&lt;br /&gt;
|value=string&lt;br /&gt;
|default=10&lt;br /&gt;
|description=The keep alive time for the MQTT protocol (in seconds)&lt;br /&gt;
}}&lt;br /&gt;
{{Option&lt;br /&gt;
|name=mqtt-qos&lt;br /&gt;
|value=string&lt;br /&gt;
|default=1&lt;br /&gt;
|description=The QoS level to publish and subscribe using (0, 1 or 2)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Protocol ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;amp;#x2192;&amp;lt;/big&amp;gt; : From client to VLC &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;amp;#x2190;&amp;lt;/big&amp;gt; : From VLC to client &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== &amp;amp;#x2192; vlc/command   &amp;lt;cmd&amp;gt; &amp;lt;arguments&amp;gt; ===&lt;br /&gt;
The following commands are accepted:&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;add&#039;&#039;&#039; || &amp;lt;uri&amp;gt; || add &amp;lt;uri&amp;gt; to playlist&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;delete&#039;&#039;&#039; || &amp;lt;pos&amp;gt; || delete item &amp;lt;pos&amp;gt; in playlist&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;clear&#039;&#039;&#039; ||  || clear the playlist&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;play&#039;&#039;&#039; ||  &amp;lt;pos&amp;gt; || Start playing item &amp;lt;num&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;pause&#039;&#039;&#039; ||   || Pause playback&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;stop&#039;&#039;&#039; ||   || Stop stream&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;goto&#039;&#039;&#039; || &amp;lt;pos&amp;gt;  || Goto item at index&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;next&#039;&#039;&#039; ||  || Start playing next item in playlist&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;prev&#039;&#039;&#039; ||  || Start playing previous item in playlist&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;seek&#039;&#039;&#039; ||  &amp;lt;time&amp;gt; || Seek to &amp;lt;time&amp;gt; in the current item (in seconds)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;volume&#039;&#039;&#039; ||  &amp;lt;volume&amp;gt; || Set volume to &amp;lt;volume&amp;gt; (0 to 255)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;volup&#039;&#039;&#039; ||  &amp;lt;volume&amp;gt; || Increase volume by &amp;lt;volume&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;voldown&#039;&#039;&#039; ||  &amp;lt;volume&amp;gt; || Descrease volume by &amp;lt;volume&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;repeat&#039;&#039;&#039; ||  &amp;lt;mode&amp;gt; || Turn on or off playlist repeat mode (0 or 1)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;random&#039;&#039;&#039; ||  &amp;lt;mode&amp;gt; || Turn on or off playlist random/shuffle mode (0 or 1)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;loop&#039;&#039;&#039; ||  &amp;lt;mode&amp;gt; || Turn on or off playlist loop mode (0 or 1)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== &amp;amp;#x2190; vlc/status/playlist ===&lt;br /&gt;
A JSON representation of the playlist is sent whenever the playlist changes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== &amp;amp;#x2190; vlc/status/state ===&lt;br /&gt;
This retained message is sent by VLC whenever the player changes state.&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;opening&#039;&#039;&#039; || &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;buffering&#039;&#039;&#039; ||&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;playing&#039;&#039;&#039; || &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;paused&#039;&#039;&#039; || &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;stopped&#039;&#039;&#039; || &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;ended&#039;&#039;&#039; || &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;error&#039;&#039;&#039; || &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;notconnected&#039;&#039;&#039; || sent when VLC disconnects from the broker&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== &amp;amp;#x2190;  vlc/status/playing ===&lt;br /&gt;
Information about the currently playing item as JSON is sent whenever a new item starts playing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== &amp;amp;#x2190;  vlc/status/time ===&lt;br /&gt;
Progress through the current stream as decimal seconds&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== &amp;amp;#x2190;  vlc/status/length ===&lt;br /&gt;
Duration of current stream as decimal seconds&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== &amp;amp;#x2190;  vlc/status/volume ===&lt;br /&gt;
The current volume between 0 and 255 (inclusive)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Interfaces]]&lt;/div&gt;</summary>
		<author><name>Nhumfrey</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Documentation:Modules/mqtt&amp;diff=26761</id>
		<title>Documentation:Modules/mqtt</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Documentation:Modules/mqtt&amp;diff=26761"/>
		<updated>2014-05-04T20:51:43Z</updated>

		<summary type="html">&lt;p&gt;Nhumfrey: /* &amp;amp;#x2192; vlc/command     */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;NOTE: this module is in active development and has not made it into the main tree yet.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Module|name=mqtt|type=Interface|os=Any that support the [http://mosquitto.org/ mosquitto] library|description=control VLC using the MQTT protocol}}&lt;br /&gt;
&lt;br /&gt;
This module will let you send control messages to VLC using the [http://www.mqtt.org/ MQTT] protocol.&lt;br /&gt;
&lt;br /&gt;
== Options ==&lt;br /&gt;
{{Option&lt;br /&gt;
|name=mqtt-host&lt;br /&gt;
|value=string&lt;br /&gt;
|default=localhost&lt;br /&gt;
|description=Hostname of MQTT broker to connect to&lt;br /&gt;
}}&lt;br /&gt;
{{Option&lt;br /&gt;
|name=mqtt-port&lt;br /&gt;
|value=integer&lt;br /&gt;
|default=1883&lt;br /&gt;
|description=Port number of MQTT broker to connect to&lt;br /&gt;
}}&lt;br /&gt;
{{Option&lt;br /&gt;
|name=mqtt-prefix&lt;br /&gt;
|value=string&lt;br /&gt;
|default=vlc/&lt;br /&gt;
|description=The topic name prefix to use&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Protocol ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;amp;#x2192;&amp;lt;/big&amp;gt; : From client to VLC &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;amp;#x2190;&amp;lt;/big&amp;gt; : From VLC to client &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== &amp;amp;#x2192; vlc/command   &amp;lt;cmd&amp;gt; &amp;lt;arguments&amp;gt; ===&lt;br /&gt;
The following commands are accepted:&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;add&#039;&#039;&#039; || &amp;lt;uri&amp;gt; || add &amp;lt;uri&amp;gt; to playlist&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;delete&#039;&#039;&#039; || &amp;lt;pos&amp;gt; || delete item &amp;lt;pos&amp;gt; in playlist&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;clear&#039;&#039;&#039; ||  || clear the playlist&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;play&#039;&#039;&#039; ||  &amp;lt;pos&amp;gt; || Start playing item &amp;lt;num&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;pause&#039;&#039;&#039; ||   || Pause playback&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;stop&#039;&#039;&#039; ||   || Stop stream&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;goto&#039;&#039;&#039; || &amp;lt;pos&amp;gt;  || Goto item at index&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;next&#039;&#039;&#039; ||  || Start playing next item in playlist&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;prev&#039;&#039;&#039; ||  || Start playing previous item in playlist&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;seek&#039;&#039;&#039; ||  &amp;lt;time&amp;gt; || Seek to &amp;lt;time&amp;gt; in the current item (in seconds)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;volume&#039;&#039;&#039; ||  &amp;lt;volume&amp;gt; || Set volume to &amp;lt;volume&amp;gt; (0 to 255)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;volup&#039;&#039;&#039; ||  &amp;lt;volume&amp;gt; || Increase volume by &amp;lt;volume&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;voldown&#039;&#039;&#039; ||  &amp;lt;volume&amp;gt; || Descrease volume by &amp;lt;volume&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;repeat&#039;&#039;&#039; ||  &amp;lt;mode&amp;gt; || Turn on or off playlist repeat mode (0 or 1)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;random&#039;&#039;&#039; ||  &amp;lt;mode&amp;gt; || Turn on or off playlist random/shuffle mode (0 or 1)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;loop&#039;&#039;&#039; ||  &amp;lt;mode&amp;gt; || Turn on or off playlist loop mode (0 or 1)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== &amp;amp;#x2190; vlc/status/playlist ===&lt;br /&gt;
A JSON representation of the playlist is sent whenever the playlist changes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== &amp;amp;#x2190; vlc/status/state ===&lt;br /&gt;
This retained message is sent by VLC whenever the player changes state.&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;opening&#039;&#039;&#039; || &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;buffering&#039;&#039;&#039; ||&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;playing&#039;&#039;&#039; || &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;paused&#039;&#039;&#039; || &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;stopped&#039;&#039;&#039; || &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;ended&#039;&#039;&#039; || &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;error&#039;&#039;&#039; || &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;notconnected&#039;&#039;&#039; || sent when VLC disconnects from the broker&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== &amp;amp;#x2190;  vlc/status/playing ===&lt;br /&gt;
Information about the currently playing item as JSON is sent whenever a new item starts playing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== &amp;amp;#x2190;  vlc/status/time ===&lt;br /&gt;
Progress through the current stream as decimal seconds&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== &amp;amp;#x2190;  vlc/status/length ===&lt;br /&gt;
Duration of current stream as decimal seconds&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== &amp;amp;#x2190;  vlc/status/volume ===&lt;br /&gt;
The current volume between 0 and 255 (inclusive)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Interfaces]]&lt;/div&gt;</summary>
		<author><name>Nhumfrey</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Documentation:Modules/mqtt&amp;diff=26760</id>
		<title>Documentation:Modules/mqtt</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Documentation:Modules/mqtt&amp;diff=26760"/>
		<updated>2014-05-04T20:43:48Z</updated>

		<summary type="html">&lt;p&gt;Nhumfrey: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;NOTE: this module is in active development and has not made it into the main tree yet.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Module|name=mqtt|type=Interface|os=Any that support the [http://mosquitto.org/ mosquitto] library|description=control VLC using the MQTT protocol}}&lt;br /&gt;
&lt;br /&gt;
This module will let you send control messages to VLC using the [http://www.mqtt.org/ MQTT] protocol.&lt;br /&gt;
&lt;br /&gt;
== Options ==&lt;br /&gt;
{{Option&lt;br /&gt;
|name=mqtt-host&lt;br /&gt;
|value=string&lt;br /&gt;
|default=localhost&lt;br /&gt;
|description=Hostname of MQTT broker to connect to&lt;br /&gt;
}}&lt;br /&gt;
{{Option&lt;br /&gt;
|name=mqtt-port&lt;br /&gt;
|value=integer&lt;br /&gt;
|default=1883&lt;br /&gt;
|description=Port number of MQTT broker to connect to&lt;br /&gt;
}}&lt;br /&gt;
{{Option&lt;br /&gt;
|name=mqtt-prefix&lt;br /&gt;
|value=string&lt;br /&gt;
|default=vlc/&lt;br /&gt;
|description=The topic name prefix to use&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Protocol ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;amp;#x2192;&amp;lt;/big&amp;gt; : From client to VLC &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;amp;#x2190;&amp;lt;/big&amp;gt; : From VLC to client &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== &amp;amp;#x2192; vlc/command   &amp;lt;cmd&amp;gt; &amp;lt;arguments&amp;gt; ===&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;add&#039;&#039;&#039; || &amp;lt;uri&amp;gt; || add &amp;lt;uri&amp;gt; to playlist&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;delete&#039;&#039;&#039; || &amp;lt;pos&amp;gt; || delete item &amp;lt;pos&amp;gt; in playlist&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;clear&#039;&#039;&#039; ||  || clear the playlist&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;play&#039;&#039;&#039; ||  &amp;lt;pos&amp;gt; || Start playing item &amp;lt;num&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;pause&#039;&#039;&#039; ||   || Pause playback&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;stop&#039;&#039;&#039; ||   || Stop stream&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;goto&#039;&#039;&#039; || &amp;lt;pos&amp;gt;  || Goto item at index&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;next&#039;&#039;&#039; ||  || Start playing next item in playlist&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;prev&#039;&#039;&#039; ||  || Start playing previous item in playlist&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;seek&#039;&#039;&#039; ||  &amp;lt;time&amp;gt; || Seek to &amp;lt;time&amp;gt; in the current item (in seconds)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;volume&#039;&#039;&#039; ||  &amp;lt;volume&amp;gt; || Set volume to &amp;lt;volume&amp;gt; (0 to 255)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;volup&#039;&#039;&#039; ||  &amp;lt;volume&amp;gt; || Increase volume by &amp;lt;volume&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;voldown&#039;&#039;&#039; ||  &amp;lt;volume&amp;gt; || Descrease volume by &amp;lt;volume&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;repeat&#039;&#039;&#039; ||  &amp;lt;mode&amp;gt; || Turn on or off playlist repeat mode (0 or 1)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;random&#039;&#039;&#039; ||  &amp;lt;mode&amp;gt; || Turn on or off playlist random/shuffle mode (0 or 1)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;loop&#039;&#039;&#039; ||  &amp;lt;mode&amp;gt; || Turn on or off playlist loop mode (0 or 1)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== &amp;amp;#x2190; vlc/status/playlist ===&lt;br /&gt;
A JSON representation of the playlist is sent whenever the playlist changes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== &amp;amp;#x2190; vlc/status/state ===&lt;br /&gt;
This retained message is sent by VLC whenever the player changes state.&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;opening&#039;&#039;&#039; || &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;buffering&#039;&#039;&#039; ||&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;playing&#039;&#039;&#039; || &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;paused&#039;&#039;&#039; || &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;stopped&#039;&#039;&#039; || &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;ended&#039;&#039;&#039; || &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;error&#039;&#039;&#039; || &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;notconnected&#039;&#039;&#039; || sent when VLC disconnects from the broker&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== &amp;amp;#x2190;  vlc/status/playing ===&lt;br /&gt;
Information about the currently playing item as JSON is sent whenever a new item starts playing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== &amp;amp;#x2190;  vlc/status/time ===&lt;br /&gt;
Progress through the current stream as decimal seconds&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== &amp;amp;#x2190;  vlc/status/length ===&lt;br /&gt;
Duration of current stream as decimal seconds&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== &amp;amp;#x2190;  vlc/status/volume ===&lt;br /&gt;
The current volume between 0 and 255 (inclusive)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Interfaces]]&lt;/div&gt;</summary>
		<author><name>Nhumfrey</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Documentation:Modules/mqtt&amp;diff=26759</id>
		<title>Documentation:Modules/mqtt</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Documentation:Modules/mqtt&amp;diff=26759"/>
		<updated>2014-05-04T20:18:27Z</updated>

		<summary type="html">&lt;p&gt;Nhumfrey: /* &amp;amp;#x2190; vlc/status/state */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;NOTE: this module is in active development and has not made it into the main tree yet.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Module|name=mqtt|type=Interface|os=Any that support the [http://mosquitto.org/ mosquitto] library|description=control VLC using the MQTT protocol}}&lt;br /&gt;
&lt;br /&gt;
This module will let you send control messages to VLC using the [http://www.mqtt.org/ MQTT] protocol.&lt;br /&gt;
&lt;br /&gt;
== Options ==&lt;br /&gt;
{{Option&lt;br /&gt;
|name=mqtt-host&lt;br /&gt;
|value=string&lt;br /&gt;
|default=localhost&lt;br /&gt;
|description=Hostname of MQTT broker to connect to&lt;br /&gt;
}}&lt;br /&gt;
{{Option&lt;br /&gt;
|name=mqtt-port&lt;br /&gt;
|value=integer&lt;br /&gt;
|default=1883&lt;br /&gt;
|description=Port number of MQTT broker to connect to&lt;br /&gt;
}}&lt;br /&gt;
{{Option&lt;br /&gt;
|name=mqtt-prefix&lt;br /&gt;
|value=string&lt;br /&gt;
|default=vlc/&lt;br /&gt;
|description=The topic name prefix to use&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Protocol ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;amp;#x2192;&amp;lt;/big&amp;gt; : From client to VLC &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;amp;#x2190;&amp;lt;/big&amp;gt; : From VLC to client &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== &amp;amp;#x2192; &#039;&#039;&#039;vlc/command&#039;&#039;&#039;   &amp;lt;cmd&amp;gt; &amp;lt;arguments&amp;gt; ===&lt;br /&gt;
:add: &amp;lt;uri&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
:delete: &amp;lt;pos&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
:clear: &amp;lt;br /&amp;gt;&lt;br /&gt;
:play: &amp;lt;br /&amp;gt;&lt;br /&gt;
:pause: &amp;lt;br /&amp;gt;&lt;br /&gt;
:stop: &amp;lt;br /&amp;gt;&lt;br /&gt;
:goto: &amp;lt;pos&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
:next: &amp;lt;br /&amp;gt;&lt;br /&gt;
:prev: &amp;lt;br /&amp;gt;&lt;br /&gt;
:seek: &amp;lt;time&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
:volume: &amp;lt;volume&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
:volup: &amp;lt;X&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
:voldown: &amp;lt;X&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
:repeat: &amp;lt;0|1&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
:random: &amp;lt;0|1&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
:loop: &amp;lt;0|1&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== &amp;amp;#x2190; vlc/status/playlist ===&lt;br /&gt;
Return a JSON representation of the playlist&lt;br /&gt;
&lt;br /&gt;
=== &amp;amp;#x2190; vlc/status/state ===&lt;br /&gt;
This retained message is sent by VLC when &lt;br /&gt;
:opening : &lt;br /&gt;
:buffering : &lt;br /&gt;
:playing : &lt;br /&gt;
:paused : &lt;br /&gt;
:stopped : &lt;br /&gt;
:ended : &lt;br /&gt;
:error :&lt;br /&gt;
:notconnected : sent when VLC disconnects from the broker&lt;br /&gt;
&lt;br /&gt;
=== &amp;amp;#x2190;  vlc/status/playing ===&lt;br /&gt;
Information about the currently playing item as JSON&lt;br /&gt;
&lt;br /&gt;
=== &amp;amp;#x2190;  vlc/status/time ===&lt;br /&gt;
Returns current time in stream as decimal seconds&lt;br /&gt;
&lt;br /&gt;
=== &amp;amp;#x2190;  vlc/status/length ===&lt;br /&gt;
Returns duration of current stream as decimal seconds&lt;br /&gt;
&lt;br /&gt;
=== &amp;amp;#x2190;  vlc/status/volume ===&lt;br /&gt;
The current volume between 0 and 255 (inclusive)&lt;br /&gt;
&lt;br /&gt;
[[Category:Interfaces]]&lt;/div&gt;</summary>
		<author><name>Nhumfrey</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Documentation:Modules/mqtt&amp;diff=26758</id>
		<title>Documentation:Modules/mqtt</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Documentation:Modules/mqtt&amp;diff=26758"/>
		<updated>2014-05-04T18:59:08Z</updated>

		<summary type="html">&lt;p&gt;Nhumfrey: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;NOTE: this module is in active development and has not made it into the main tree yet.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Module|name=mqtt|type=Interface|os=Any that support the [http://mosquitto.org/ mosquitto] library|description=control VLC using the MQTT protocol}}&lt;br /&gt;
&lt;br /&gt;
This module will let you send control messages to VLC using the [http://www.mqtt.org/ MQTT] protocol.&lt;br /&gt;
&lt;br /&gt;
== Options ==&lt;br /&gt;
{{Option&lt;br /&gt;
|name=mqtt-host&lt;br /&gt;
|value=string&lt;br /&gt;
|default=localhost&lt;br /&gt;
|description=Hostname of MQTT broker to connect to&lt;br /&gt;
}}&lt;br /&gt;
{{Option&lt;br /&gt;
|name=mqtt-port&lt;br /&gt;
|value=integer&lt;br /&gt;
|default=1883&lt;br /&gt;
|description=Port number of MQTT broker to connect to&lt;br /&gt;
}}&lt;br /&gt;
{{Option&lt;br /&gt;
|name=mqtt-prefix&lt;br /&gt;
|value=string&lt;br /&gt;
|default=vlc/&lt;br /&gt;
|description=The topic name prefix to use&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Protocol ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;amp;#x2192;&amp;lt;/big&amp;gt; : From client to VLC &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;amp;#x2190;&amp;lt;/big&amp;gt; : From VLC to client &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== &amp;amp;#x2192; &#039;&#039;&#039;vlc/command&#039;&#039;&#039;   &amp;lt;cmd&amp;gt; &amp;lt;arguments&amp;gt; ===&lt;br /&gt;
:add: &amp;lt;uri&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
:delete: &amp;lt;pos&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
:clear: &amp;lt;br /&amp;gt;&lt;br /&gt;
:play: &amp;lt;br /&amp;gt;&lt;br /&gt;
:pause: &amp;lt;br /&amp;gt;&lt;br /&gt;
:stop: &amp;lt;br /&amp;gt;&lt;br /&gt;
:goto: &amp;lt;pos&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
:next: &amp;lt;br /&amp;gt;&lt;br /&gt;
:prev: &amp;lt;br /&amp;gt;&lt;br /&gt;
:seek: &amp;lt;time&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
:volume: &amp;lt;volume&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
:volup: &amp;lt;X&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
:voldown: &amp;lt;X&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
:repeat: &amp;lt;0|1&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
:random: &amp;lt;0|1&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
:loop: &amp;lt;0|1&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== &amp;amp;#x2190; vlc/status/playlist ===&lt;br /&gt;
Return a JSON representation of the playlist&lt;br /&gt;
&lt;br /&gt;
=== &amp;amp;#x2190; vlc/status/state ===&lt;br /&gt;
This retained message is sent by VLC when &lt;br /&gt;
opening : &lt;br /&gt;
buffering : &lt;br /&gt;
playing : &lt;br /&gt;
paused : &lt;br /&gt;
stopped : &lt;br /&gt;
ended : &lt;br /&gt;
error :&lt;br /&gt;
notconnected : sent when VLC disconnects from the broker&lt;br /&gt;
&lt;br /&gt;
=== &amp;amp;#x2190;  vlc/status/playing ===&lt;br /&gt;
Information about the currently playing item as JSON&lt;br /&gt;
&lt;br /&gt;
=== &amp;amp;#x2190;  vlc/status/time ===&lt;br /&gt;
Returns current time in stream as decimal seconds&lt;br /&gt;
&lt;br /&gt;
=== &amp;amp;#x2190;  vlc/status/length ===&lt;br /&gt;
Returns duration of current stream as decimal seconds&lt;br /&gt;
&lt;br /&gt;
=== &amp;amp;#x2190;  vlc/status/volume ===&lt;br /&gt;
The current volume between 0 and 255 (inclusive)&lt;br /&gt;
&lt;br /&gt;
[[Category:Interfaces]]&lt;/div&gt;</summary>
		<author><name>Nhumfrey</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Documentation:Modules/osc&amp;diff=26713</id>
		<title>Documentation:Modules/osc</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Documentation:Modules/osc&amp;diff=26713"/>
		<updated>2014-04-12T09:37:22Z</updated>

		<summary type="html">&lt;p&gt;Nhumfrey: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;NOTE: this module is was never merged into the main VLC codebase and work on it has stopped&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Patch against VLC 0.9.9a: http://www.aelius.com/njh/tmp/vlc-0.9.9a+osc.patch&lt;br /&gt;
* Patch against VLC 0.9.8a: http://www.aelius.com/njh/tmp/vlc-0.9.8a+osc.patch&lt;br /&gt;
* Patch against GIT master: http://www.aelius.com/njh/tmp/vlc-git+liblo.patch&lt;/div&gt;</summary>
		<author><name>Nhumfrey</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Documentation:Modules/mqtt&amp;diff=26712</id>
		<title>Documentation:Modules/mqtt</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Documentation:Modules/mqtt&amp;diff=26712"/>
		<updated>2014-04-12T09:33:02Z</updated>

		<summary type="html">&lt;p&gt;Nhumfrey: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;NOTE: this module is in active development and has not made it into the main tree yet.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Module|name=mqtt|type=Interface|os=Any that support the [http://mosquitto.org/ mosquitto] library|description=control VLC using the MQTT protocol}}&lt;br /&gt;
&lt;br /&gt;
This module will let you send control messages to VLC using the [http://www.mqtt.org/ MQTT] protocol.&lt;br /&gt;
&lt;br /&gt;
== Options ==&lt;br /&gt;
{{Option&lt;br /&gt;
|name=mqtt-host&lt;br /&gt;
|value=string&lt;br /&gt;
|default=localhost&lt;br /&gt;
|description=Hostname of MQTT broker to connect to&lt;br /&gt;
}}&lt;br /&gt;
{{Option&lt;br /&gt;
|name=mqtt-port&lt;br /&gt;
|value=integer&lt;br /&gt;
|default=1883&lt;br /&gt;
|description=Port number of MQTT broker to connect to&lt;br /&gt;
}}&lt;br /&gt;
{{Option&lt;br /&gt;
|name=mqtt-prefix&lt;br /&gt;
|value=string&lt;br /&gt;
|default=vlc/&lt;br /&gt;
|description=The topic name prefix to use&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Interfaces]]&lt;/div&gt;</summary>
		<author><name>Nhumfrey</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Documentation:Modules/mqtt&amp;diff=26701</id>
		<title>Documentation:Modules/mqtt</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Documentation:Modules/mqtt&amp;diff=26701"/>
		<updated>2014-04-10T23:58:25Z</updated>

		<summary type="html">&lt;p&gt;Nhumfrey: /* Options */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;NOTE: this module is in active development and has not made it into the main tree yet.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Module|name=mqtt|type=Interface|os=Any that support the [http://mosquitto.org/ mosquitto] library|description=control VLC using the MQTT protocol}}&lt;br /&gt;
&lt;br /&gt;
This module will let you send control messages to VLC using the [http://www.mqtt.org/ MQTT] protocol.&lt;br /&gt;
&lt;br /&gt;
== Options ==&lt;br /&gt;
{{Option&lt;br /&gt;
|name=mqtt-host&lt;br /&gt;
|value=string&lt;br /&gt;
|default=localhost&lt;br /&gt;
|description=Hostname of MQTT broker to connect to&lt;br /&gt;
}}&lt;br /&gt;
{{Option&lt;br /&gt;
|name=mqtt-port&lt;br /&gt;
|value=integer&lt;br /&gt;
|default=1883&lt;br /&gt;
|description=Port number of MQTT broker to connect to&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Interfaces]]&lt;/div&gt;</summary>
		<author><name>Nhumfrey</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Documentation:Modules/mqtt&amp;diff=26700</id>
		<title>Documentation:Modules/mqtt</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Documentation:Modules/mqtt&amp;diff=26700"/>
		<updated>2014-04-10T23:57:36Z</updated>

		<summary type="html">&lt;p&gt;Nhumfrey: Created page with &amp;quot;&amp;#039;&amp;#039;&amp;#039;NOTE: this module is in active development and has not made it into the main tree yet.&amp;#039;&amp;#039;&amp;#039;  {{Module|name=mqtt|type=Interface|os=Any that support the [http://mosquitto.org/ ...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;NOTE: this module is in active development and has not made it into the main tree yet.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Module|name=mqtt|type=Interface|os=Any that support the [http://mosquitto.org/ mosquitto] library|description=control VLC using the MQTT protocol}}&lt;br /&gt;
&lt;br /&gt;
This module will let you send control messages to VLC using the [http://www.mqtt.org/ MQTT] protocol.&lt;br /&gt;
&lt;br /&gt;
== Options ==&lt;br /&gt;
{{Option&lt;br /&gt;
|name=mqtt-port&lt;br /&gt;
|value=integer&lt;br /&gt;
|default=1883&lt;br /&gt;
|description=Port number of MQTT broker to connect o&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Interfaces]]&lt;/div&gt;</summary>
		<author><name>Nhumfrey</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Documentation:Modules/osc&amp;diff=13829</id>
		<title>Documentation:Modules/osc</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Documentation:Modules/osc&amp;diff=13829"/>
		<updated>2009-04-11T21:12:32Z</updated>

		<summary type="html">&lt;p&gt;Nhumfrey: Added patch for 0.9.9a&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;NOTE: this module is currently in development and has not made it into the main tree yet.&#039;&#039;&#039;&lt;br /&gt;
* Patch against VLC 0.9.9a: http://www.aelius.com/njh/tmp/vlc-0.9.9a+osc.patch&lt;br /&gt;
* Patch against VLC 0.9.8a: http://www.aelius.com/njh/tmp/vlc-0.9.8a+osc.patch&lt;br /&gt;
* Patch against GIT master: http://www.aelius.com/njh/tmp/vlc-git+liblo.patch&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Module|name=osc|type=Interface|os=Any that support the [http://liblo.sf.net/ liblo] library|description=control VLC using the Open Sound Control protocol}}&lt;br /&gt;
&lt;br /&gt;
This module lets you send control messages to VLC using the [http://www.opensoundcontrol.org/ Open Sound Control] protocol.&lt;br /&gt;
&lt;br /&gt;
The following methods are currently supported:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;amp;rarr; /deck/play          - Start playback&lt;br /&gt;
 &amp;amp;rarr; /deck/pause         - Pause playback&lt;br /&gt;
 &amp;amp;rarr; /deck/stop          - Stop playback&lt;br /&gt;
 &amp;amp;rarr; /deck/eject         - Eject (stops and clears the playlist)&lt;br /&gt;
 &amp;amp;rarr; /deck/load (s)      - Load &amp;amp;lt;mrl&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: These paths are designed to be compatible with [http://www.aelius.com/njh/madjack/ MadJACK] and are subject to change. They treat VLC as a single track player and playlist functionality isn&#039;t currently supported.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Options ==&lt;br /&gt;
{{Option&lt;br /&gt;
|name=osc-port&lt;br /&gt;
|value=integer&lt;br /&gt;
|default=randomly allocated port number&lt;br /&gt;
|description=Port number to listen on&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
Start VLC with the OSC control interface loaded:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ vlc -I dummy --control osc --osc-port 4444 &lt;br /&gt;
VLC media player 1.0.0-git Goldeneye&lt;br /&gt;
[00000001] main libvlc debug: VLC media player - version 1.0.0-git Goldeneye - (c) 1996-2008 the VideoLAN team&lt;br /&gt;
[00000001] main libvlc debug: translation test: code is &amp;quot;C&amp;quot;&lt;br /&gt;
[00000287] osc interface: Listening for OSC messages on: osc.udp://127.0.0.1:4444/&lt;br /&gt;
[00000293] dummy interface: using the dummy interface module...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Load a track:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ oscsend 127.0.0.1 4444 /deck/load &#039;s&#039; /Users/njh/Music/003820.mp3&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Start the track playing:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ oscsend 127.0.0.1 4444 /deck/play&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stop the track playing:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ oscsend 127.0.0.1 4444 /deck/stop&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Interfaces]]&lt;/div&gt;</summary>
		<author><name>Nhumfrey</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Documentation:Modules/osc&amp;diff=12934</id>
		<title>Documentation:Modules/osc</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Documentation:Modules/osc&amp;diff=12934"/>
		<updated>2008-12-26T17:00:05Z</updated>

		<summary type="html">&lt;p&gt;Nhumfrey: They are methods, not commands&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;NOTE: this module is currently in development and has not made it into the main tree yet.&#039;&#039;&#039;&lt;br /&gt;
* Patch against VLC 0.9.8a: http://www.aelius.com/njh/tmp/vlc-0.9.8a+osc.patch&lt;br /&gt;
* Patch against GIT master: http://www.aelius.com/njh/tmp/vlc-git+liblo.patch&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Module|name=osc|type=Interface|os=Any that support the [http://liblo.sf.net/ liblo] library|description=control VLC using the Open Sound Control protocol}}&lt;br /&gt;
&lt;br /&gt;
This module lets you send control messages to VLC using the [http://www.opensoundcontrol.org/ Open Sound Control] protocol.&lt;br /&gt;
&lt;br /&gt;
The following methods are currently supported:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;amp;rarr; /deck/play          - Start playback&lt;br /&gt;
 &amp;amp;rarr; /deck/pause         - Pause playback&lt;br /&gt;
 &amp;amp;rarr; /deck/stop          - Stop playback&lt;br /&gt;
 &amp;amp;rarr; /deck/eject         - Eject (stops and clears the playlist)&lt;br /&gt;
 &amp;amp;rarr; /deck/load (s)      - Load &amp;amp;lt;mrl&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: These paths are designed to be compatible with [http://www.aelius.com/njh/madjack/ MadJACK] and are subject to change. They treat VLC as a single track player and playlist functionality isn&#039;t currently supported.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Options ==&lt;br /&gt;
{{Option&lt;br /&gt;
|name=osc-port&lt;br /&gt;
|value=integer&lt;br /&gt;
|default=randomly allocated port number&lt;br /&gt;
|description=Port number to listen on&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
Start VLC with the OSC control interface loaded:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ vlc -I dummy --control osc --osc-port 4444 &lt;br /&gt;
VLC media player 1.0.0-git Goldeneye&lt;br /&gt;
[00000001] main libvlc debug: VLC media player - version 1.0.0-git Goldeneye - (c) 1996-2008 the VideoLAN team&lt;br /&gt;
[00000001] main libvlc debug: translation test: code is &amp;quot;C&amp;quot;&lt;br /&gt;
[00000287] osc interface: Listening for OSC messages on: osc.udp://127.0.0.1:4444/&lt;br /&gt;
[00000293] dummy interface: using the dummy interface module...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Load a track:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ oscsend 127.0.0.1 4444 /deck/load &#039;s&#039; /Users/njh/Music/003820.mp3&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Start the track playing:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ oscsend 127.0.0.1 4444 /deck/play&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stop the track playing:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ oscsend 127.0.0.1 4444 /deck/stop&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Interfaces]]&lt;/div&gt;</summary>
		<author><name>Nhumfrey</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Documentation:Modules/osc&amp;diff=12930</id>
		<title>Documentation:Modules/osc</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Documentation:Modules/osc&amp;diff=12930"/>
		<updated>2008-12-24T16:51:37Z</updated>

		<summary type="html">&lt;p&gt;Nhumfrey: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;NOTE: this module is currently in development and has not made it into the main tree yet.&#039;&#039;&#039;&lt;br /&gt;
* Patch against VLC 0.9.8a: http://www.aelius.com/njh/tmp/vlc-0.9.8a+osc.patch&lt;br /&gt;
* Patch against GIT master: http://www.aelius.com/njh/tmp/vlc-git+liblo.patch&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Module|name=osc|type=Interface|os=Any that support the [http://liblo.sf.net/ liblo] library|description=control VLC using the Open Sound Control protocol}}&lt;br /&gt;
&lt;br /&gt;
This module lets you send control messages to VLC using the [http://www.opensoundcontrol.org/ Open Sound Control] protocol.&lt;br /&gt;
&lt;br /&gt;
The following commands are currently supported:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;amp;rarr; /deck/play          - Start playback&lt;br /&gt;
 &amp;amp;rarr; /deck/pause         - Pause playback&lt;br /&gt;
 &amp;amp;rarr; /deck/stop          - Stop playback&lt;br /&gt;
 &amp;amp;rarr; /deck/eject         - Eject (stops and clears the playlist)&lt;br /&gt;
 &amp;amp;rarr; /deck/load (s)      - Load &amp;amp;lt;mrl&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: These paths are designed to be compatible with [http://www.aelius.com/njh/madjack/ MadJACK] and are subject to change. They treat VLC as a single track player and playlist functionality isn&#039;t currently supported.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Options ==&lt;br /&gt;
{{Option&lt;br /&gt;
|name=osc-port&lt;br /&gt;
|value=integer&lt;br /&gt;
|default=randomly allocated port number&lt;br /&gt;
|description=Port number to listen on&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
Start VLC with the OSC control interface loaded:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ vlc -I dummy --control osc --osc-port 4444 &lt;br /&gt;
VLC media player 1.0.0-git Goldeneye&lt;br /&gt;
[00000001] main libvlc debug: VLC media player - version 1.0.0-git Goldeneye - (c) 1996-2008 the VideoLAN team&lt;br /&gt;
[00000001] main libvlc debug: translation test: code is &amp;quot;C&amp;quot;&lt;br /&gt;
[00000287] osc interface: Listening for OSC messages on: osc.udp://127.0.0.1:4444/&lt;br /&gt;
[00000293] dummy interface: using the dummy interface module...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Load a track:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ oscsend 127.0.0.1 4444 /deck/load &#039;s&#039; /Users/njh/Music/003820.mp3&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Start the track playing:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ oscsend 127.0.0.1 4444 /deck/play&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stop the track playing:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ oscsend 127.0.0.1 4444 /deck/stop&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Interfaces]]&lt;/div&gt;</summary>
		<author><name>Nhumfrey</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Documentation:Modules/osc&amp;diff=12926</id>
		<title>Documentation:Modules/osc</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Documentation:Modules/osc&amp;diff=12926"/>
		<updated>2008-12-24T01:14:58Z</updated>

		<summary type="html">&lt;p&gt;Nhumfrey: Added links to patches&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;NOTE: this module is currently in development and has not made it into the main tree yet.&#039;&#039;&#039;&lt;br /&gt;
* Patch against VLC 0.9.8a: http://www.aelius.com/njh/tmp/vlc-0.9.8a+osc.patch&lt;br /&gt;
* Patch against GIT master: http://www.aelius.com/njh/tmp/vlc-git+liblo.patch&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Module|name=osc|type=Interface|os=Any that support the [http://liblo.sf.net/ liblo] library|description=control VLC using the Open Sound Control protocol}}&lt;br /&gt;
&lt;br /&gt;
This module lets you send control messages to VLC using the [http://www.opensourcecontrol.org/ Open Sound Control] protocol.&lt;br /&gt;
&lt;br /&gt;
The following commands are currently supported:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;amp;rarr; /deck/play          - Start playback&lt;br /&gt;
 &amp;amp;rarr; /deck/pause         - Pause playback&lt;br /&gt;
 &amp;amp;rarr; /deck/stop          - Stop playback&lt;br /&gt;
 &amp;amp;rarr; /deck/eject         - Eject (stops and clears the playlist)&lt;br /&gt;
 &amp;amp;rarr; /deck/load (s)      - Load &amp;amp;lt;mrl&amp;amp;gt; (stops and clears the playlist first)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: These paths are designed to be compatible with [http://www.aelius.com/njh/madjack/ MadJACK] and are subject to change. They treat VLC as a single track player and playlist functionality isn&#039;t currently supported.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Options ==&lt;br /&gt;
{{Option&lt;br /&gt;
|name=osc-port&lt;br /&gt;
|value=integer&lt;br /&gt;
|default=randomly allocated port number&lt;br /&gt;
|description=Port number to listen on&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
Start VLC with the OSC control interface loaded:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ vlc -I dummy --control osc --osc-port 4444 &lt;br /&gt;
VLC media player 1.0.0-git Goldeneye&lt;br /&gt;
[00000001] main libvlc debug: VLC media player - version 1.0.0-git Goldeneye - (c) 1996-2008 the VideoLAN team&lt;br /&gt;
[00000001] main libvlc debug: translation test: code is &amp;quot;C&amp;quot;&lt;br /&gt;
[00000287] osc interface: Listening for OSC messages on: osc.udp://127.0.0.1:4444/&lt;br /&gt;
[00000293] dummy interface: using the dummy interface module...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Load a track:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ oscsend 127.0.0.1 4444 /deck/load &#039;s&#039; /Users/njh/Music/003820.mp3&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Start the track playing:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ oscsend 127.0.0.1 4444 /deck/play&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stop the track playing:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ oscsend 127.0.0.1 4444 /deck/stop&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Interfaces]]&lt;/div&gt;</summary>
		<author><name>Nhumfrey</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Documentation:Modules/osc&amp;diff=12914</id>
		<title>Documentation:Modules/osc</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Documentation:Modules/osc&amp;diff=12914"/>
		<updated>2008-12-20T22:53:01Z</updated>

		<summary type="html">&lt;p&gt;Nhumfrey: NOTE: this module is currently in development and has not made it into the main tree yet.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;NOTE: this module is currently in development and has not made it into the main tree yet.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Module|name=osc|type=Interface|os=Any that support the [http://liblo.sf.net/ liblo] library|description=control VLC using the Open Sound Control protocol}}&lt;br /&gt;
&lt;br /&gt;
This module lets you send control messages to VLC using the [http://www.opensourcecontrol.org/ Open Sound Control] protocol.&lt;br /&gt;
&lt;br /&gt;
The following commands are currently supported:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;amp;rarr; /deck/play          - Start playback&lt;br /&gt;
 &amp;amp;rarr; /deck/pause         - Pause playback&lt;br /&gt;
 &amp;amp;rarr; /deck/stop          - Stop playback&lt;br /&gt;
 &amp;amp;rarr; /deck/eject         - Eject (stops and clears the playlist)&lt;br /&gt;
 &amp;amp;rarr; /deck/load (s)      - Load &amp;amp;lt;mrl&amp;amp;gt; (stops and clears the playlist first)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: These paths are designed to be compatible with [http://www.aelius.com/njh/madjack/ MadJACK] and are subject to change. They treat VLC as a single track player and playlist functionality isn&#039;t currently supported.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Options ==&lt;br /&gt;
{{Option&lt;br /&gt;
|name=osc-port&lt;br /&gt;
|value=integer&lt;br /&gt;
|default=randomly allocated port number&lt;br /&gt;
|description=Port number to listen on&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
Start VLC with the OSC control interface loaded:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ vlc -I dummy --control osc --osc-port 4444 &lt;br /&gt;
VLC media player 1.0.0-git Goldeneye&lt;br /&gt;
[00000001] main libvlc debug: VLC media player - version 1.0.0-git Goldeneye - (c) 1996-2008 the VideoLAN team&lt;br /&gt;
[00000001] main libvlc debug: translation test: code is &amp;quot;C&amp;quot;&lt;br /&gt;
[00000287] osc interface: Listening for OSC messages on: osc.udp://127.0.0.1:4444/&lt;br /&gt;
[00000293] dummy interface: using the dummy interface module...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Load a track:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ oscsend 127.0.0.1 4444 /deck/load &#039;s&#039; /Users/njh/Music/003820.mp3&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Start the track playing:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ oscsend 127.0.0.1 4444 /deck/play&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stop the track playing:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ oscsend 127.0.0.1 4444 /deck/stop&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Interfaces]]&lt;/div&gt;</summary>
		<author><name>Nhumfrey</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Documentation:Modules/osc&amp;diff=12853</id>
		<title>Documentation:Modules/osc</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Documentation:Modules/osc&amp;diff=12853"/>
		<updated>2008-12-14T20:40:45Z</updated>

		<summary type="html">&lt;p&gt;Nhumfrey: Added to the Interfaces category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Module|name=osc|type=Interface|os=Any that support the [http://liblo.sf.net/ liblo] library|description=control VLC using the Open Sound Control protocol}}&lt;br /&gt;
&lt;br /&gt;
This module lets you send control messages to VLC using the [http://www.opensourcecontrol.org/ Open Sound Control] protocol.&lt;br /&gt;
&lt;br /&gt;
The following commands are currently supported:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;amp;rarr; /deck/play          - Start playback&lt;br /&gt;
 &amp;amp;rarr; /deck/pause         - Pause playback&lt;br /&gt;
 &amp;amp;rarr; /deck/stop          - Stop playback&lt;br /&gt;
 &amp;amp;rarr; /deck/eject         - Eject (stops and clears the playlist)&lt;br /&gt;
 &amp;amp;rarr; /deck/load (s)      - Load &amp;amp;lt;mrl&amp;amp;gt; (stops and clears the playlist first)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: These paths are designed to be compatible with [http://www.aelius.com/njh/madjack/ MadJACK] and are subject to change. They treat VLC as a single track player and playlist functionality isn&#039;t currently supported.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Options ==&lt;br /&gt;
{{Option&lt;br /&gt;
|name=osc-port&lt;br /&gt;
|value=integer&lt;br /&gt;
|default=randomly allocated port number&lt;br /&gt;
|description=Port number to listen on&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
Start VLC with the OSC control interface loaded:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ vlc -I dummy --control osc --osc-port 4444 &lt;br /&gt;
VLC media player 1.0.0-git Goldeneye&lt;br /&gt;
[00000001] main libvlc debug: VLC media player - version 1.0.0-git Goldeneye - (c) 1996-2008 the VideoLAN team&lt;br /&gt;
[00000001] main libvlc debug: translation test: code is &amp;quot;C&amp;quot;&lt;br /&gt;
[00000287] osc interface: Listening for OSC messages on: osc.udp://127.0.0.1:4444/&lt;br /&gt;
[00000293] dummy interface: using the dummy interface module...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Load a track:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ oscsend 127.0.0.1 4444 /deck/load &#039;s&#039; /Users/njh/Music/003820.mp3&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Start the track playing:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ oscsend 127.0.0.1 4444 /deck/play&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stop the track playing:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ oscsend 127.0.0.1 4444 /deck/stop&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Interfaces]]&lt;/div&gt;</summary>
		<author><name>Nhumfrey</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Documentation:Modules/osc&amp;diff=12851</id>
		<title>Documentation:Modules/osc</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Documentation:Modules/osc&amp;diff=12851"/>
		<updated>2008-12-13T23:26:04Z</updated>

		<summary type="html">&lt;p&gt;Nhumfrey: changed version number in &amp;#039;screenshot&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Module|name=osc|type=Interface|os=Any that support the [http://liblo.sf.net/ liblo] library|description=control VLC using the Open Sound Control protocol}}&lt;br /&gt;
&lt;br /&gt;
This module lets you send control messages to VLC using the [http://www.opensourcecontrol.org/ Open Sound Control] protocol.&lt;br /&gt;
&lt;br /&gt;
The following commands are currently supported:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;amp;rarr; /deck/play          - Start playback&lt;br /&gt;
 &amp;amp;rarr; /deck/pause         - Pause playback&lt;br /&gt;
 &amp;amp;rarr; /deck/stop          - Stop playback&lt;br /&gt;
 &amp;amp;rarr; /deck/eject         - Eject (stops and clears the playlist)&lt;br /&gt;
 &amp;amp;rarr; /deck/load (s)      - Load &amp;amp;lt;mrl&amp;amp;gt; (stops and clears the playlist first)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: These paths are designed to be compatible with [http://www.aelius.com/njh/madjack/ MadJACK] and are subject to change. They treat VLC as a single track player and playlist functionality isn&#039;t currently supported.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Options ==&lt;br /&gt;
{{Option&lt;br /&gt;
|name=osc-port&lt;br /&gt;
|value=integer&lt;br /&gt;
|default=randomly allocated port number&lt;br /&gt;
|description=Port number to listen on&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
Start VLC with the OSC control interface loaded:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ vlc -I dummy --control osc --osc-port 4444 &lt;br /&gt;
VLC media player 1.0.0-git Goldeneye&lt;br /&gt;
[00000001] main libvlc debug: VLC media player - version 1.0.0-git Goldeneye - (c) 1996-2008 the VideoLAN team&lt;br /&gt;
[00000001] main libvlc debug: translation test: code is &amp;quot;C&amp;quot;&lt;br /&gt;
[00000287] osc interface: Listening for OSC messages on: osc.udp://vmware.aelius.co.uk:4444/&lt;br /&gt;
[00000293] dummy interface: using the dummy interface module...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Load a track:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ oscsend 127.0.0.1 4444 /deck/load &#039;s&#039; /Users/njh/Music/003820.mp3&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Start the track playing:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ oscsend 127.0.0.1 4444 /deck/play&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stop the track playing:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ oscsend 127.0.0.1 4444 /deck/stop&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nhumfrey</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Documentation:Modules/osc&amp;diff=12850</id>
		<title>Documentation:Modules/osc</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Documentation:Modules/osc&amp;diff=12850"/>
		<updated>2008-12-13T20:48:23Z</updated>

		<summary type="html">&lt;p&gt;Nhumfrey: Added example&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Module|name=osc|type=Interface|os=Any that support the [http://liblo.sf.net/ liblo] library|description=control VLC using the Open Sound Control protocol}}&lt;br /&gt;
&lt;br /&gt;
This module lets you send control messages to VLC using the [http://www.opensourcecontrol.org/ Open Sound Control] protocol.&lt;br /&gt;
&lt;br /&gt;
The following commands are currently supported:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;amp;rarr; /deck/play          - Start playback&lt;br /&gt;
 &amp;amp;rarr; /deck/pause         - Pause playback&lt;br /&gt;
 &amp;amp;rarr; /deck/stop          - Stop playback&lt;br /&gt;
 &amp;amp;rarr; /deck/eject         - Eject (stops and clears the playlist)&lt;br /&gt;
 &amp;amp;rarr; /deck/load (s)      - Load &amp;amp;lt;mrl&amp;amp;gt; (stops and clears the playlist first)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: These paths are designed to be compatible with [http://www.aelius.com/njh/madjack/ MadJACK] and are subject to change. They treat VLC as a single track player and playlist functionality isn&#039;t currently supported.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Options ==&lt;br /&gt;
{{Option&lt;br /&gt;
|name=osc-port&lt;br /&gt;
|value=integer&lt;br /&gt;
|default=randomly allocated port number&lt;br /&gt;
|description=Port number to listen on&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
Start VLC with the OSC control interface loaded:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ vlc -I dummy --control osc --osc-port 4444 &lt;br /&gt;
VLC media player 0.9.8a Grishenko&lt;br /&gt;
[00000001] main libvlc debug: VLC media player - version 0.9.8a Grishenko - (c) 1996-2008 the VideoLAN team&lt;br /&gt;
[00000001] main libvlc debug: translation test: code is &amp;quot;C&amp;quot;&lt;br /&gt;
[00000287] osc interface: Listening for OSC messages on: osc.udp://vmware.aelius.co.uk:4444/&lt;br /&gt;
[00000293] dummy interface: using the dummy interface module...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Load a track:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ oscsend 127.0.0.1 4444 /deck/load &#039;s&#039; /Users/njh/Music/003820.mp3&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Start the track playing:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ oscsend 127.0.0.1 4444 /deck/play&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stop the track playing:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ oscsend 127.0.0.1 4444 /deck/stop&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nhumfrey</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Documentation:Modules/lirc&amp;diff=12849</id>
		<title>Documentation:Modules/lirc</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Documentation:Modules/lirc&amp;diff=12849"/>
		<updated>2008-12-13T18:10:34Z</updated>

		<summary type="html">&lt;p&gt;Nhumfrey: New page: {{Module|name=lirc|type=Interface|os=Any that supports [http://www.lirc.org/ lirc] library|description=Infrared remote control interface}}  This module lets you control VLC using your infr...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Module|name=lirc|type=Interface|os=Any that supports [http://www.lirc.org/ lirc] library|description=Infrared remote control interface}}&lt;br /&gt;
&lt;br /&gt;
This module lets you control VLC using your infrared remote control using lirc.&lt;br /&gt;
&lt;br /&gt;
== Options ==&lt;br /&gt;
{{Option&lt;br /&gt;
|name=lirc-file&lt;br /&gt;
|value=string&lt;br /&gt;
|description=Tell lirc to read this configuration file. By default it searches in the users home directory.&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Nhumfrey</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Documentation:Modules/osc&amp;diff=12848</id>
		<title>Documentation:Modules/osc</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Documentation:Modules/osc&amp;diff=12848"/>
		<updated>2008-12-13T17:01:35Z</updated>

		<summary type="html">&lt;p&gt;Nhumfrey: Changed type from Control to Interface&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Module|name=osc|type=Interface|os=Any that support the [http://liblo.sf.net/ liblo] library|description=control VLC using the Open Sound Control protocol}}&lt;br /&gt;
&lt;br /&gt;
This module lets you send control messages to VLC using the [http://www.opensourcecontrol.org/ Open Sound Control] protocol.&lt;br /&gt;
&lt;br /&gt;
The following commands are currently supported:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;amp;rarr; /deck/play          - Start deck playing&lt;br /&gt;
 &amp;amp;rarr; /deck/pause         - Pause deck&lt;br /&gt;
 &amp;amp;rarr; /deck/stop          - Stop Deck playback&lt;br /&gt;
 &amp;amp;rarr; /deck/eject         - Eject the current track from deck&lt;br /&gt;
 &amp;amp;rarr; /deck/load (s)      - Load &amp;amp;lt;mrl&amp;amp;gt; into deck&lt;br /&gt;
 &amp;amp;rarr; /deck/volume (i)    - Load &amp;amp;lt;filename&amp;amp;gt; into deck&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NOTE: These paths are designed to be compatible with [http://www.aelius.com/njh/madjack/ MadJACK] but are subject to change.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Options ==&lt;br /&gt;
{{Option&lt;br /&gt;
|name=osc-port&lt;br /&gt;
|value=integer&lt;br /&gt;
|default=randomly allocated port number&lt;br /&gt;
|description=Port number to listen on&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Nhumfrey</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Documentation:Modules/rc&amp;diff=12847</id>
		<title>Documentation:Modules/rc</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Documentation:Modules/rc&amp;diff=12847"/>
		<updated>2008-12-13T17:00:38Z</updated>

		<summary type="html">&lt;p&gt;Nhumfrey: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Module|name=rc|type=Interface|description=Text based command interface}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
The remote control interface (rc for short) is one of the three console interfaces provided by VLC. The other two being [[Documentation:Modules/ncurses|ncurses]] and [[Documentation:Modules/telnet|telnet]].&lt;br /&gt;
&lt;br /&gt;
To force VLC into using this interface, do the following:&lt;br /&gt;
&lt;br /&gt;
 vlc -I rc&lt;br /&gt;
&lt;br /&gt;
This interface is operated through textual commands typed into the invoking terminal window.&lt;br /&gt;
&lt;br /&gt;
This is the default interface if no GUI environment is available.&lt;br /&gt;
&lt;br /&gt;
== Command reference ==&lt;br /&gt;
Type &amp;lt;tt&amp;gt;help&amp;lt;/tt&amp;gt; followed by enter for a terse list of commands or &amp;lt;tt&amp;gt;longhelp&amp;lt;/tt&amp;gt; for the complete list.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Paste help and/or longhelp output here --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Command line options ==&lt;br /&gt;
There are several options you can use in conjunction with the rc interface:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| &#039;&#039;&#039;Option&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Enabled by default&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;--rc-show-pos&amp;lt;/tt&amp;gt;&lt;br /&gt;
| Show stream position&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;--no-rc-show-pos&amp;lt;/tt&amp;gt;&lt;br /&gt;
| Show the current position in seconds within the stream from time to time.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;--rc-fake-tty&amp;lt;/tt&amp;gt;&lt;br /&gt;
| Fake TTY&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;--no-rc-fake-tty&amp;lt;/tt&amp;gt;&lt;br /&gt;
| Force the rc module to use stdin as if it was a TTY.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;--rc-unix=&amp;lt;string&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
| UNIX socket command input. Accept commands over a Unix socket rather than stdin.&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;--rc-host=&amp;lt;string&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
| TCP command input. Accept commands over a socket rather than stdin. You can set the address and port the interface will bind to.&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;--rc-quiet&amp;lt;/tt&amp;gt;&lt;br /&gt;
| Do not open a DOS command box interface&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;--no-rc-quiet&amp;lt;/tt&amp;gt;&lt;br /&gt;
| By default the rc interface plugin will start a DOS command box. Enabling the quiet mode will not bring this command box but can also be pretty annoying when you want to stop VLC and no video window is open.&lt;br /&gt;
| No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To get this list run&lt;br /&gt;
 vlc -p rc --advanced --help-verbose&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous ==&lt;br /&gt;
Starting with VLC 0.8.0 you can access this interface through a network with a telnet-client by using the &amp;lt;tt&amp;gt;--rc-host localhost:port&amp;lt;/tt&amp;gt; option.&lt;/div&gt;</summary>
		<author><name>Nhumfrey</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Documentation:Modules/osc&amp;diff=12846</id>
		<title>Documentation:Modules/osc</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Documentation:Modules/osc&amp;diff=12846"/>
		<updated>2008-12-13T16:58:40Z</updated>

		<summary type="html">&lt;p&gt;Nhumfrey: Added OSC interface module page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Module|name=osc|type=Control|os=Any that support the [http://liblo.sf.net/ liblo] library|description=control VLC using the Open Sound Control protocol}}&lt;br /&gt;
&lt;br /&gt;
This module lets you send control messages to VLC using the [http://www.opensourcecontrol.org/ Open Sound Control] protocol.&lt;br /&gt;
&lt;br /&gt;
The following commands are currently supported:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;amp;rarr; /deck/play          - Start deck playing&lt;br /&gt;
 &amp;amp;rarr; /deck/pause         - Pause deck&lt;br /&gt;
 &amp;amp;rarr; /deck/stop          - Stop Deck playback&lt;br /&gt;
 &amp;amp;rarr; /deck/eject         - Eject the current track from deck&lt;br /&gt;
 &amp;amp;rarr; /deck/load (s)      - Load &amp;amp;lt;mrl&amp;amp;gt; into deck&lt;br /&gt;
 &amp;amp;rarr; /deck/volume (i)    - Load &amp;amp;lt;filename&amp;amp;gt; into deck&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NOTE: These paths are designed to be compatible with [http://www.aelius.com/njh/madjack/ MadJACK] but are subject to change.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Options ==&lt;br /&gt;
{{Option&lt;br /&gt;
|name=osc-port&lt;br /&gt;
|value=integer&lt;br /&gt;
|default=randomly allocated port number&lt;br /&gt;
|description=Port number to listen on&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Nhumfrey</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Documentation:Modules&amp;diff=12845</id>
		<title>Documentation:Modules</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Documentation:Modules&amp;diff=12845"/>
		<updated>2008-12-13T16:57:53Z</updated>

		<summary type="html">&lt;p&gt;Nhumfrey: Put OSC in the wrong interfaces section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
This page lists most of the modules present in the official VLC source code. Understanding these pages might require that you know about VLC and its command line usage. It is recommended that you read the other [[Documentation:Documentation|documentation]] first.&lt;br /&gt;
&lt;br /&gt;
To list all the available modules in your VLC build, use:&lt;br /&gt;
 % &#039;&#039;&#039;vlc --list&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
To list a module&#039;s configuration options, use:&lt;br /&gt;
 % &#039;&#039;&#039;vlc -p &amp;lt;modulename&amp;gt; --advanced --help-verbose&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Interfaces ==&lt;br /&gt;
&lt;br /&gt;
=== Graphical ===&lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Modules/wxWidgets|wxWidgets]]&lt;br /&gt;
*[[Documentation:Modules/skins2|Skins2]]&lt;br /&gt;
*[[Documentation:Modules/Qt4|Qt4]]&lt;br /&gt;
*[[Documentation:Modules/macosx_gui|Mac OS X]]&lt;br /&gt;
*[[Documentation:Modules/beos_gui|BeOS]]&lt;br /&gt;
*[[Documentation:Modules/wince|Windows CE]]&lt;br /&gt;
&lt;br /&gt;
=== Text ===&lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Modules/rc|remote control (rc)]]&lt;br /&gt;
*[[Documentation:Modules/telnet|telnet]]&lt;br /&gt;
*[[Documentation:Modules/ncurses|ncurses]]&lt;br /&gt;
&lt;br /&gt;
=== Other ===&lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Modules/http_intf|HTTP]]&lt;br /&gt;
*[[Documentation:Modules/hotkeys|Hotkeys]]&lt;br /&gt;
*[[Documentation:Modules/lirc|lirc]]&lt;br /&gt;
*[[Documentation:Modules/osc|osc]]&lt;br /&gt;
&lt;br /&gt;
== Outputs ==&lt;br /&gt;
&lt;br /&gt;
=== Audio Output ===&lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Modules/directx_aout|DirectX]]&lt;br /&gt;
*[[Documentation:Modules/waveout|waveout]]&lt;br /&gt;
*[[Documentation:Modules/portaudio|portaudio]]&lt;br /&gt;
*[[Documentation:Modules/sdl_aout|SDL]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Modules/auhal|AUHAL]]&lt;br /&gt;
*[[Documentation:Modules/jack|jack]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Modules/alsa|Alsa]]&lt;br /&gt;
*[[Documentation:Modules/oss|OSS]]&lt;br /&gt;
*[[Documentation:Modules/arts|aRts]]&lt;br /&gt;
*[[Documentation:Modules/esd|esound]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Modules/file_aout|file]]&lt;br /&gt;
&lt;br /&gt;
=== Video Output ===&lt;br /&gt;
*[[Documentation:Modules/direct3d|Direct3D]]&lt;br /&gt;
*[[Documentation:Modules/directx_vout|DirectX]]&lt;br /&gt;
*[[Documentation:Modules/wingdi|Windows GDI]]&lt;br /&gt;
*[[Documentation:Modules/glwin32|OpenGL for windows]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Modules/opengl|OpenGL]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Modules/xvideo|XVideo]]&lt;br /&gt;
*[[Documentation:Modules/x11|X11]]&lt;br /&gt;
*[[Documentation:Modules/glx|OpenGL (GLX)]]&lt;br /&gt;
*[[Documentation:Modules/fb|Framebuffer]]&lt;br /&gt;
*[[Documentation:Modules/directfb|Direct framebuffer]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Modules/sdl_vout|SDL]]&lt;br /&gt;
*[[Documentation:Modules/caca|Colored ASCII Art]]&lt;br /&gt;
*[[Documentation:Modules/aa|ASCII Art]]&lt;br /&gt;
*[[Documentation:Modules/image|Image]]&lt;br /&gt;
&lt;br /&gt;
=== Stream Output ===&lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Modules/standard|Standard (std)]]&lt;br /&gt;
*[[Documentation:Modules/transcode|Transcode]]&lt;br /&gt;
*[[Documentation:Modules/duplicate|Duplicate]]&lt;br /&gt;
*[[Documentation:Modules/rtp|RTP]]&lt;br /&gt;
*[[Documentation:Modules/es|Elementary Stream (es)]]&lt;br /&gt;
*[[Documentation:Modules/display|Display]]&lt;br /&gt;
*[[Documentation:Modules/dummy_sout|Dummy]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Modules/bridge-out|Bridge Out]]&lt;br /&gt;
*[[Documentation:Modules/bridge-in|Bridge In]]&lt;br /&gt;
*[[Documentation:Modules/mosaic-bridge|Mosaic Bridge]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Modules/autodel|Autodel]]&lt;br /&gt;
*[[Documentation:Modules/gather|Gather]]&lt;br /&gt;
*[[Documentation:Modules/description|Description]]&lt;br /&gt;
*[[Documentation:Modules/switcher|Switcher]]&lt;br /&gt;
*[[Documentation:Modules/transrate|Transrate]]&lt;br /&gt;
&lt;br /&gt;
== Filters ==&lt;br /&gt;
&lt;br /&gt;
=== Audio Filters ===&lt;br /&gt;
&lt;br /&gt;
=== Video Filters ===&lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Modules/adjust|Adjust]]&lt;br /&gt;
*[[Documentation:Modules/gradient|Gradient]]&lt;br /&gt;
*[[Documentation:Modules/invert|Invert]]&lt;br /&gt;
*[[Documentation:Modules/wave|Wave]]&lt;br /&gt;
*[[Documentation:Modules/ripple|Ripple]]&lt;br /&gt;
*[[Documentation:Modules/motionblur|Motion Blur]]&lt;br /&gt;
*[[Documentation:Modules/psychedelic|Psychedelic]]&lt;br /&gt;
*[[Documentation:Modules/noise|Noise]]&lt;br /&gt;
*[[Documentation:Modules/colorthres|Color Threshold]]&lt;br /&gt;
*[[Documentation:Modules/rotate|Rotate]]&lt;br /&gt;
*[[Documentation:Modules/extract|Extract]]&lt;br /&gt;
*[[Documentation:Modules/erase|Logo Erase]]&lt;br /&gt;
*[[Documentation:Modules/gaussianblur|Gaussian Blur]]&lt;br /&gt;
*[[Documentation:Modules/sharpen|Sharpen]]&lt;br /&gt;
&lt;br /&gt;
The following video filters are for use in transcode only:&lt;br /&gt;
*[[Documentation:Modules/croppadd|Crop Padd]]&lt;br /&gt;
*[[Documentation:Modules/canvas|Canvas]]&lt;br /&gt;
&lt;br /&gt;
The following video filters are for use in the mosaic framework only:&lt;br /&gt;
*[[Documentation:Modules/bluescreen|Blue Screen]]&lt;br /&gt;
*[[Documentation:Modules/alphamask|Alpha mask]]&lt;br /&gt;
&lt;br /&gt;
=== Video Sub-Filters ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Modules/marq|Marq]]&lt;br /&gt;
*[[Documentation:Modules/rss|RSS]]&lt;br /&gt;
*[[Documentation:Modules/logo|Logo]]&lt;br /&gt;
*[[Documentation:Modules/mosaic|Mosaic]]&lt;br /&gt;
*[[Documentation:Modules/time|Time]] (up to 0.8.6)&lt;br /&gt;
&lt;br /&gt;
=== Video Output Filters ===&lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Modules/deinterlace|Deinterlace]]&lt;br /&gt;
*[[Documentation:Modules/transform|Transform]]&lt;br /&gt;
*[[Documentation:Modules/wall|Wall]]&lt;br /&gt;
*[[Documentation:Modules/crop|Crop]]&lt;br /&gt;
*[[Documentation:Modules/panoramix|Panoramix]]&lt;br /&gt;
*[[Documentation:Modules/clone|Clone]]&lt;br /&gt;
*[[Documentation:Modules/logo|Logo]]&lt;br /&gt;
*[[Documentation:Modules/magnify|Magnify]]&lt;br /&gt;
*[[Documentation:Modules/puzzle|Puzzle]]&lt;br /&gt;
*[[Documentation:Modules/distort|Distort]] (up to 0.8.6)&lt;br /&gt;
&lt;br /&gt;
=== Visualizations ===&lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Modules/visualizer|Visualizer]]&lt;br /&gt;
*[[Documentation:Modules/goom|Goom]]&lt;br /&gt;
*[[Documentation:Modules/galaktos|Galaktos]]&lt;br /&gt;
&lt;br /&gt;
=== Access Filters ===&lt;br /&gt;
*[[Documentation:Modules/timeshift|Timeshift]]&lt;br /&gt;
*[[Documentation:Modules/record|Record]]&lt;br /&gt;
*[[Documentation:Modules/dump|Dump]]&lt;br /&gt;
*[[Documentation:Modules/bandwidth|Bandwidth]]&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
&lt;br /&gt;
=== Accesses ===&lt;br /&gt;
*[[Documentation:Modules/file|File Input]] - for reading local files&lt;br /&gt;
*[[Documentation:Modules/directory|Directory]]&lt;br /&gt;
*[[Documentation:Modules/dvdnav|DVDnav Input]]&lt;br /&gt;
*[[Documentation:Modules/dvdread|DVDRead Input]] - DVD without menu support&lt;br /&gt;
*[[Documentation:Modules/vcd|VCD]]&lt;br /&gt;
*[[Documentation:Modules/http|HTTP Input]]&lt;br /&gt;
*[[Documentation:Modules/ftp|FTP Input]]&lt;br /&gt;
*[[Documentation:Modules/udp|UDP/RTP Input]]&lt;br /&gt;
*[[Documentation:Modules/rtsp|RTSP]] - &lt;br /&gt;
*[[Documentation:Modules/rtmp|RTMP]] - Real Time Media Player&lt;br /&gt;
*[[Documentation:Modules/mms|MMS]] - reading from the MicroSoft Media Server&lt;br /&gt;
*[[Documentation:Modules/screen|Screen Input]] - grabbing the currently active screen&lt;br /&gt;
*[[Documentation:Modules/fake|Fake]] - presents a static image as a video stream&lt;br /&gt;
*[[Documentation:Modules/rawvid|Raw Video]] - streams of bitmap images&lt;br /&gt;
*[[Documentation:Modules/mkv|Matroska stream]]&lt;br /&gt;
*[[Documentation:Modules/h264|H.264 Video]]&lt;br /&gt;
*[[Documentation:Modules/pvr|IVTV MPEG Encoding Card Input]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Linux specific:&lt;br /&gt;
*[[Documentation:Modules/dv|DV]]&lt;br /&gt;
*[[Documentation:Modules/dvb|DVB Input]]&lt;br /&gt;
*[[Documentation:Modules/pvr|PVR]]&lt;br /&gt;
*[[Documentation:Modules/v4l|Video4Linux (v4l)]]&lt;br /&gt;
*[[Documentation:Modules/v4l2|Video4Linux2 (v4l2)]]&lt;br /&gt;
*[[Dc1394|Dc 1394]] FIXME: shouldn&#039;t link outside of Documentation:Modules/&lt;br /&gt;
Windows specific:&lt;br /&gt;
*[[Documentation:Modules/bda|BDA]]&lt;br /&gt;
*[[Documentation:Modules/dshow|DirectShow]]&lt;br /&gt;
&lt;br /&gt;
=== Access Outputs ===&lt;br /&gt;
&lt;br /&gt;
=== Codecs ===&lt;br /&gt;
&lt;br /&gt;
==== Audio ====&lt;br /&gt;
==== Video ====&lt;br /&gt;
==== Subtitles ====&lt;br /&gt;
&lt;br /&gt;
=== Demuxers ===&lt;br /&gt;
==== Playlist ====&lt;br /&gt;
*[[Documentation:Modules/m3u-open|m3u]]&lt;br /&gt;
*[[Documentation:Modules/pls-open|pls]]&lt;br /&gt;
*[[Documentation:Modules/b4s-open|b4s]]&lt;br /&gt;
*[[Documentation:Modules/dvb-open|dvb]]&lt;br /&gt;
*[[Documentation:Modules/podcast|podcast]]&lt;br /&gt;
*[[Documentation:Modules/xspf-open|XSPF]]&lt;br /&gt;
*[[Documentation:Modules/shout-winamp|Winamp Shoutcast]]&lt;br /&gt;
*[[Documentation:Modules/asx-open|ASX]]&lt;br /&gt;
*[[Documentation:Modules/sgimb|sgimb]]&lt;br /&gt;
*[[Documentation:Modules/qtl|QTL]]&lt;br /&gt;
*[[Documentation:Modules/gvi|gvi]]&lt;br /&gt;
&lt;br /&gt;
=== Muxers ===&lt;br /&gt;
&lt;br /&gt;
=== Service Discovery ===&lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Modules/sap|SAP]]&lt;br /&gt;
*[[Documentation:Modules/shout|Shoutcast]]&lt;br /&gt;
*[[Documentation:Modules/podcast_sd|Podcast]]&lt;br /&gt;
*[[Documentation:Modules/hal|HAL]]&lt;br /&gt;
*[[Documentation:Modules/daap|DAAP]]&lt;br /&gt;
*[[Documentation:Modules/bonjour|Bonjour]]&lt;br /&gt;
*[[Documentation:Modules/upnp_intel|UPnP (intel)]]&lt;br /&gt;
*[[Documentation:Modules/upnp_cc|UPnP (cyberlink)]]&lt;br /&gt;
&lt;br /&gt;
=== Misc ===&lt;br /&gt;
*[[Documentation:Modules/netsync|netsync]]&lt;br /&gt;
*[[Documentation:Modules/motion_control|motion control]]&lt;br /&gt;
&lt;br /&gt;
{{Documentation}}&lt;/div&gt;</summary>
		<author><name>Nhumfrey</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Documentation:Modules&amp;diff=12844</id>
		<title>Documentation:Modules</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Documentation:Modules&amp;diff=12844"/>
		<updated>2008-12-13T16:37:16Z</updated>

		<summary type="html">&lt;p&gt;Nhumfrey: Added OSC&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
This page lists most of the modules present in the official VLC source code. Understanding these pages might require that you know about VLC and its command line usage. It is recommended that you read the other [[Documentation:Documentation|documentation]] first.&lt;br /&gt;
&lt;br /&gt;
To list all the available modules in your VLC build, use:&lt;br /&gt;
 % &#039;&#039;&#039;vlc --list&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
To list a module&#039;s configuration options, use:&lt;br /&gt;
 % &#039;&#039;&#039;vlc -p &amp;lt;modulename&amp;gt; --advanced --help-verbose&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Interfaces ==&lt;br /&gt;
&lt;br /&gt;
=== Graphical ===&lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Modules/wxWidgets|wxWidgets]]&lt;br /&gt;
*[[Documentation:Modules/skins2|Skins2]]&lt;br /&gt;
*[[Documentation:Modules/Qt4|Qt4]]&lt;br /&gt;
*[[Documentation:Modules/macosx_gui|Mac OS X]]&lt;br /&gt;
*[[Documentation:Modules/beos_gui|BeOS]]&lt;br /&gt;
*[[Documentation:Modules/wince|Windows CE]]&lt;br /&gt;
&lt;br /&gt;
=== Text ===&lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Modules/rc|remote control (rc)]]&lt;br /&gt;
*[[Documentation:Modules/telnet|telnet]]&lt;br /&gt;
*[[Documentation:Modules/ncurses|ncurses]]&lt;br /&gt;
*[[Documentation:Modules/osc|osc]]&lt;br /&gt;
&lt;br /&gt;
=== Other ===&lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Modules/http_intf|HTTP]]&lt;br /&gt;
*[[Documentation:Modules/hotkeys|Hotkeys]]&lt;br /&gt;
*[[Documentation:Modules/lirc|lirc]]&lt;br /&gt;
&lt;br /&gt;
== Outputs ==&lt;br /&gt;
&lt;br /&gt;
=== Audio Output ===&lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Modules/directx_aout|DirectX]]&lt;br /&gt;
*[[Documentation:Modules/waveout|waveout]]&lt;br /&gt;
*[[Documentation:Modules/portaudio|portaudio]]&lt;br /&gt;
*[[Documentation:Modules/sdl_aout|SDL]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Modules/auhal|AUHAL]]&lt;br /&gt;
*[[Documentation:Modules/jack|jack]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Modules/alsa|Alsa]]&lt;br /&gt;
*[[Documentation:Modules/oss|OSS]]&lt;br /&gt;
*[[Documentation:Modules/arts|aRts]]&lt;br /&gt;
*[[Documentation:Modules/esd|esound]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Modules/file_aout|file]]&lt;br /&gt;
&lt;br /&gt;
=== Video Output ===&lt;br /&gt;
*[[Documentation:Modules/direct3d|Direct3D]]&lt;br /&gt;
*[[Documentation:Modules/directx_vout|DirectX]]&lt;br /&gt;
*[[Documentation:Modules/wingdi|Windows GDI]]&lt;br /&gt;
*[[Documentation:Modules/glwin32|OpenGL for windows]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Modules/opengl|OpenGL]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Modules/xvideo|XVideo]]&lt;br /&gt;
*[[Documentation:Modules/x11|X11]]&lt;br /&gt;
*[[Documentation:Modules/glx|OpenGL (GLX)]]&lt;br /&gt;
*[[Documentation:Modules/fb|Framebuffer]]&lt;br /&gt;
*[[Documentation:Modules/directfb|Direct framebuffer]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Modules/sdl_vout|SDL]]&lt;br /&gt;
*[[Documentation:Modules/caca|Colored ASCII Art]]&lt;br /&gt;
*[[Documentation:Modules/aa|ASCII Art]]&lt;br /&gt;
*[[Documentation:Modules/image|Image]]&lt;br /&gt;
&lt;br /&gt;
=== Stream Output ===&lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Modules/standard|Standard (std)]]&lt;br /&gt;
*[[Documentation:Modules/transcode|Transcode]]&lt;br /&gt;
*[[Documentation:Modules/duplicate|Duplicate]]&lt;br /&gt;
*[[Documentation:Modules/rtp|RTP]]&lt;br /&gt;
*[[Documentation:Modules/es|Elementary Stream (es)]]&lt;br /&gt;
*[[Documentation:Modules/display|Display]]&lt;br /&gt;
*[[Documentation:Modules/dummy_sout|Dummy]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Modules/bridge-out|Bridge Out]]&lt;br /&gt;
*[[Documentation:Modules/bridge-in|Bridge In]]&lt;br /&gt;
*[[Documentation:Modules/mosaic-bridge|Mosaic Bridge]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Modules/autodel|Autodel]]&lt;br /&gt;
*[[Documentation:Modules/gather|Gather]]&lt;br /&gt;
*[[Documentation:Modules/description|Description]]&lt;br /&gt;
*[[Documentation:Modules/switcher|Switcher]]&lt;br /&gt;
*[[Documentation:Modules/transrate|Transrate]]&lt;br /&gt;
&lt;br /&gt;
== Filters ==&lt;br /&gt;
&lt;br /&gt;
=== Audio Filters ===&lt;br /&gt;
&lt;br /&gt;
=== Video Filters ===&lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Modules/adjust|Adjust]]&lt;br /&gt;
*[[Documentation:Modules/gradient|Gradient]]&lt;br /&gt;
*[[Documentation:Modules/invert|Invert]]&lt;br /&gt;
*[[Documentation:Modules/wave|Wave]]&lt;br /&gt;
*[[Documentation:Modules/ripple|Ripple]]&lt;br /&gt;
*[[Documentation:Modules/motionblur|Motion Blur]]&lt;br /&gt;
*[[Documentation:Modules/psychedelic|Psychedelic]]&lt;br /&gt;
*[[Documentation:Modules/noise|Noise]]&lt;br /&gt;
*[[Documentation:Modules/colorthres|Color Threshold]]&lt;br /&gt;
*[[Documentation:Modules/rotate|Rotate]]&lt;br /&gt;
*[[Documentation:Modules/extract|Extract]]&lt;br /&gt;
*[[Documentation:Modules/erase|Logo Erase]]&lt;br /&gt;
*[[Documentation:Modules/gaussianblur|Gaussian Blur]]&lt;br /&gt;
*[[Documentation:Modules/sharpen|Sharpen]]&lt;br /&gt;
&lt;br /&gt;
The following video filters are for use in transcode only:&lt;br /&gt;
*[[Documentation:Modules/croppadd|Crop Padd]]&lt;br /&gt;
*[[Documentation:Modules/canvas|Canvas]]&lt;br /&gt;
&lt;br /&gt;
The following video filters are for use in the mosaic framework only:&lt;br /&gt;
*[[Documentation:Modules/bluescreen|Blue Screen]]&lt;br /&gt;
*[[Documentation:Modules/alphamask|Alpha mask]]&lt;br /&gt;
&lt;br /&gt;
=== Video Sub-Filters ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Modules/marq|Marq]]&lt;br /&gt;
*[[Documentation:Modules/rss|RSS]]&lt;br /&gt;
*[[Documentation:Modules/logo|Logo]]&lt;br /&gt;
*[[Documentation:Modules/mosaic|Mosaic]]&lt;br /&gt;
*[[Documentation:Modules/time|Time]] (up to 0.8.6)&lt;br /&gt;
&lt;br /&gt;
=== Video Output Filters ===&lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Modules/deinterlace|Deinterlace]]&lt;br /&gt;
*[[Documentation:Modules/transform|Transform]]&lt;br /&gt;
*[[Documentation:Modules/wall|Wall]]&lt;br /&gt;
*[[Documentation:Modules/crop|Crop]]&lt;br /&gt;
*[[Documentation:Modules/panoramix|Panoramix]]&lt;br /&gt;
*[[Documentation:Modules/clone|Clone]]&lt;br /&gt;
*[[Documentation:Modules/logo|Logo]]&lt;br /&gt;
*[[Documentation:Modules/magnify|Magnify]]&lt;br /&gt;
*[[Documentation:Modules/puzzle|Puzzle]]&lt;br /&gt;
*[[Documentation:Modules/distort|Distort]] (up to 0.8.6)&lt;br /&gt;
&lt;br /&gt;
=== Visualizations ===&lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Modules/visualizer|Visualizer]]&lt;br /&gt;
*[[Documentation:Modules/goom|Goom]]&lt;br /&gt;
*[[Documentation:Modules/galaktos|Galaktos]]&lt;br /&gt;
&lt;br /&gt;
=== Access Filters ===&lt;br /&gt;
*[[Documentation:Modules/timeshift|Timeshift]]&lt;br /&gt;
*[[Documentation:Modules/record|Record]]&lt;br /&gt;
*[[Documentation:Modules/dump|Dump]]&lt;br /&gt;
*[[Documentation:Modules/bandwidth|Bandwidth]]&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
&lt;br /&gt;
=== Accesses ===&lt;br /&gt;
*[[Documentation:Modules/file|File Input]] - for reading local files&lt;br /&gt;
*[[Documentation:Modules/directory|Directory]]&lt;br /&gt;
*[[Documentation:Modules/dvdnav|DVDnav Input]]&lt;br /&gt;
*[[Documentation:Modules/dvdread|DVDRead Input]] - DVD without menu support&lt;br /&gt;
*[[Documentation:Modules/vcd|VCD]]&lt;br /&gt;
*[[Documentation:Modules/http|HTTP Input]]&lt;br /&gt;
*[[Documentation:Modules/ftp|FTP Input]]&lt;br /&gt;
*[[Documentation:Modules/udp|UDP/RTP Input]]&lt;br /&gt;
*[[Documentation:Modules/rtsp|RTSP]] - &lt;br /&gt;
*[[Documentation:Modules/rtmp|RTMP]] - Real Time Media Player&lt;br /&gt;
*[[Documentation:Modules/mms|MMS]] - reading from the MicroSoft Media Server&lt;br /&gt;
*[[Documentation:Modules/screen|Screen Input]] - grabbing the currently active screen&lt;br /&gt;
*[[Documentation:Modules/fake|Fake]] - presents a static image as a video stream&lt;br /&gt;
*[[Documentation:Modules/rawvid|Raw Video]] - streams of bitmap images&lt;br /&gt;
*[[Documentation:Modules/mkv|Matroska stream]]&lt;br /&gt;
*[[Documentation:Modules/h264|H.264 Video]]&lt;br /&gt;
*[[Documentation:Modules/pvr|IVTV MPEG Encoding Card Input]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Linux specific:&lt;br /&gt;
*[[Documentation:Modules/dv|DV]]&lt;br /&gt;
*[[Documentation:Modules/dvb|DVB Input]]&lt;br /&gt;
*[[Documentation:Modules/pvr|PVR]]&lt;br /&gt;
*[[Documentation:Modules/v4l|Video4Linux (v4l)]]&lt;br /&gt;
*[[Documentation:Modules/v4l2|Video4Linux2 (v4l2)]]&lt;br /&gt;
*[[Dc1394|Dc 1394]] FIXME: shouldn&#039;t link outside of Documentation:Modules/&lt;br /&gt;
Windows specific:&lt;br /&gt;
*[[Documentation:Modules/bda|BDA]]&lt;br /&gt;
*[[Documentation:Modules/dshow|DirectShow]]&lt;br /&gt;
&lt;br /&gt;
=== Access Outputs ===&lt;br /&gt;
&lt;br /&gt;
=== Codecs ===&lt;br /&gt;
&lt;br /&gt;
==== Audio ====&lt;br /&gt;
==== Video ====&lt;br /&gt;
==== Subtitles ====&lt;br /&gt;
&lt;br /&gt;
=== Demuxers ===&lt;br /&gt;
==== Playlist ====&lt;br /&gt;
*[[Documentation:Modules/m3u-open|m3u]]&lt;br /&gt;
*[[Documentation:Modules/pls-open|pls]]&lt;br /&gt;
*[[Documentation:Modules/b4s-open|b4s]]&lt;br /&gt;
*[[Documentation:Modules/dvb-open|dvb]]&lt;br /&gt;
*[[Documentation:Modules/podcast|podcast]]&lt;br /&gt;
*[[Documentation:Modules/xspf-open|XSPF]]&lt;br /&gt;
*[[Documentation:Modules/shout-winamp|Winamp Shoutcast]]&lt;br /&gt;
*[[Documentation:Modules/asx-open|ASX]]&lt;br /&gt;
*[[Documentation:Modules/sgimb|sgimb]]&lt;br /&gt;
*[[Documentation:Modules/qtl|QTL]]&lt;br /&gt;
*[[Documentation:Modules/gvi|gvi]]&lt;br /&gt;
&lt;br /&gt;
=== Muxers ===&lt;br /&gt;
&lt;br /&gt;
=== Service Discovery ===&lt;br /&gt;
&lt;br /&gt;
*[[Documentation:Modules/sap|SAP]]&lt;br /&gt;
*[[Documentation:Modules/shout|Shoutcast]]&lt;br /&gt;
*[[Documentation:Modules/podcast_sd|Podcast]]&lt;br /&gt;
*[[Documentation:Modules/hal|HAL]]&lt;br /&gt;
*[[Documentation:Modules/daap|DAAP]]&lt;br /&gt;
*[[Documentation:Modules/bonjour|Bonjour]]&lt;br /&gt;
*[[Documentation:Modules/upnp_intel|UPnP (intel)]]&lt;br /&gt;
*[[Documentation:Modules/upnp_cc|UPnP (cyberlink)]]&lt;br /&gt;
&lt;br /&gt;
=== Misc ===&lt;br /&gt;
*[[Documentation:Modules/netsync|netsync]]&lt;br /&gt;
*[[Documentation:Modules/motion_control|motion control]]&lt;br /&gt;
&lt;br /&gt;
{{Documentation}}&lt;/div&gt;</summary>
		<author><name>Nhumfrey</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=DBus-spec&amp;diff=11211</id>
		<title>DBus-spec</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=DBus-spec&amp;diff=11211"/>
		<updated>2008-04-12T11:25:06Z</updated>

		<summary type="html">&lt;p&gt;Nhumfrey: Added link to MPRIS specification&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Specification for a Common, Desktop neutral, Media Player D-Bus interface&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Please note this document is not specific to VLC and is a work in progress.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red; font-weight: bold&amp;quot;&amp;gt;OBSOLETE, KEPT FOR HISTORICAL REASONS&lt;br /&gt;
&lt;br /&gt;
MPRIS discussion is at http://wiki.xmms2.xmms.se/index.php/Media_Player_Interfaces&lt;br /&gt;
&lt;br /&gt;
MPRIS specification is at http://wiki.xmms2.xmms.se/index.php/MPRIS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
What follows has been largely stolen from http://bmpx.beep-media-player.org/site/MPRIS_Interfacing_Specification&lt;br /&gt;
&lt;br /&gt;
This is an attempt to create a specification for media players to use, for &#039;&#039;&#039;YOUR&#039;&#039;&#039; applications to be able to interact with &#039;&#039;&#039;ANY&#039;&#039;&#039; Media Player &#039;&#039;&#039;YOU&#039;&#039;&#039; want to use on &#039;&#039;&#039;ANY&#039;&#039;&#039; desktop &#039;&#039;&#039;YOU&#039;&#039;&#039; want to use.&lt;br /&gt;
&lt;br /&gt;
This is in the spirit of http://www.freedesktop.org and uses code and ideas from this project, most notably D-Bus : http://dbus.freedesktop.org and uses ideas from http://www.musicbrainz.org&lt;br /&gt;
&lt;br /&gt;
= Other players =&lt;br /&gt;
&lt;br /&gt;
How other &amp;quot;Media Players&amp;quot; interact with D-Bus&lt;br /&gt;
&lt;br /&gt;
== bmpx ==&lt;br /&gt;
&lt;br /&gt;
http://bmpx.beep-media-player.org/site/MPRIS_Interfacing_Specification&lt;br /&gt;
&lt;br /&gt;
== banshee ==&lt;br /&gt;
&lt;br /&gt;
http://cvs.gnome.org/viewcvs/*checkout*/banshee/src/Banshee.Base/DBusPlayer.cs&lt;br /&gt;
&lt;br /&gt;
== rhythmbox ==&lt;br /&gt;
&lt;br /&gt;
http://cvs.gnome.org/viewcvs/rhythmbox/remote/dbus/rb-client.c?view=markup&lt;br /&gt;
&lt;br /&gt;
== muine ==&lt;br /&gt;
&lt;br /&gt;
http://cvs.gnome.org/viewcvs/muine/DBusLib/Player.cs?view=markup&lt;br /&gt;
&lt;br /&gt;
== amarok ==&lt;br /&gt;
&lt;br /&gt;
http://amarok.kde.org/wiki/DCOP_Functions&lt;br /&gt;
(D-Bus will replace DCOP in KDE4, Amarok 2.0)&lt;br /&gt;
&lt;br /&gt;
= Definitions =&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Media Player&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
An application, either with GUI or GUI-less (or which allows for both modes of operation) which is capable of playing back audio/video streams. The means by which it does accomplish that (e.g. which audio backend to use, and which output method) is out of the scope of this document.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Media Player&amp;quot; &#039;&#039;&#039;must&#039;&#039;&#039;:&lt;br /&gt;
* Be able to play back at least local storage file streams.&lt;br /&gt;
* Be able to play back at least one stream at a time.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Client&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
The Client is an unspecified application that will interact with the &amp;quot;Media Player&amp;quot; using D-Bus protocol.&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
* A softphone, that pauses, or step the volume down, when a call is being received.&lt;br /&gt;
* An applet that nicely integrates in your desktop environment, to control your &amp;quot;Media Player&amp;quot;.&lt;br /&gt;
* An instant messaging client which informs your buddies of what you&#039;re listening to.&lt;br /&gt;
* A monitor that stores in a database what you are listening to, for statistics purpose.&lt;br /&gt;
* A video editing software that calls an external &amp;quot;Media Player&amp;quot; to preview your work.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Tracklist&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
A list of media files which resides within the &amp;quot;Media Player&amp;quot;, and whose implementation is opaque to the remote interface.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Tracklist&amp;quot; &#039;&#039;&#039;must&#039;&#039;&#039;:&lt;br /&gt;
* Hold an ordered list of locations of the media files as URIs (e.g. file:// or &amp;lt;nowiki&amp;gt;http://&amp;lt;/nowiki&amp;gt;). The implementation of this can be opaque, which means, it does not neccesarily need to store URIs, but upon remote request, it must be able to return an URI for a given media file.&lt;br /&gt;
* Keep the list in an ordered fashion. The order can be changed at any time trough e.g. sorting algorithms, in which case the &amp;quot;Media Player&amp;quot; must send information about the reordering trough it&#039;s remote interface&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Tracklist&amp;quot; &#039;&#039;&#039;can&#039;&#039;&#039;, but does not &#039;&#039;&#039;need&#039;&#039;&#039; to:&lt;br /&gt;
* Hold &amp;quot;Metadata&amp;quot; about media files&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Metadata&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Metadata&amp;quot; is data that the files carry within themselves as a means of self-identification (commonly known as &amp;quot;tags&amp;quot;), or data that has been retrieved about the files trough other means, e.g. an internet service that provides additional data about particular media files.&lt;br /&gt;
&amp;quot;Metadata&amp;quot; is an array of dict entries, like (&amp;quot;length&amp;quot;, 253), (&amp;quot;name&amp;quot;, &amp;quot;Bolero&amp;quot;), (&amp;quot;video-codec&amp;quot;, &amp;quot;DIVX&amp;quot;). The dict entry is in the form (string, variant) eg: {sv}.&lt;br /&gt;
&lt;br /&gt;
Furthermore, &amp;quot;Metadata&amp;quot; can be split into two categories:&lt;br /&gt;
&lt;br /&gt;
1) Technical metadata:&lt;br /&gt;
* &amp;quot;URI&amp;quot;:&amp;quot;s&amp;quot;&lt;br /&gt;
* &amp;quot;length&amp;quot;:&amp;quot;i&amp;quot; (length in seconds)&lt;br /&gt;
* &amp;quot;video-codec&amp;quot;:&amp;quot;s&amp;quot; (video codec as a fourcc)&lt;br /&gt;
* &amp;quot;audio-codec&amp;quot;:&amp;quot;s&amp;quot; (audio codec as a fourcc)&lt;br /&gt;
* &amp;quot;video-bitrate&amp;quot;:&amp;quot;i&amp;quot; video bitrate&lt;br /&gt;
* &amp;quot;audio-bitrate&amp;quot;:&amp;quot;i&amp;quot; audio bitrate&lt;br /&gt;
* &amp;quot;audio-samplerate&amp;quot;:&amp;quot;i&amp;quot; (audio samplerate)&lt;br /&gt;
&lt;br /&gt;
2) Informational metadata&lt;br /&gt;
* &amp;quot;name&amp;quot;:&amp;quot;s&amp;quot;&lt;br /&gt;
* &amp;quot;artist&amp;quot;:&amp;quot;s&amp;quot;&lt;br /&gt;
* &amp;quot;album&amp;quot;:&amp;quot;s&amp;quot;&lt;br /&gt;
* &amp;quot;unique-id&amp;quot;:&amp;quot;s&amp;quot; : Musicbrainz Track Identifier as specified on http://musicbrainz.org/docs/specs/metadata_tags.html&lt;br /&gt;
* &amp;quot;genre&amp;quot;:&amp;quot;s&amp;quot;&lt;br /&gt;
&lt;br /&gt;
This list is informative, and can be extended up to your needs, for example: &amp;quot;age of the captain&amp;quot;:&amp;quot;i&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Only Required fields are: &amp;quot;URI&amp;quot; and &amp;quot;length&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= D-Bus =&lt;br /&gt;
&lt;br /&gt;
== The Service ==&lt;br /&gt;
&lt;br /&gt;
org.freedesktop.MediaPlayer&lt;br /&gt;
&lt;br /&gt;
All &amp;quot;Media Players&amp;quot; &#039;&#039;&#039;must&#039;&#039;&#039; request this name and do not let other &amp;quot;Media Players&amp;quot; &#039;steal&#039; this name.&lt;br /&gt;
Using libdbus, that would be:&lt;br /&gt;
&lt;br /&gt;
 DBusConnection *dbus_connection;&lt;br /&gt;
 DBusError dbus_error;&lt;br /&gt;
 dbus_bus_request_name( dbus_connection, &amp;quot;org.freedesktop.MediaPlayer&amp;quot;, 0, &amp;amp;dbus_error );&lt;br /&gt;
&lt;br /&gt;
To be able to request the name, and so, be able to communicate via D-Bus, no &amp;quot;Media Player&amp;quot; must be running. The &amp;quot;Media Player&amp;quot; may call the Quit method, and wait till the name is unregistered, to ensure this is the case.&lt;br /&gt;
&lt;br /&gt;
: I think this is a bad idea, it&#039;s not the place for a interop Spec to force single instance behaviour without a good reason (i run amarok all the time and use vlc to play videos or streams...). Why not suggest that mediaplayers register with the well known service name (&amp;quot;org.freedesktop.MediaPlayer&amp;quot;) with the options QueueService and suggest the media player should register an application specific service in addition?&lt;br /&gt;
&lt;br /&gt;
: if done that way we gain the feature to query the dbus daemon for all clients queued for that dbus name, so enumerating all current musicplayers that support the Spec is not problem. Contacting the players is not problem to because every client on dbus has a unique name anyway. DBus signal do AFAIK carry the dbus service name of the sending client, so there is no trouble knowing which player send a signal. [[User:textshell|textshell]]&lt;br /&gt;
&lt;br /&gt;
== The Object Hierarchy ==&lt;br /&gt;
&lt;br /&gt;
* / : Media Player identification&lt;br /&gt;
&lt;br /&gt;
* /Player : Playback control&lt;br /&gt;
&lt;br /&gt;
* /TrackList : TrackList management&lt;br /&gt;
&lt;br /&gt;
== The interface ==&lt;br /&gt;
&lt;br /&gt;
All methods must be accessed through the interface org.freedesktop.MediaPlayer&lt;br /&gt;
&lt;br /&gt;
i.e. calling Quit with qdbus would be:&lt;br /&gt;
 $ qdbus org.freedesktop.MediaPlayer /Player org.freedesktop.MediaPlayer.Quit&lt;br /&gt;
&lt;br /&gt;
== The Methods ==&lt;br /&gt;
&lt;br /&gt;
What&#039;s missing: we could use musicbrainz unique identifier to identify current element in the playlist&lt;br /&gt;
From fd.o : GetTrackList (using xspf?), ClearTrackList&lt;br /&gt;
&lt;br /&gt;
* /&lt;br /&gt;
&lt;br /&gt;
Identity : Identify the &amp;quot;Media Player&amp;quot; as in &amp;quot;VLC 0.9.0&amp;quot;, &amp;quot;bmpx 0.34.9&amp;quot;, &amp;quot;Totem 2.16.2&amp;quot; ...&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;Identity&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;arg type=&amp;quot;s&amp;quot; direction=&amp;quot;out&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* /TrackList&lt;br /&gt;
&lt;br /&gt;
GetMetadata : Gives all meta data available for element at given position in the &amp;quot;TrackList&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;method name=&amp;quot;GetMetadata&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;arg type=&amp;quot;i&amp;quot; direction=&amp;quot;in&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;arg type=&amp;quot;a{sv}&amp;quot; direction=&amp;quot;out&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
GetCurrentTrack : Position of Current URI in the &amp;quot;TrackList&amp;quot;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;GetCurrentTrack&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;arg type=&amp;quot;i&amp;quot; direction=&amp;quot;out&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
GetLength : Number of elements in the &amp;quot;TrackList&amp;quot;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;GetLength&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;arg type=&amp;quot;i&amp;quot; direction=&amp;quot;out&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
AddTrack : Appends an URI in the &amp;quot;TrackList&amp;quot;, play it immediately if the 2nd argument is TRUE&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;AddTrack&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;arg type=&amp;quot;s&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;arg type=&amp;quot;b&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DelTrack : Removes an URI from the &amp;quot;TrackList&amp;quot;, given its position&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;DelTrack&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;arg type=&amp;quot;i&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* /Player&lt;br /&gt;
&lt;br /&gt;
Next : Goes to the next element (what if we&#039;re at the end?)&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;Next&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Prev : Goes to the previous element (what if we&#039;re at the beginning?)&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;Prev&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pause : If playing : pause. If paused : unpause. If stopped : start playing&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;Pause&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stop : Stop playing.&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;Stop&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Play : If playing : rewind to the beginning of current track, else : start playing.&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;Play&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quit : Makes the &amp;quot;Media Player&amp;quot; exit.&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;method name=&amp;quot;Quit&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
GetStatus : Return the status of &amp;quot;Media Player&amp;quot;: 0 = Playing, 1 = Paused, 2 = Stopped.&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;GetStatus&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;arg type=&amp;quot;i&amp;quot; direction=&amp;quot;out&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
VolumeSet : Sets the volume (argument must be in [0;100])&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;VolumeSet&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;arg type=&amp;quot;i&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
GetVolume : Returns the current volume (must be in [0;100])&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;method name=&amp;quot;VolumeGet&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;arg type=&amp;quot;i&amp;quot; direction=&amp;quot;out&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PositionSet : Sets the playing position (argument must be in [0;100])&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;PositionSet&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;arg type=&amp;quot;i&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PositionGet : Returns the playing position (must be in [0;100])&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;method name=&amp;quot;PositionGet&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;arg type=&amp;quot;i&amp;quot; direction=&amp;quot;out&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The signals ==&lt;br /&gt;
&lt;br /&gt;
TrackChange : Signal is emitted when the &amp;quot;Media Player&amp;quot; plays another &amp;quot;Track&amp;quot;. Argument of the signal is the metadata attached to the new &amp;quot;Track&amp;quot;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;signal name=&amp;quot;TrackChange&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;arg type=&amp;quot;a{sv}&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/signal&amp;gt;&lt;br /&gt;
&lt;br /&gt;
StatusChange : Signal is emitted when the status of the &amp;quot;Media Player&amp;quot; change. The argument has the same meaning than the value returned by GetStatus.&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;signal name=&amp;quot;StatusChange&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;arg type=&amp;quot;i&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/signal&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CapabilityChange : [TODO] Signal is emitted when the &amp;quot;Media Player&amp;quot; changes capabilities, Flags are CAN_GO_NEXT CAN_GO_PREV CAN_PAUSE CAN_PLAY CAN_SEEK CAN_PROVIDE_METADATA PROVIDES_TIMING&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;signal name=&amp;quot;CapabilityChange&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;arg type=TODO /&amp;gt;&lt;br /&gt;
   &amp;lt;/signal&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= See Also =&lt;br /&gt;
* [http://bmpx.beep-media-player.org/site/MPRIS_Interfacing_Specification MPRIS Interfacing Specification] (BMPx wiki)&lt;br /&gt;
* [http://wiki.xmms2.xmms.se/index.php/Media_Player_Interfaces Media Player Interfaces] (XMMS2 wiki)&lt;/div&gt;</summary>
		<author><name>Nhumfrey</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=DBus-spec&amp;diff=11210</id>
		<title>DBus-spec</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=DBus-spec&amp;diff=11210"/>
		<updated>2008-04-12T11:24:38Z</updated>

		<summary type="html">&lt;p&gt;Nhumfrey: Added link to MPRIS specification&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Specification for a Common, Desktop neutral, Media Player D-Bus interface&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Please note this document is not specific to VLC and is a work in progress.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red; font-weight: bold&amp;quot;&amp;gt;OBSOLETE, KEPT FOR HISTORICAL REASONS&lt;br /&gt;
&lt;br /&gt;
MPRIS discussion is at http://wiki.xmms2.xmms.se/index.php/Media_Player_Interfaces &lt;br /&gt;
MPRIS specification is at http://wiki.xmms2.xmms.se/index.php/MPRIS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
What follows has been largely stolen from http://bmpx.beep-media-player.org/site/MPRIS_Interfacing_Specification&lt;br /&gt;
&lt;br /&gt;
This is an attempt to create a specification for media players to use, for &#039;&#039;&#039;YOUR&#039;&#039;&#039; applications to be able to interact with &#039;&#039;&#039;ANY&#039;&#039;&#039; Media Player &#039;&#039;&#039;YOU&#039;&#039;&#039; want to use on &#039;&#039;&#039;ANY&#039;&#039;&#039; desktop &#039;&#039;&#039;YOU&#039;&#039;&#039; want to use.&lt;br /&gt;
&lt;br /&gt;
This is in the spirit of http://www.freedesktop.org and uses code and ideas from this project, most notably D-Bus : http://dbus.freedesktop.org and uses ideas from http://www.musicbrainz.org&lt;br /&gt;
&lt;br /&gt;
= Other players =&lt;br /&gt;
&lt;br /&gt;
How other &amp;quot;Media Players&amp;quot; interact with D-Bus&lt;br /&gt;
&lt;br /&gt;
== bmpx ==&lt;br /&gt;
&lt;br /&gt;
http://bmpx.beep-media-player.org/site/MPRIS_Interfacing_Specification&lt;br /&gt;
&lt;br /&gt;
== banshee ==&lt;br /&gt;
&lt;br /&gt;
http://cvs.gnome.org/viewcvs/*checkout*/banshee/src/Banshee.Base/DBusPlayer.cs&lt;br /&gt;
&lt;br /&gt;
== rhythmbox ==&lt;br /&gt;
&lt;br /&gt;
http://cvs.gnome.org/viewcvs/rhythmbox/remote/dbus/rb-client.c?view=markup&lt;br /&gt;
&lt;br /&gt;
== muine ==&lt;br /&gt;
&lt;br /&gt;
http://cvs.gnome.org/viewcvs/muine/DBusLib/Player.cs?view=markup&lt;br /&gt;
&lt;br /&gt;
== amarok ==&lt;br /&gt;
&lt;br /&gt;
http://amarok.kde.org/wiki/DCOP_Functions&lt;br /&gt;
(D-Bus will replace DCOP in KDE4, Amarok 2.0)&lt;br /&gt;
&lt;br /&gt;
= Definitions =&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Media Player&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
An application, either with GUI or GUI-less (or which allows for both modes of operation) which is capable of playing back audio/video streams. The means by which it does accomplish that (e.g. which audio backend to use, and which output method) is out of the scope of this document.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Media Player&amp;quot; &#039;&#039;&#039;must&#039;&#039;&#039;:&lt;br /&gt;
* Be able to play back at least local storage file streams.&lt;br /&gt;
* Be able to play back at least one stream at a time.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Client&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
The Client is an unspecified application that will interact with the &amp;quot;Media Player&amp;quot; using D-Bus protocol.&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
* A softphone, that pauses, or step the volume down, when a call is being received.&lt;br /&gt;
* An applet that nicely integrates in your desktop environment, to control your &amp;quot;Media Player&amp;quot;.&lt;br /&gt;
* An instant messaging client which informs your buddies of what you&#039;re listening to.&lt;br /&gt;
* A monitor that stores in a database what you are listening to, for statistics purpose.&lt;br /&gt;
* A video editing software that calls an external &amp;quot;Media Player&amp;quot; to preview your work.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Tracklist&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
A list of media files which resides within the &amp;quot;Media Player&amp;quot;, and whose implementation is opaque to the remote interface.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Tracklist&amp;quot; &#039;&#039;&#039;must&#039;&#039;&#039;:&lt;br /&gt;
* Hold an ordered list of locations of the media files as URIs (e.g. file:// or &amp;lt;nowiki&amp;gt;http://&amp;lt;/nowiki&amp;gt;). The implementation of this can be opaque, which means, it does not neccesarily need to store URIs, but upon remote request, it must be able to return an URI for a given media file.&lt;br /&gt;
* Keep the list in an ordered fashion. The order can be changed at any time trough e.g. sorting algorithms, in which case the &amp;quot;Media Player&amp;quot; must send information about the reordering trough it&#039;s remote interface&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Tracklist&amp;quot; &#039;&#039;&#039;can&#039;&#039;&#039;, but does not &#039;&#039;&#039;need&#039;&#039;&#039; to:&lt;br /&gt;
* Hold &amp;quot;Metadata&amp;quot; about media files&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Metadata&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Metadata&amp;quot; is data that the files carry within themselves as a means of self-identification (commonly known as &amp;quot;tags&amp;quot;), or data that has been retrieved about the files trough other means, e.g. an internet service that provides additional data about particular media files.&lt;br /&gt;
&amp;quot;Metadata&amp;quot; is an array of dict entries, like (&amp;quot;length&amp;quot;, 253), (&amp;quot;name&amp;quot;, &amp;quot;Bolero&amp;quot;), (&amp;quot;video-codec&amp;quot;, &amp;quot;DIVX&amp;quot;). The dict entry is in the form (string, variant) eg: {sv}.&lt;br /&gt;
&lt;br /&gt;
Furthermore, &amp;quot;Metadata&amp;quot; can be split into two categories:&lt;br /&gt;
&lt;br /&gt;
1) Technical metadata:&lt;br /&gt;
* &amp;quot;URI&amp;quot;:&amp;quot;s&amp;quot;&lt;br /&gt;
* &amp;quot;length&amp;quot;:&amp;quot;i&amp;quot; (length in seconds)&lt;br /&gt;
* &amp;quot;video-codec&amp;quot;:&amp;quot;s&amp;quot; (video codec as a fourcc)&lt;br /&gt;
* &amp;quot;audio-codec&amp;quot;:&amp;quot;s&amp;quot; (audio codec as a fourcc)&lt;br /&gt;
* &amp;quot;video-bitrate&amp;quot;:&amp;quot;i&amp;quot; video bitrate&lt;br /&gt;
* &amp;quot;audio-bitrate&amp;quot;:&amp;quot;i&amp;quot; audio bitrate&lt;br /&gt;
* &amp;quot;audio-samplerate&amp;quot;:&amp;quot;i&amp;quot; (audio samplerate)&lt;br /&gt;
&lt;br /&gt;
2) Informational metadata&lt;br /&gt;
* &amp;quot;name&amp;quot;:&amp;quot;s&amp;quot;&lt;br /&gt;
* &amp;quot;artist&amp;quot;:&amp;quot;s&amp;quot;&lt;br /&gt;
* &amp;quot;album&amp;quot;:&amp;quot;s&amp;quot;&lt;br /&gt;
* &amp;quot;unique-id&amp;quot;:&amp;quot;s&amp;quot; : Musicbrainz Track Identifier as specified on http://musicbrainz.org/docs/specs/metadata_tags.html&lt;br /&gt;
* &amp;quot;genre&amp;quot;:&amp;quot;s&amp;quot;&lt;br /&gt;
&lt;br /&gt;
This list is informative, and can be extended up to your needs, for example: &amp;quot;age of the captain&amp;quot;:&amp;quot;i&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Only Required fields are: &amp;quot;URI&amp;quot; and &amp;quot;length&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= D-Bus =&lt;br /&gt;
&lt;br /&gt;
== The Service ==&lt;br /&gt;
&lt;br /&gt;
org.freedesktop.MediaPlayer&lt;br /&gt;
&lt;br /&gt;
All &amp;quot;Media Players&amp;quot; &#039;&#039;&#039;must&#039;&#039;&#039; request this name and do not let other &amp;quot;Media Players&amp;quot; &#039;steal&#039; this name.&lt;br /&gt;
Using libdbus, that would be:&lt;br /&gt;
&lt;br /&gt;
 DBusConnection *dbus_connection;&lt;br /&gt;
 DBusError dbus_error;&lt;br /&gt;
 dbus_bus_request_name( dbus_connection, &amp;quot;org.freedesktop.MediaPlayer&amp;quot;, 0, &amp;amp;dbus_error );&lt;br /&gt;
&lt;br /&gt;
To be able to request the name, and so, be able to communicate via D-Bus, no &amp;quot;Media Player&amp;quot; must be running. The &amp;quot;Media Player&amp;quot; may call the Quit method, and wait till the name is unregistered, to ensure this is the case.&lt;br /&gt;
&lt;br /&gt;
: I think this is a bad idea, it&#039;s not the place for a interop Spec to force single instance behaviour without a good reason (i run amarok all the time and use vlc to play videos or streams...). Why not suggest that mediaplayers register with the well known service name (&amp;quot;org.freedesktop.MediaPlayer&amp;quot;) with the options QueueService and suggest the media player should register an application specific service in addition?&lt;br /&gt;
&lt;br /&gt;
: if done that way we gain the feature to query the dbus daemon for all clients queued for that dbus name, so enumerating all current musicplayers that support the Spec is not problem. Contacting the players is not problem to because every client on dbus has a unique name anyway. DBus signal do AFAIK carry the dbus service name of the sending client, so there is no trouble knowing which player send a signal. [[User:textshell|textshell]]&lt;br /&gt;
&lt;br /&gt;
== The Object Hierarchy ==&lt;br /&gt;
&lt;br /&gt;
* / : Media Player identification&lt;br /&gt;
&lt;br /&gt;
* /Player : Playback control&lt;br /&gt;
&lt;br /&gt;
* /TrackList : TrackList management&lt;br /&gt;
&lt;br /&gt;
== The interface ==&lt;br /&gt;
&lt;br /&gt;
All methods must be accessed through the interface org.freedesktop.MediaPlayer&lt;br /&gt;
&lt;br /&gt;
i.e. calling Quit with qdbus would be:&lt;br /&gt;
 $ qdbus org.freedesktop.MediaPlayer /Player org.freedesktop.MediaPlayer.Quit&lt;br /&gt;
&lt;br /&gt;
== The Methods ==&lt;br /&gt;
&lt;br /&gt;
What&#039;s missing: we could use musicbrainz unique identifier to identify current element in the playlist&lt;br /&gt;
From fd.o : GetTrackList (using xspf?), ClearTrackList&lt;br /&gt;
&lt;br /&gt;
* /&lt;br /&gt;
&lt;br /&gt;
Identity : Identify the &amp;quot;Media Player&amp;quot; as in &amp;quot;VLC 0.9.0&amp;quot;, &amp;quot;bmpx 0.34.9&amp;quot;, &amp;quot;Totem 2.16.2&amp;quot; ...&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;Identity&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;arg type=&amp;quot;s&amp;quot; direction=&amp;quot;out&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* /TrackList&lt;br /&gt;
&lt;br /&gt;
GetMetadata : Gives all meta data available for element at given position in the &amp;quot;TrackList&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;method name=&amp;quot;GetMetadata&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;arg type=&amp;quot;i&amp;quot; direction=&amp;quot;in&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;arg type=&amp;quot;a{sv}&amp;quot; direction=&amp;quot;out&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
GetCurrentTrack : Position of Current URI in the &amp;quot;TrackList&amp;quot;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;GetCurrentTrack&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;arg type=&amp;quot;i&amp;quot; direction=&amp;quot;out&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
GetLength : Number of elements in the &amp;quot;TrackList&amp;quot;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;GetLength&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;arg type=&amp;quot;i&amp;quot; direction=&amp;quot;out&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
AddTrack : Appends an URI in the &amp;quot;TrackList&amp;quot;, play it immediately if the 2nd argument is TRUE&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;AddTrack&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;arg type=&amp;quot;s&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;arg type=&amp;quot;b&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DelTrack : Removes an URI from the &amp;quot;TrackList&amp;quot;, given its position&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;DelTrack&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;arg type=&amp;quot;i&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* /Player&lt;br /&gt;
&lt;br /&gt;
Next : Goes to the next element (what if we&#039;re at the end?)&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;Next&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Prev : Goes to the previous element (what if we&#039;re at the beginning?)&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;Prev&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pause : If playing : pause. If paused : unpause. If stopped : start playing&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;Pause&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stop : Stop playing.&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;Stop&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Play : If playing : rewind to the beginning of current track, else : start playing.&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;Play&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quit : Makes the &amp;quot;Media Player&amp;quot; exit.&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;method name=&amp;quot;Quit&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
GetStatus : Return the status of &amp;quot;Media Player&amp;quot;: 0 = Playing, 1 = Paused, 2 = Stopped.&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;GetStatus&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;arg type=&amp;quot;i&amp;quot; direction=&amp;quot;out&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
VolumeSet : Sets the volume (argument must be in [0;100])&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;VolumeSet&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;arg type=&amp;quot;i&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
GetVolume : Returns the current volume (must be in [0;100])&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;method name=&amp;quot;VolumeGet&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;arg type=&amp;quot;i&amp;quot; direction=&amp;quot;out&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PositionSet : Sets the playing position (argument must be in [0;100])&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;method name=&amp;quot;PositionSet&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;arg type=&amp;quot;i&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PositionGet : Returns the playing position (must be in [0;100])&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;method name=&amp;quot;PositionGet&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;arg type=&amp;quot;i&amp;quot; direction=&amp;quot;out&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/method&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The signals ==&lt;br /&gt;
&lt;br /&gt;
TrackChange : Signal is emitted when the &amp;quot;Media Player&amp;quot; plays another &amp;quot;Track&amp;quot;. Argument of the signal is the metadata attached to the new &amp;quot;Track&amp;quot;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;signal name=&amp;quot;TrackChange&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;arg type=&amp;quot;a{sv}&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/signal&amp;gt;&lt;br /&gt;
&lt;br /&gt;
StatusChange : Signal is emitted when the status of the &amp;quot;Media Player&amp;quot; change. The argument has the same meaning than the value returned by GetStatus.&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;signal name=&amp;quot;StatusChange&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;arg type=&amp;quot;i&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/signal&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CapabilityChange : [TODO] Signal is emitted when the &amp;quot;Media Player&amp;quot; changes capabilities, Flags are CAN_GO_NEXT CAN_GO_PREV CAN_PAUSE CAN_PLAY CAN_SEEK CAN_PROVIDE_METADATA PROVIDES_TIMING&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;signal name=&amp;quot;CapabilityChange&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;arg type=TODO /&amp;gt;&lt;br /&gt;
   &amp;lt;/signal&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= See Also =&lt;br /&gt;
* [http://bmpx.beep-media-player.org/site/MPRIS_Interfacing_Specification MPRIS Interfacing Specification] (BMPx wiki)&lt;br /&gt;
* [http://wiki.xmms2.xmms.se/index.php/Media_Player_Interfaces Media Player Interfaces] (XMMS2 wiki)&lt;/div&gt;</summary>
		<author><name>Nhumfrey</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=User:Nhumfrey&amp;diff=11209</id>
		<title>User:Nhumfrey</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=User:Nhumfrey&amp;diff=11209"/>
		<updated>2008-04-12T11:08:53Z</updated>

		<summary type="html">&lt;p&gt;Nhumfrey: New page: == Nicholas J Humfrey ==  Homepage: http://www.aelius.com/njh/&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Nicholas J Humfrey ==&lt;br /&gt;
&lt;br /&gt;
Homepage: http://www.aelius.com/njh/&lt;/div&gt;</summary>
		<author><name>Nhumfrey</name></author>
	</entry>
</feed>