<?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=Demanciel</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=Demanciel"/>
	<link rel="alternate" type="text/html" href="https://wiki.videolan.org/Special:Contributions/Demanciel/"/>
	<updated>2026-11-04T16:27:43Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=We_Use_VideoLAN&amp;diff=15060</id>
		<title>We Use VideoLAN</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=We_Use_VideoLAN&amp;diff=15060"/>
		<updated>2009-12-10T20:15:04Z</updated>

		<summary type="html">&lt;p&gt;Demanciel: /* Miro Player */  a very tiny typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float: right;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Do you have some cool project you use VideoLAN for?&lt;br /&gt;
Post a link and a small description here.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Hello!&lt;br /&gt;
Feel free to add a link and brief description for your website or company below, as long as it uses VideoLAN / VLC media player.&lt;br /&gt;
For fairness please keep it in alphabetical order. Thank you!&lt;br /&gt;
h2g2bob&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Advene project=====&lt;br /&gt;
: Advene (Annotate DVDs, Exchange on the Net) aims at providing a format to share annotations about movies stored on DVDs, as well as tools to edit and visualize the annotations. It uses VLC to play/extract info from the DVD&#039;s&lt;br /&gt;
: [http://liris.cnrs.fr/advene/ website]&lt;br /&gt;
&lt;br /&gt;
=====Annodex=====&lt;br /&gt;
: Annodex is a system for metadata, hyperlinking and browing media content. Their webmodule uses a customized version of our mozilla plugin&lt;br /&gt;
: http://annodex.net&lt;br /&gt;
&lt;br /&gt;
=====The Balloon=====&lt;br /&gt;
: [http://www.maveric.org.uk/mavhome.html JediMaster and friends] are building a Mars balloon at the Univertsity of Kent which uses VideoLAN to stream images back to earth. Some [http://www.maveric.org.uk/photos/testing/ Images].&lt;br /&gt;
: http://www.maveric.org.uk&lt;br /&gt;
&lt;br /&gt;
=====ControlAulas=====&lt;br /&gt;
: [http://www.itais.net/controlaula/ ControlAulas] uses videolan to transmit video between students and teachers in a virtual classroom situation. It&#039;s part of the [http://linex.org gnuLinex] project and the source is available [http://forjamari.linex.org/projects/controlaulas/ here].&lt;br /&gt;
&lt;br /&gt;
=====Cory Doctorow=====&lt;br /&gt;
: Writer [http://www.craphound.com/ Cory Doctorow] uses VLC Player [http://www.boingboing.net/2004/03/26/vlc_will_play_itunes.html] [http://www.msversus.org/node/234].&lt;br /&gt;
&lt;br /&gt;
=====Cypherpunk version of MacBeth=====&lt;br /&gt;
: People at [http://www.pirateutopia.org/ Pirate Utopia] are using VLC in a MacBeth-inspired show to display ASCII-art video.&lt;br /&gt;
: http://www.pirateutopia.org/macbeth/techie.htm&lt;br /&gt;
&lt;br /&gt;
=====dboxTV=====&lt;br /&gt;
: This is mainly a program to watch TV on PC with a dbox-2. It provides the stream in network and over the internet and takes advanced usage of VLC over libvlc.dll.&lt;br /&gt;
: http://www.dschaek.de/&lt;br /&gt;
&lt;br /&gt;
=====Distributed VideoLAN Server Management=====&lt;br /&gt;
: Bart Kerver from [[SURFnet]] has created software to manage multiple VideoLAN servers. &lt;br /&gt;
: http://speeldoos.showcase.surfnet.nl/dvlsm/&lt;br /&gt;
&lt;br /&gt;
=====Miro Player=====&lt;br /&gt;
: &amp;quot;Miro (formerly known as Democracy). The only video player you need.&amp;quot; is a player focused on Internet TV. It uses {{VLC}} as a back-end on Windows.&lt;br /&gt;
: [http://www.getmiro.com/ Get Miro player]&lt;br /&gt;
&lt;br /&gt;
=====DentiFreeX=====&lt;br /&gt;
: Dispositif d&#039;Enregistrement Numérique pour la Télévision sur Internet par Flux Reçus En Environnement mac osX&lt;br /&gt;
: http://coolercolors.free.fr/forum&lt;br /&gt;
&lt;br /&gt;
=====Elephant&#039;s Dream=====&lt;br /&gt;
: Community-developed movie using free tools - free with creative commons license.&lt;br /&gt;
: http://www.elephantsdream.org/&lt;br /&gt;
&lt;br /&gt;
=====Free=====&lt;br /&gt;
: Free ADSL uses VideoLAN around it&#039;s multi-function ADSL Modem and TV adapter as well. &#039;&#039;La fonction [http://adsl.free.fr/tv/multiposte/ Multiposte] permet de visionner les chaînes TV sur un ordinateur avec un client VLC. Le [http://www.freeplayer.org/portal.php?pid=6 FreePlayer] permet de visioner des vidéo ou d&#039;écouter des fichier audio d&#039;un ordinateur sur la télévision en utilisant VLC.&#039;&#039;&lt;br /&gt;
: http://adsl.free.fr/&lt;br /&gt;
&lt;br /&gt;
=====Google, inc.=====&lt;br /&gt;
: As previously announced [http://www.boingboing.net/2005/06/26/google_to_launch_onl.html] [http://battellemedia.com/archives/001658.php], Google&#039;s video search used to use a browser plugin based on VLC.&lt;br /&gt;
: http://video.google.com/&lt;br /&gt;
&lt;br /&gt;
=====Kantaris Media Player=====&lt;br /&gt;
: [http://www.kantaris.org/ Kantaris] is a new all-in-one media player that uses {{VLC}} for video playback and Bass audio library for audio playback.&lt;br /&gt;
: http://www.kantaris.org/&lt;br /&gt;
&lt;br /&gt;
=====Knots - Media streaming webapp for Windows, Linux, FreeBSD and OS X=====&lt;br /&gt;
: [http://nakkiboso.com/knots2/ Knots] is a media streaming webapp that uses {{VLC}} for video transcoding. There&#039;s also a client for the Nokia n8x0 Internet tablets.&lt;br /&gt;
: http://nakkiboso.com/knots2/&lt;br /&gt;
&lt;br /&gt;
=====Las Vegas Security Lines=====&lt;br /&gt;
: On the Las Vegas Airport, people in line for the security checks are treated to some &#039;how to keep the line as short as possible&#039; movies. These movies are being streamed with VLC.&lt;br /&gt;
: [http://www.usatoday.com/travel/news/2004-10-05-vegas-airport_x.htm An article about this project]&lt;br /&gt;
&lt;br /&gt;
=====Metavid=====&lt;br /&gt;
: Metavid uses the vlc mozilla plugin in a part of an all open source archive which aims to facilitate real-time collective [re]mediation of legislative proceedings.&lt;br /&gt;
: http://metavid.org&lt;br /&gt;
&lt;br /&gt;
=====Mírame=====&lt;br /&gt;
: Mírame is a video surveillance web-based application that uses VLC to display MPEG-4 streams from [http://www.axis.com/products/video/camera/ Axis Network Cameras]&lt;br /&gt;
: http://www.mirame.net/&lt;br /&gt;
&lt;br /&gt;
=====Neuros OSD2=====&lt;br /&gt;
&lt;br /&gt;
: The [http://wiki.neurostechnology.com/index.php/OSD_2.0_HD Neuros OSD2] is a networked, open video recording and playback &#039;&#039;&#039;device&#039;&#039;&#039; (it&#039;s hardware) that uses VLC to allow playback of a variety of content directly on the TV.  Likewise, recording from any analog source is supported. &lt;br /&gt;
&lt;br /&gt;
=====Neutrino MoviePlayer=====&lt;br /&gt;
: The [http://www.dbox2.info Neutrino] [http://www.giggo.de/dbox2/movieplayer.html MoviePlayer] now uses VLC so users can stream the movies on their computer to a a DBox.&lt;br /&gt;
&lt;br /&gt;
=====OSSTL: Open Source Studio to Transmitter Link (STL)=====&lt;br /&gt;
: A Studio to Transmitter Link created with (mostly) Open Source Software (In use by a local FM and two local AM radio stations)&lt;br /&gt;
: http://jasonellison.net/projects.html&lt;br /&gt;
&lt;br /&gt;
=====Østfold University College=====&lt;br /&gt;
:[http://media.hiof.no/ Østfold University College] uses VLC to transcode and stream radio and TV channels from the Norwegian Broadcasting Corporation (NRK) in Ogg Vorbis and MP3; record and transcode meetings of the Norwegian Parliament; and to transcode the Norwegian movie heritage to MPEG-4 format (in co-operation with the Norwegian Film Institute).&lt;br /&gt;
&lt;br /&gt;
=====Participatory Culture Foundation=====&lt;br /&gt;
: DTV is a webbased player for their RSS based videoblogging system that uses our mozilla plugin&lt;br /&gt;
: http://www.participatoryculture.org/&lt;br /&gt;
&lt;br /&gt;
=====Plutohome=====&lt;br /&gt;
: They have a vlc module for their system. Exact use unknown.&lt;br /&gt;
: http://plutohome.com/&lt;br /&gt;
&lt;br /&gt;
=====SEMs=====&lt;br /&gt;
: SEMs is a University of North Dakota public outreach project that uses VLC to webcast eclipses and transits to the world.&lt;br /&gt;
: http://www.sems.und.edu/&lt;br /&gt;
&lt;br /&gt;
=====Sinderon SinCast=====&lt;br /&gt;
: SinCast is a front-end for VLC that makes it easy to stream music, video, and television to multiple destinations simultaneously, and for on-demand access over HTTP. SinCast provides an integrated file/folder browser and a TV channel list for HDHomeRun networked HDTV tuners.  http://www.sinderon.com&lt;br /&gt;
&lt;br /&gt;
=====Tryst=====&lt;br /&gt;
: This application is based on VLC and uses Bonjour announcements to share video broadcasts.&lt;br /&gt;
: http://www.trystx.com/&lt;br /&gt;
&lt;br /&gt;
=====UmeTV=====&lt;br /&gt;
: UmeTV is a local TV channel in Umeå, Sweden. Anyone in Umeå with cable (&amp;gt;30,000 households) or UmeNet IPTV can see the channel. VideoLAN VLC is used to transfer live broadcasts via IP to the broadcasting Linux system.&lt;br /&gt;
: http://umetv.se/&lt;br /&gt;
&lt;br /&gt;
=====UnPlug=====&lt;br /&gt;
: This is a Mozilla Firefox extension for finding and playing videos from web pages. Some of it&#039;s features use VLC Player.&lt;br /&gt;
: https://addons.mozilla.org/en-US/firefox/addon/2254&lt;br /&gt;
&lt;br /&gt;
=====Urifs=====&lt;br /&gt;
: This is a filesystem for mounting remote protocols such as http, ftp, ...  libvlc is used for streaming remote files.&lt;br /&gt;
: http://urifs.sourceforge.net&lt;br /&gt;
&lt;br /&gt;
=====VLC Controller=====&lt;br /&gt;
: This Extension to Sailing Clicker to allow you to use a PDA or phone to control VLC trough a bluetooth connection.&lt;br /&gt;
: [http://www.snarb.tk/ website]&lt;br /&gt;
&lt;br /&gt;
=====VLC Remote=====&lt;br /&gt;
: A very nice Dashboard widget that uses the VLC webinterface to control a remote VLC.&lt;br /&gt;
: [http://www.autopoetic.com/vlcremote/ VLC remote hompage].&lt;br /&gt;
&lt;br /&gt;
=====VLC Romeo Plugins=====&lt;br /&gt;
: Plugins to use Romeo to control VLC trough a bluetooth PDA or phone.&lt;br /&gt;
: [http://homepage.mac.com/WebObjects/FileSharing.woa/wa/default?user=srouet&amp;amp;templatefn=FileSharing4.html&amp;amp;xmlfn=TKDocument.4.xml&amp;amp;sitefn=RootSite.xml&amp;amp;aff=consumer&amp;amp;cty=US&amp;amp;lang=en website]&lt;br /&gt;
&lt;br /&gt;
=====VLMC (VideoLAN Movie Creator)=====&lt;br /&gt;
: Non-linear video editing software based on VLC.&lt;br /&gt;
: [http://www.vlmc.org http://www.vlmc.org]&lt;/div&gt;</summary>
		<author><name>Demanciel</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Documentation:Building_Pages_for_the_HTTP_Interface&amp;diff=9577</id>
		<title>Documentation:Building Pages for the HTTP Interface</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Documentation:Building_Pages_for_the_HTTP_Interface&amp;diff=9577"/>
		<updated>2007-07-19T06:13:03Z</updated>

		<summary type="html">&lt;p&gt;Demanciel: typos correction&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{RightMenu|documentation play howto toc}}&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
This appendix describes the language used for writing dynamic web pages for the HTTP interface.&lt;br /&gt;
&lt;br /&gt;
Pages must be placed in the share/http folder in either VLC&#039;s folder (Windows, Mac) or /usr/share/vlc/share/http or /usr/local/share/vlc/share/http (or wherever vlc&#039;s shared files are installed).&lt;br /&gt;
&lt;br /&gt;
Some files are handled a bit specially:&lt;br /&gt;
*Files beginning with &#039;.&#039; are not exported.&lt;br /&gt;
*A &#039;.access&#039; file will be opened and the http interface will expect to find at the first line a login/password (written as login:password). This login/password will be used to protect all files in this directory. Be careful that only files in this directory will be protected. (sub-directories won&#039;t be protected.)&lt;br /&gt;
* A &#039;.hosts&#039; file will be opened and the http interface will expect to find a list of network/mask pairs separated by new line, for instance 192.168.0.0/255.255.255.0. If this file is present, then the default behaviour is to deny access from hosts which don&#039;t match any of the network/mask pairs to all the files of the directory. If the file is not present, then any host has access to the files of the directory. Be careful that only files in this directory will be protected. (sub-directories won&#039;t be protected.)&lt;br /&gt;
*The file &amp;lt;dir&amp;gt;/index.html will be exported as &amp;lt;dir&amp;gt; and &amp;lt;dir&amp;gt;/ and not as index.html.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The MIME type is set by looking at the file extension and cannot be specified nor modified for a specific file. Unknown extensions will have &amp;quot;application/octet-stream&amp;quot; as MIME type.&lt;br /&gt;
&lt;br /&gt;
You should avoid exporting big files. Each file is indeed first loaded into the memory before being sent to the client, so please be careful.&lt;br /&gt;
&lt;br /&gt;
==VLC macros==&lt;br /&gt;
&lt;br /&gt;
Each time a .html/.htm page is requested, it is parsed by VLC before being sent. The parser searches for the VLC macros, and executes or substitutes them. Moreover, URL arguments received by the GET method can be interpreted.&lt;br /&gt;
&lt;br /&gt;
A VLC macro looks like:&lt;br /&gt;
 &amp;lt;vlc id=&amp;quot;macro-name&amp;quot; param1=&amp;quot;macro-parameters1&amp;quot; param2=&amp;quot;macro-parameters2&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;quot;id&amp;quot; is the only mandatory field, param1 and param2 may or may not be present and depend on the value of &amp;quot;id&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
You should take care that you &#039;&#039;&#039;have to&#039;&#039;&#039; respect this syntax, VLC won&#039;t like invalid syntax. (It could easily leads to crashes).&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
Correct:&lt;br /&gt;
 &amp;lt;vlc id=&amp;quot;value&amp;quot; param1=&amp;quot;version&amp;quot; /&amp;gt;&lt;br /&gt;
Incorrect:&lt;br /&gt;
 &amp;lt;vlc id=&amp;quot;value&amp;quot; param1=&amp;quot;version&amp;quot; &amp;gt; (missing tag ending)&lt;br /&gt;
 &amp;lt;vlc id=value param1=&amp;quot;version&amp;quot; /&amp;gt; (missing &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Valid macros are:&lt;br /&gt;
*&#039;&#039;&#039;control&#039;&#039;&#039; (1 optional parameter)&lt;br /&gt;
*&#039;&#039;&#039;include&#039;&#039;&#039; (1 parameter)&lt;br /&gt;
*&#039;&#039;&#039;get&#039;&#039;&#039; (2 parameters)&lt;br /&gt;
*&#039;&#039;&#039;set&#039;&#039;&#039; (2 parameters)&lt;br /&gt;
*&#039;&#039;&#039;rpn&#039;&#039;&#039; (1 parameter)&lt;br /&gt;
*&#039;&#039;&#039;if&#039;&#039;&#039; (1 optional parameter)&lt;br /&gt;
*&#039;&#039;&#039;else&#039;&#039;&#039; (no parameter)&lt;br /&gt;
*&#039;&#039;&#039;end&#039;&#039;&#039; (no parameter)&lt;br /&gt;
*&#039;&#039;&#039;value&#039;&#039;&#039; (1 optional parameter)&lt;br /&gt;
*&#039;&#039;&#039;foreach&#039;&#039;&#039; (2 parameters)&lt;br /&gt;
&lt;br /&gt;
For powerful macros, you may use these tools:&lt;br /&gt;
&lt;br /&gt;
*RPN Evaluator (see part 2)&lt;br /&gt;
*Stacks: The stack is a place where you can push numbers and strings, and then pop them backs. It&#039;s used with the little RPN evaluator.&lt;br /&gt;
*Local variables: You can dynamically create new variables and changes their values. Some local variables are predefined:&lt;br /&gt;
**&#039;&#039;&#039;url_value&#039;&#039;&#039;: parameter of the URL&lt;br /&gt;
**&#039;&#039;&#039;url_param&#039;&#039;&#039;: 1 if url_value isn&#039;t empty else 0&lt;br /&gt;
**&#039;&#039;&#039;version&#039;&#039;&#039;: the VLC version&lt;br /&gt;
**&#039;&#039;&#039;copyright&#039;&#039;&#039;: the VLC copyright&lt;br /&gt;
**&#039;&#039;&#039;vlc_compile_time, vlc_compile_by, vlc_compile_host, vlc_compile_domain, vlc_compiler, vlc_changeset&#039;&#039;&#039;: information on the VLC build&lt;br /&gt;
**&#039;&#039;&#039;stream_position, stream_time, stream_length, stream_state&#039;&#039;&#039;: information on the currently playing stream&lt;br /&gt;
**&#039;&#039;&#039;volume&#039;&#039;&#039;: current volume setting&lt;br /&gt;
&lt;br /&gt;
Remark: The stacks, and local variables context is reset before the page is executed.&lt;br /&gt;
&lt;br /&gt;
==The RPN evaluator==&lt;br /&gt;
&lt;br /&gt;
RPN means Reverse Polish Notation.&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
&lt;br /&gt;
RPN may look strange but it&#039;s a fast and easy way to write expressions. It also avoids the use of ( and ).&lt;br /&gt;
&lt;br /&gt;
Instead of writing ( 1 + 2 ) * 5 you just use 1 2 + 5 *.&lt;br /&gt;
&lt;br /&gt;
The idea behind it is: if we have a number or a string (using &#039;&#039;), push it on the stack. If it is an operator (like +),  pop the arguments from the stack, execute the operators and then push the result onto the stack. The result of the RPN sequence is the value on the top of the stack.&lt;br /&gt;
&lt;br /&gt;
 stack:      Word processed&lt;br /&gt;
 empty      1                   1 is pushed on the stack&lt;br /&gt;
 1          2                   2 same things&lt;br /&gt;
 1 | 2      +                   +: remove 1 and 2 and write 3 on the stack&lt;br /&gt;
 3          5                   5 is pushed on the stack&lt;br /&gt;
 3 | 5      *                   *: remove 3 and 5 and write 15&lt;br /&gt;
 15                             &amp;amp;lt;- result&lt;br /&gt;
&lt;br /&gt;
===Operators===&lt;br /&gt;
&lt;br /&gt;
Notation: ST(1) means the first stack element, ST(2) the second one ... and op is the operator.&lt;br /&gt;
&lt;br /&gt;
You have access to :&lt;br /&gt;
*Standard arithmetics operators: &#039;&#039;&#039;+, -, *, /, %&#039;&#039;&#039; these ones push the result of ST(1) op ST(2) onto the stack&lt;br /&gt;
*Binary operators: &#039;&#039;&#039;!&#039;&#039;&#039; (push !ST(1)); &#039;&#039;&#039;^, &amp;amp;, |&#039;&#039;&#039;: push the result ST(1) op ST(2)&lt;br /&gt;
*test: &#039;&#039;&#039;=, &amp;lt;, &amp;lt;=, &amp;gt;, &amp;gt;=&#039;&#039;&#039;: execute ST(1) op ST(2) and push -1 if true else 0&lt;br /&gt;
*string functions:&lt;br /&gt;
**&#039;&#039;&#039;strcat&#039;&#039;&#039;: pushes the result of &#039;ST(1)ST(2)&lt;br /&gt;
**&#039;&#039;&#039;strcmp&#039;&#039;&#039;: compares ST(1) and ST(2) (0 if equal)&lt;br /&gt;
**&#039;&#039;&#039;strncmp&#039;&#039;&#039;: compares the first ST(1) characters of ST(2) and ST(3) (0 if equal)&lt;br /&gt;
**&#039;&#039;&#039;strsub&#039;&#039;&#039;: extracts characters ST(1) to ST(2) of streaing ST(3)&lt;br /&gt;
**&#039;&#039;&#039;strlen&#039;&#039;&#039;: pushes the length of ST(1)&lt;br /&gt;
**&#039;&#039;&#039;str_replace&#039;&#039;&#039;: replaces string ST(2) with ST(1) in ST(3)&lt;br /&gt;
**&#039;&#039;&#039;url_encode&#039;&#039;&#039;: encodes non-alphanumeric characters of ST(1) as %XX so that they can be safely passed as GET or POST variables&lt;br /&gt;
**&#039;&#039;&#039;url_extract&#039;&#039;&#039;: performs the reverse operation of url_encode&lt;br /&gt;
**&#039;&#039;&#039;addslashes&#039;&#039;&#039;: protects single quotes (&#039;) and double quotes (&amp;quot;) of ST(1) with backslashes (\) so that they can be safely passed to a VLC playlist function&lt;br /&gt;
**&#039;&#039;&#039;stripslashes&#039;&#039;&#039;: performs the reverse operation of addslashes&lt;br /&gt;
**&#039;&#039;&#039;htmlspecialchars&#039;&#039;&#039;: encodes &amp;amp;, &#039;, &amp;quot;, &amp;lt;, and &amp;gt; of ST(1) as their &amp;amp;stuff; HTML counterpart, so that they don&#039;t interact with HTML tags&lt;br /&gt;
**&#039;&#039;&#039;realpath&#039;&#039;&#039;: parses ST(1) as a filename path, and pushes an absolute path to that file, removing ~ and ../&lt;br /&gt;
*stack manipulation:&lt;br /&gt;
**&#039;&#039;&#039;dup&#039;&#039;&#039;: pops ST(1) and pushes the same string twice&lt;br /&gt;
**&#039;&#039;&#039;drop&#039;&#039;&#039;: pops ST(1) and drops it&lt;br /&gt;
**&#039;&#039;&#039;swap&#039;&#039;&#039;: exchanges ST(1) and ST(2)&lt;br /&gt;
**&#039;&#039;&#039;flush&#039;&#039;&#039;: empties the stack&lt;br /&gt;
*variables manipulation:&lt;br /&gt;
**&#039;&#039;&#039;store&#039;&#039;&#039;: stores ST(2) in a local variable named ST(1)&lt;br /&gt;
**&#039;&#039;&#039;value&#039;&#039;&#039;: pushes the value of the local variable named ST(1)&lt;br /&gt;
*player control:&lt;br /&gt;
**&#039;&#039;&#039;vlc_play&#039;&#039;&#039;: plays the playlist item whose ID is ST(1), and pushes the return value of the play function (0 in case of success); see playlist functions below&lt;br /&gt;
**&#039;&#039;&#039;vlc_stop&#039;&#039;&#039;: stops the playlist&lt;br /&gt;
**&#039;&#039;&#039;vlc_pause&#039;&#039;&#039;: pauses the playlist&lt;br /&gt;
**&#039;&#039;&#039;vlc_next&#039;&#039;&#039;: plays the next playlist item&lt;br /&gt;
**&#039;&#039;&#039;vlc_previous&#039;&#039;&#039;: plays the previous playlist item&lt;br /&gt;
**&#039;&#039;&#039;vlc_seek&#039;&#039;&#039;: seeks the current input to a location defined in ST(1), for instance+3m (minutes), -20s, 45%, 1:12, 1h12m25s&lt;br /&gt;
**&#039;&#039;&#039;vlc_var_type&#039;&#039;&#039;: pushes the type of the variable ST(2) of object ST(1); the type is one of these strings &#039;&#039;&#039;VLC_VAR_BOOL, VLC_VAR_INTEGER, VLC_VAR_HOTKEY, VLC_VAR_STRING, VLC_VAR_MODULE, VLC_VAR_FILE, VLC_VAR_DIRECTORY, VLC_VAR_VARIABLE, VLC_VAR_FLOAT, UNDEFINED&#039;&#039;&#039; (no such variable) or &#039;&#039;&#039;INVALID&#039;&#039;&#039; (no input stream); the object is one of &#039;&#039;&#039;VLC_OBJECT_ROOT, VLC_OBJECT_VLC, VLC_OBJECT_INTF, VLC_OBJECT_PLAYLIST, VLC_OBJECT_INPUT, VLC_OBJECT_VOUT, VLC_OBJECT_AOUT&#039;&#039;&#039; or &#039;&#039;&#039;VLC_OBJECT_SOUT&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;vlc_var_set&#039;&#039;&#039;: sets variable ST(2) of object ST(1) to ST(3)&lt;br /&gt;
**&#039;&#039;&#039;vlc_var_get&#039;&#039;&#039;: pushes the value of the variable ST(2) of object ST(1)&lt;br /&gt;
**&#039;&#039;&#039;vlc_object_exists&#039;&#039;&#039;: checks if object ST(1) exists&lt;br /&gt;
**&#039;&#039;&#039;vlc_config_type&#039;&#039;&#039;: pushes the type of the configuration variable ST(1); see &#039;&#039;&#039;vlc_var_type&#039;&#039;&#039; for a list of types&lt;br /&gt;
**&#039;&#039;&#039;vlc_config_set&#039;&#039;&#039;:  sets configuration variable ST(1) to ST(2)&lt;br /&gt;
**&#039;&#039;&#039;vlc_config_get&#039;&#039;&#039;: pushes the value of the configuration variable ST(1)&lt;br /&gt;
**&#039;&#039;&#039;vlc_config_save&#039;&#039;&#039;: saves the modification made to the configuration variables of module ST(1) to the configuration file (ST(1) may be empty, in which case the whole configuration is saved) and pushes the return status (0 in case of success)&lt;br /&gt;
**&#039;&#039;&#039;vlc_config_reset&#039;&#039;&#039;: resets the configuration file to the default value (use with caution)&lt;br /&gt;
**&#039;&#039;&#039;vlc_volume_set&#039;&#039;&#039;: sets the volume value to ST(1) which can be a raw value between 0 and 1024, or a relative one between 0% and 400%, where 1% is equal to the maximum volume value divided by 400 (thus, the maximum volume value is equal to 400%, that is 1024). If ST(1) begins with a &#039;+&#039; (or &#039;-&#039;) operator, the volume is increased (or decreased) by the raw value which follows this operator&lt;br /&gt;
**&#039;&#039;&#039;vlc_get_meta&#039;&#039;&#039;: pushes the value of the meta information named by ST(1) from the stream being played. Available meta names are: &amp;quot;Title&amp;quot; (or &amp;quot;TITLE&amp;quot;), &amp;quot;Author&amp;quot;, &amp;quot;Artist&amp;quot; (or &amp;quot;ARTIST&amp;quot;), &amp;quot;Genre&amp;quot; (or &amp;quot;GENRE&amp;quot;), &amp;quot;Copyright&amp;quot;, &amp;quot;Album/movie/show title&amp;quot; (or &amp;quot;ALBUM&amp;quot;), &amp;quot;Track number/position in set&amp;quot;, &amp;quot;Description&amp;quot;, &amp;quot;Rating&amp;quot;, &amp;quot;Date&amp;quot;, &amp;quot;Setting&amp;quot;, &amp;quot;URL&amp;quot;, &amp;quot;Language&amp;quot;, &amp;quot;Now Playing&amp;quot;, &amp;quot;Publisher&amp;quot;&lt;br /&gt;
**&#039;&#039;&#039;vlm_command&#039;&#039;&#039; or &#039;&#039;&#039;vlm_cmd&#039;&#039;&#039;: sends the command that is on the stack to the VLM (VideoLan Manager). Since the command can contain more than one component on the stack, it must be ended by an &#039;;&#039; or an empty string pushed on the stack (e.g.: param1=&amp;quot;&#039;;&#039; &#039;command&#039; &#039;my&#039; &#039;this is&#039; vlm_command&amp;quot;). Once the VLM has executed the command, the return value is assigned to the local variable &#039;&#039;&#039;vlm_value&#039;&#039;&#039; and the error string (if available) is assigned to &#039;&#039;&#039;vlm_error&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;snapshot&#039;&#039;&#039;: takes a snapshot&lt;br /&gt;
*playlist functions:&lt;br /&gt;
**&#039;&#039;&#039;playlist_add&#039;&#039;&#039;: adds MRL ST(1) to the playlist, with name ST(2) and returns the playlist ID associated to this item; special characters must be escaped with addslashes first; it is very convenient to call &#039;toto.mpg&#039; playlist_add vlc_play&lt;br /&gt;
**&#039;&#039;&#039;playlist_empty&#039;&#039;&#039;: clears the playlist of all items&lt;br /&gt;
**&#039;&#039;&#039;playlist_move&#039;&#039;&#039;: moves playlist item at position ST(2) to position ST(1)&lt;br /&gt;
**&#039;&#039;&#039;playlist_delete&#039;&#039;&#039;: deletes playlist item ID ST(1)&lt;br /&gt;
**&#039;&#039;&#039;playlist_sort&#039;&#039;&#039;: sorts the playlist using the mode ST(2) and order ST(1). Available order values are 0 (normal order) and 1 (reverse order). Available mode values are 0 (sort by ID), 1 (sort by title), 2 (sort by title, nodes first), 3 (sort by author), 4 (sort by genre), 5 (sort randomly), 6 (sort by duration), 7 (numerically sort by title) and 8 (sort by album)&lt;br /&gt;
**&#039;&#039;&#039;services_discovery_add&#039;&#039;&#039;: adds the service discovery ST(1) to the playlist&lt;br /&gt;
**&#039;&#039;&#039;services_discovery_remove&#039;&#039;&#039;: removes the service discovery ST(1) from the playlist&lt;br /&gt;
**&#039;&#039;&#039;services_discovery_is_loaded&#039;&#039;&#039;: checks if the service discovery ST(1) is loaded in the playlist, and pushes the answer on the stack&lt;br /&gt;
&lt;br /&gt;
==The macros==&lt;br /&gt;
&lt;br /&gt;
===The &#039;&#039;control&#039;&#039; macro===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The use of the control macro is now deprecated in favour of the RPN functions above. The documentation is provided here for the maintainance of HTML pages still using this old API. The main problem with this API is that there is no way to retrieve the playlist ID of the last added item.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
When asking for a page, you can give arguments to it through the url. (e.g. using a &amp;lt;form&amp;gt;). Ex: http://host:port/page.html?var=value&amp;amp;var2=value2&amp;amp;... The &amp;quot;control&amp;quot; macro tells a page to parse these arguments and to execute the ones that are allowed. param1 of this macro says which commands are allowed. If empty, all commands will be permitted.&lt;br /&gt;
&lt;br /&gt;
Some commands require an argument that must be passed in the URL too.&lt;br /&gt;
*URL commands&lt;br /&gt;
**Name, Argument, Description&lt;br /&gt;
**&#039;&#039;&#039;play&#039;&#039;&#039;, item (integer), Play the specified playlist item&lt;br /&gt;
**&#039;&#039;&#039;stop&#039;&#039;&#039;, ,Stop&lt;br /&gt;
**&#039;&#039;&#039;pause&#039;&#039;&#039;, Pause&lt;br /&gt;
**&#039;&#039;&#039;next&#039;&#039;&#039;, , Go to next playlist item&lt;br /&gt;
**&#039;&#039;&#039;previous&#039;&#039;&#039;, , Go to previous playlist item&lt;br /&gt;
**&#039;&#039;&#039;add&#039;&#039;&#039;, mrl (string), Add a [[MRL]] to the playlist&lt;br /&gt;
**&#039;&#039;&#039;delete&#039;&#039;&#039;, item (integer), Delete the specified playlist item or list of playlist items&lt;br /&gt;
**&#039;&#039;&#039;empty&#039;&#039;&#039;, , Empty the playlist&lt;br /&gt;
**&#039;&#039;&#039;close&#039;&#039;&#039;, id (hexa), Close a specific connection&lt;br /&gt;
**&#039;&#039;&#039;shutdown&#039;&#039;&#039;, , Quit VLC&lt;br /&gt;
&lt;br /&gt;
For example, you can restrict execution of the &#039;&#039;&#039;shutdown&#039;&#039;&#039; command to protected page (through a &#039;&#039;.access&#039;&#039; file), using the control macro in all unprotected pages.&lt;br /&gt;
&lt;br /&gt;
===The &#039;&#039;include&#039;&#039; macro===&lt;br /&gt;
&lt;br /&gt;
This macro is replaced by the contents of the file param1. If the file contains vlc macros, they are correctly parsed and replaced.&lt;br /&gt;
&lt;br /&gt;
===The &#039;&#039;get&#039;&#039; macro===&lt;br /&gt;
&lt;br /&gt;
This macro will be replaced by the value of the configuration variable which name is stored in param1 and which type is given by param2.&lt;br /&gt;
&lt;br /&gt;
param1 must be the name of an existing configuration variable. param2 must be the right type of the variable. It can be one of &#039;&#039;int&#039;&#039;, &#039;&#039;float&#039;&#039;, or &#039;&#039;string&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 &amp;lt;vlc id=&amp;quot;get&amp;quot; param1=&amp;quot;sout&amp;quot; param2=&amp;quot;string&amp;quot; /&amp;gt; will be replaced in the output page by the value of sout.&lt;br /&gt;
&lt;br /&gt;
===The &#039;&#039;set&#039;&#039; macro===&lt;br /&gt;
&lt;br /&gt;
This macro allows to set the value of a configuration variable. The name is given by param1 and the type by param2 (like for get). The value is retrieved from the url using the name given in param1.&lt;br /&gt;
&lt;br /&gt;
For example, if player.html contains&lt;br /&gt;
 &amp;lt;vlc id=&amp;quot;set&amp;quot; param1=&amp;quot;sout&amp;quot; param2=&amp;quot;string&amp;quot; /&amp;gt;&lt;br /&gt;
and if you browse at &amp;lt;emphasis&amp;gt; http://host:ip/player.html?sout=sout_value&amp;lt;/emphasis&amp;gt;, the sout variable will be set to &amp;quot;sout_value&amp;quot;. If the URL doesn&#039;t contain sout, nothing will be done.&lt;br /&gt;
&lt;br /&gt;
===The &#039;&#039;rpn&#039;&#039; macro===&lt;br /&gt;
&lt;br /&gt;
This macro allows you to interpret RPN commands. (See II).&lt;br /&gt;
&lt;br /&gt;
===The &#039;&#039;if,else,end&#039;&#039; macro===&lt;br /&gt;
&lt;br /&gt;
This macro allows you to control the parsing of the HTML page.&lt;br /&gt;
&lt;br /&gt;
If param1 isn&#039;t empty, it is first executed with the RPN evaluator. If the first element from the stack is not 0, the test value is true, else false..&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;vlc id=&amp;quot;if&amp;quot; param1=&amp;quot;1 2 =&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;amp;lt;!-- Never reached --&amp;gt;&lt;br /&gt;
 &amp;lt;vlc id=&amp;quot;else&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;amp;lt;p&amp;gt; Test succeed: 1 isn&#039;t equal to 2 &amp;amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;vlc id=&amp;quot;end&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also just use &amp;quot;if&amp;quot; and &amp;quot;end&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===The &#039;&#039;value&#039;&#039; macro===&lt;br /&gt;
&lt;br /&gt;
If param1 isn&#039;t empty, it is first executed with the RPN evaluator. The macro is replaced with the value of the first element of the stack.&lt;br /&gt;
&lt;br /&gt;
Note: If the element is the name of a local variable, its value will be displayed instead of its name.&lt;br /&gt;
&lt;br /&gt;
===The &#039;&#039;foreach,end&#039;&#039; macro===&lt;br /&gt;
&lt;br /&gt;
param1 is the name of the variable that will be used for the loop. param2 is the name of the set to be built:&lt;br /&gt;
*integer: take the first element from the stack to construct a set of integer. The stack element should be a string like: &#039;&#039;first:last[:step][,first2:last2[:step2][,...]&#039;&#039; (Ex:1:5:2,6:8:1 will be expanded into 1,3,5,6,7,8)&lt;br /&gt;
*directory: take the first element of the stack as the base directory and construct a set of filename and directly in it. Each element has the following fields:&lt;br /&gt;
**name: file/directory name&lt;br /&gt;
**type: &amp;quot;directory&amp;quot; or &amp;quot;file&amp;quot; or &amp;quot;unknown&amp;quot;&lt;br /&gt;
**size: size of the file&lt;br /&gt;
**date&lt;br /&gt;
*playlist: set based on the playlist with fields: current is 1 if item is currently selected, 0 else. index is the index value, that can be used by the play or delete control command. name is the&lt;br /&gt;
name of the item.&lt;br /&gt;
*&amp;quot;information&amp;quot;: Create information for the current playing stream. name is the name of the category, value is its value, info is a new set that can be parsed with a new foreach (subfields of info are name and value).&lt;br /&gt;
*input variables such as &amp;quot;program&amp;quot;, &amp;quot;title&amp;quot;, &amp;quot;chapter&amp;quot;, &amp;quot;audio-es&amp;quot;, &amp;quot;video-es&amp;quot; and &amp;quot;spu-es&amp;quot;: Create lists for the current playing stream. Every list has the following fields:&lt;br /&gt;
**name: item name (language for elementary streams, tracks, etc.) to display in places where a human-readable format is preferred&lt;br /&gt;
**id: item ID to pass to the RPN function vlc_var_set, and returned by vlc_var_get&lt;br /&gt;
**selected: 1 if the item is selected, 0 otherwise&lt;br /&gt;
*the name of a foreach variable if it&#039;s a set of set of value.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;vlc id=&amp;quot;foreach&amp;quot; param1=&amp;quot;cat&amp;quot; param2=&amp;quot;informations&amp;quot; /&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;vlc id=&amp;quot;value&amp;quot; param1=&amp;quot;cat.name&amp;quot; /&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;ul&amp;amp;gt;&lt;br /&gt;
         &amp;amp;lt;vlc id=&amp;quot;foreach&amp;quot; param1=&amp;quot;info&amp;quot; param2=&amp;quot;cat.info&amp;quot; /&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;li&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;vlc id=&amp;quot;value&amp;quot; param1=&amp;quot;info.name&amp;quot; /&amp;amp;gt; :&lt;br /&gt;
                    &amp;amp;lt;vlc id=&amp;quot;value&amp;quot; param1=&amp;quot;info.value&amp;quot; /&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;/li&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;vlc id=&amp;quot;end&amp;quot; /&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;/ul&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;vlc id=&amp;quot;end&amp;quot; /&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For more details, have a look at the share/http directory of the VLC source tree...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Documentation}}&lt;/div&gt;</summary>
		<author><name>Demanciel</name></author>
	</entry>
</feed>