Documentation:Alternative Interfaces
Contents
The HTTP interface
VLC ships with a little HTTP server integrated. It is used both to stream using HTTP, and for the HTTP remote control interface.
To start VLC with the HTTP interface, use:
% vlc -I http [--http-src /directory/] [--http-host host:port]
If you want to have both the "normal" interface and the HTTP interface, use vlc --extraintf http.
The HTTP interface will start listening at host:port (<all interfaces>:8080 if omitted), and will reproduce the structure of /directory at http://host:port/ ( vlc_source_path/share/http if omitted ).
Use a browser to go to http://your_host_machine:port. You should be taken to the main page.
VLC is shipped with a set of files that should be enough for generic needs. It is also possible to customize pages. See Documentation:Play HowTo/Building Pages for the HTTP Interface.
Available pages for 1.0.3 :
- http://host:port - Main Interface
- http://host:port/vlm.html - VLM Interface
- http://host:port/mosaic.html - Mosaic Wizard
- http://host:port/flash.html - Flash based remote playback
HTTP Requests =
ADDENDUM - HTTP COMMAND LIST
COMMANDS WHICH MAY BE USED OVER THE HTTP REMOTE-CONTROL PORT
There is a fulsome set of remote-control commands for VLC which are for some reason not documented on the site - hence I have added them here. This seems the most convenient and reliable interface for developers to use. The commands ARE listed - but the list is tucked away in a README file, in the http subfolder of the little HTTP server under the VLC executables folder.
How the Commands & Status Queries Work
The commands below are all applied by submitting an HTTP-GET for one of the xml files stored in the VLC http/requests folder. For example, VLC will report back the current playlist when you submit a URL of the form
http://127.0.0.1:9090/requests/playlist.xml (that is for a VLC which was started, listening on port 9090).
Similarly,
http://127.0.0.1:9090/requests/status.xml
will report back the player status. Commands TO the player are sent by appending a trailing command parameter (following a '?' separator) to this latter status query command.
A few examples:
SHOW CURRENT PLAYLIST:
http://127.0.0.1:9090/requests/playlist.xml
SHOW STATUS:
http://127.0.0.1:9090/requests/status.xml
STOP
http://127.0.0.1:9090/requests/status.xml?command=pl_stop
CLEAR PLAYLIST
http://127.0.0.1:9090/requests/status.xml?command=pl_empty
PLAY AN RTSP STREAM URL:
http://127.0.0.1:9090/requests/status.xml?command=in_play&input=rtsp://user:pass@somewebcameraaddress.com:9552/cam1/mpeg4
By the bye: to start VLC's control HTTPD service on a specific port, use the syntax
vlc --intf http --http-host 10.1.1.156:9090
HERE IS the FULL http-remote-control command list (as listed in README.txt in the VLC http subfolder) :-
Commands available through the requests/ path:
Lines starting with < describe what the page sends back
Lines starting with > describe what you can send to the page
All parameters need to be URL encoded.
Examples:
# -> %23 % -> %25 + -> %2B space -> + ...
status.xml:
< Get VLC status information, current item info and meta.
> add <mrl> to playlist and start playback:
?command=in_play&input=<mrl>
> add <mrl> to playlist:
?command=in_enqueue&input=<mrl>
> play playlist item <id>:
?command=pl_play&id=<id>
NB: ?command=pl_play also works (no ID needed).
> toggle pause. If current state was 'stop', play item <id>:
?command=pl_pause&id=<id>
NB: ?command=pl_pause NB: seems largely ignored ? stream often continues. (May depend on whether camera obeys pause command - NB this command may only cause a PAUSE to be sent out to the video stream source, so result will depend on whether source obeys.)
> stop playback:
?command=pl_stop NB: seems not to clear the playlist. If in doubt clear the playlist and reload to start.
> jump to next item:
?command=pl_next
> jump to previous item:
?command=pl_previous
> delete item <id> from playlist:
?command=pl_delete&id=<id>
> empty playlist:
?command=pl_empty
> sort playlist using sort mode <val> and order <id>:
?command=pl_sort&id=<id>&val=<val> If id=0 then items will be sorted in normal order, if id=1 they will be sorted in reverse order A non exhaustive list of sort modes: 0 Id 1 Name 3 Author 5 Random 7 Track number
> toggle random playback:
?command=pl_random
> toggle loop:
?command=pl_loop
> toggle repeat:
?command=pl_repeat
> toggle enable service discovery module <val>:
?command=pl_sd&val=<val> Typical values are: sap shoutcast podcast hal
> toggle fullscreen:
?command=fullscreen
> set volume level to <val> (can be absolute integer, percent or +/- relative value):
?command=volume&val=<val> Allowed values are of the form: +<int>, -<int>, <int> or <int>%
> seek to <val>:
?command=seek&val=<val> Allowed values are of the form: [+ or -][<int><H or h>:][<int><M or m or '>:][<int><nothing or S or s or ">] or [+ or -]<int>% (value between [ ] are optional, value between < > are mandatory) examples: 1000 -> seek to the 1000th second +1H:2M -> seek 1 hour and 2 minutes forward -10% -> seek 10% back
playlist.xml:
< get the full playlist tree
browse.xml:
< ?dir=<dir>
> get <dir>'s filelist
vlm.xml:
< get the full list of VLM elements
vlm_cmd.xml:
< execute VLM command <cmd>
?command=<cmd>
> get the error message from <cmd>
Ncurses
This is a text interface, using ncurses library.
Start VLC with -I ncurses or --extraintf ncurses. You will then get something like that:
The ncurses interface
Press h to get the list of all available commands, with a short description.
There is also a filebrowser available for the ncurses interface in order to add playlist items. Press 'B' to use it.
The ncurses filebrowser
You can set the filebrowser starting point by launching vlc with the --browse-dir option:
% vlc -I ncurses --browse-dir /filebrowser/starting/point/
Other control interfaces
VLC includes a number of so-called interfaces that are not really interfaces, but means of controlling VLC. Nevertheless, they are enabled by setting them as interface or extra interface, either in the Preferences, in General/Interface, or using -I or --extraintf on the command line.
Hotkeys
This module allows you to control VLC and playback via hotkeys. It is always enabled by default. You can use hotkeys in the video output window, you can't in the audio dummy interface.
Hotkeys can be hacked by:
% vlc --key-<function> <code>
Code is composed by modifiers keys (Alt, Shift, Ctrl, Meta,Command) separated by a dash (-) and terminated by a key (a...z, +, =, -, ',', +, <, >, `, /, ;, ', \, [, ], *, Left, Right, Up, Down, Space, Enter, F1...F12, Home, End, Menu, Esc, Page Up, Page Down, Tab, Backspace, Mouse Wheel Up and Mouse Wheel Down). Main controls are available from hotkeys, such as : fullscreen, play-pause, faster, slower, next, prev, stop, quit, vol-up, etc. (use the --longhelp option for full list of functions). For example, for binding fullscreen to Ctrl-f, run:
% vlc --key-fullscreen 'Ctrl-f'
The list of the default hotkeys is available here.
RC and RTCI
These two interfaces allow you to control VLC from a command shell (possibly using a remote connexion or a Unix socket).
Start VLC with -I rc or --extraintf rc. When you get the Remote control interface initialized, `h' for help message, press h and Enter to get help about available commands.
To be able to remote connect to your VLC using a TCP socket (telnet-like connexion), use --rc-host your_host:port. Then, by connecting (using telnet or netcat) to the host on the given port, you will get the command shell.
To use a UNIX socket (local socket, this does not work for Windows), use --rc-unix /path/to/socket. Commands can then be passed using this UNIX socket.
The RTCI interface gives you more advanced options, such as marquee control for the marquee subpicture filter (See filter section).
Gestures
Gestures provide a simple mouse gestures control. TODO
Please read the Documentation Editing Guidelines before you edit the documentation