TASageTV Application
From Tallus LLC Wiki
Contents |
About
Tallus Android SageTV allows you to monitor your SageTV Server, by browsing your Favorites, Scheduled recordings, etc. It also doubles up as a remote control, to navigate all your Client(s) and/or Extender(s), start/stop/pause playback, etc. All this through the comfort of your Android phone or tablet.
Trial / Purchase
TASageTV will install on the Android device fully functional. It comes with a limitation as far as the number (maximum of 10) of media files available per list. This should give you a good understanding of what its capabilities are before purchase.
Most current version is always here: Direct download for Android web connected devices
Purchase TASageTV Here and make sure to email your Android's ID (after you install the application on the Android device and go to the Registration window) for licensing.
Requirements
- Android device with the OS 1.5 or newer.
- Recent version of SageTV (6.6 or newer).
- SageTCPServer and GKusnick Studio Tools Installer.
- TASageTV Application Trial.
Installation
Since this application will not be available on The Market, at least initially, you might need to follow instructions like these: Installing a non-Market app
Alternatively, there seem to be a bunch of Android applications like AppsInstaller which makes it even easier... If you have Astro on your phone (which understands .zip extensions) you can point your phone browser to the wiki and download the newest version (Need to remove the old one first).
Glossary
SageTV Server: PC on which SageTV has been installed.
SageTV User Interface (UI): The native SageTV interface which allows you to navigate the menus, play a video, etc.
Service mode: Mode where the recording engine and other processes run independently of the UI.
SageTVService Control: Sage application to start / stop the SageTV server when the server is running as a windows service (service mode). When SageTV is installed on a Windows Home Server PC, one can start / stop the server from the WHS Console as well.
SageTV Client: This is the UI installed and run from a different PC then the SageTV Server. When using SageTV in service mode, the UI component (which does not need to be installed separately) is also considered to be a SageTV Client.
Extender: Self contained media players like the Hauppauge MVP, HD Extender HD100/200, etc. They are basically a SageTV Client on dedicated hardware, rather that a PC...
Placeshifter: Playback of audio/video through the device (not supported on TASageTV / Android phone).
How to setup SageTV for connection with TASageTV
1) Install SageTV latest server software and perform all the SageTV configurations. Optionally install your Extenders (including Sage's HD Extender) and note the Extender IDs (on bottom of unit - you will need this later to control your Extender's from TASageTV application or MainLobby clients)
2) Shutdown SageTV (if you are running in service mode, make sure to stop the SageTV Service). All changes made while SageTV is running will be lost once SageTV is restarted.
3) Run the SageTV_TCPServer_Setup.exe on the SageTV Server PC.
This installs GKusnick's Studio Tools (i.e. extract to SageTV\SageTV folder). Make sure you choose both the GKusnick Studio AND the SageTCPServer to be installed on initial installation. The SageTCPServer is updated more often than the GKusnick components. You can deselect the GKusnick Studio on subsequent SageTCPServer updates. Example path (default settings)
c:\Program Files\SageTV\SageTV\JARs\gkusnkick.sagetv.jar
and installs SageTCPServer (i.e. extract to SageTV\SageTV\JARs folder). Example path (default settings)
c:\Program Files\SageTV\SageTV\JARs\SageTCPServer.jar
You will have to restart SageTV application to start using the latest jar version.
4) In order for TASageTV application to receive from (or send to) the SageTV server, a communication port (TCP) will be used. This is done by adding the following lines to the sage.properties file (lower/upper case are important here):
load_at_startup_runnable_classes=sagetcpserver.StartServers sageTCPServer/clients=local.9250
9250 is the default port for the SageTV Server.
You also need to open up that port in your Firewall(s).
5) In order to monitor or control a SageTV client or extender, it is also necessary to use another port. For an Extender, you would append ",ExtenderMacID.port" to the previous line, where ExtenderMacID is the Physical Address of the device (i.e. look at the sticker underneath the HD Extender or from ipconfig /all or viewing logs from your network router, you can also look in the clients folder for a file like 00085a12b34c.properties. Use lower case.). So the line from sage.properties would then read:
sageTCPServer/clients=local.9250,00085a12b34c.9260
Warning: Make sure to use unique port numbers for the clients, the sage UI and each Extender. If you are using more than one application based on SageTCPServer, each will need its own set of unique ports.
The default port configuration is to start with 9260 for each Extender or SageClient PC. Increment the port number by one for each subsequent SageClient PC or Extender.
If you are running SageTV in service mode, and also running SageTV as a client on the same PC then you need to make similar entries in the sageclient.properties file:
load_at_startup_runnable_classes=sagetcpserver.StartServers sageTCPServer/clients=local.9261
If you are running a SageTV client on a different PC, in order to monitor/control it, you will need to add the 2 .jar files from step 3 and 4, as well as add similar lines to the sageclient.properties file on it:
load_at_startup_runnable_classes=sagetcpserver.StartServers sageTCPServer/clients=local.9262
6) (Optional): if you want to see information about 14 days of upcoming recordings.
scheduling_lookahead=1209600000
7) (Optional): Add the following lines for debugging:
debug_logging=TRUE sageTCPServer/debugOn=true
If things are working well, feel free to keep those to false. However, if you are asked for the sage log, then set this to true, restart sage to reproduce the problem, and send the logfile. The file will have the name "sagetv_0.txt" and it will be located in the SageTV folder.
8) (Optional) System messages
In order to enable System messages, add the following line:
msg/curr_alert_level=X
where X is a value from 0-3; with 0=No Alert, 1=Info Alert, 2=Warning Alert, 3=Error Alert.
9) (Optional) Streaming
In order to stream your video files, you will need to install VLC (version 1.0 seems to work best. 1.1 doesn't work at all.) on the same PC hosting your SageTV Server. Originally, two types of streaming are supported: HTTP and RTSP, though only one type can be configured/used at a time. If you want to use the default options, then you just need to an extra ",http.<Port>" or ",rtsp.<Port>" (recommended) to the steps described in section 4) and 5). It has been confirmed to work with the HTC phones, the Droid X and the Android OS 2.2, but other built-in media player tend to lack support for progressive streams (i.e. on the fly re-encoding).
To stream using rtsp://MachineIP:554/stream.sdp you would have:
sageTCPServer/clients=local.9250,01e04cd32eda.9260,rtsp.554
while to stream using http://MachineIP:554 you would have:
sageTCPServer/clients=local.9250,01e04cd32eda.9260,http.554
To tailor the parameters to your need, you can also redefine the following default Android parameters (i.e. don't put those lines in if the default values are fine):
sageTCPServer/streamingTranscodeOptions=vcodec=h264,venc=x264{no-cabac,level=12,
vbv-maxrate=384,vbv-bufsize=1000,keyint=75,ref=3,bframes=0},width=320,height=180,
acodec=mp4a,ab=64,vb=384
sageTCPServer/streamingRTSPType=mp4a-latm sageTCPServer/streamingVLCOptions=-I dummy --no-sub-autodetect-file sageTCPServer/streamingVLCPath=C:/Program Files/VideoLAN/VLC/vlc.exe
If you have the debugging enabled, you can see the exact string being executed to launch VLC.
When you have a video file selected, pressing the Stream option will bring up the About page, with an extra link to view the stream. It appears that HD-PVR recordings do not stream properly. Streaming DVD might also be an issue, unless they are ripped to a single MPEG2 file...
10) Launch SageTV. TASageTV application should now be able to connect with the SageTV server.
Navigation
- The hardware Menu button will bring up the "Options menu" from the Main screen and an appropriate one from the other pages. This is where you access the Client/Server settings, input the registration key, get to access a Remote control for the Client or monitor its Status. On the Media Center page you could synchronize the local database, or when looking at detailed information about a file, you might be able to start play back.
- The hardware Back button will bring you to the previous screen, or kill the application if pressed from the Main screen.
- The hardware Home button will bring you to your device's Home screen, while keeping the TASageTV application running in the background and receiving data.
- Not everything fits in a page, so you might need to flip/scroll down to see everything...
- The best experience is provided with the phone in the Portrait orientation, though it works just fine in landscape. On the About screen, you will notice an icon. Pressing it will toggle between locked (in the current orientation) and sensor.
Configuration
We need to connect to the SageTCPServer, which will act as a bridge to the SageTV Server and any possible Client or Extender. This is where the port numbers, that you defined in the sage.properties, are getting used.
SageTV Server
The various lists (i.e. Recorded shows, Scheduled recording, etc.) are obtained from the PC running the SageTV Server. Typing ipconfig at a command prompt is one way to obtain that machine's IP/Hostname (might need to include the domain name). The port would match one of the entries made in the sage.properties file (i.e. 9250 for local.9250). You can also Sync (wipe and refill) the taSageTV database from here.
The lists which can possibly update frequently (i.e. Recordings, Schedule and Favorites), will do so automatically. OTOH, for the lists of Photos/Music/Videos you will need to synchronize them manually (through the option Menu), either all together from the Media Center page or individually.
SageTV Client
Unless you have a SageTV Client running on a different PC (i.e. not a SageTV Extender), the Hostname should be the same as the Server's one and the port should match the sage.properties (or sageclient.properties for non-Extender) entry for it (i.e. 9261). The Name is mostly useful for people with more than one Client or Extender.
Pressing the Apply will save the configuration and attempt to connect to the server or client using your new parameters. Pressing the Add client will save the configuration and attempt to connect to the client using your new parameters.
The screenshot shows some small icons (top-right corner), which makes it possible to see at a glance that the Server is connected (checked), but that the Client failed ("!") to connect. Keep in mind that this is a connection to SageTCPServer, so you could get a false-positive if your Extender is crashed or un-plugged...
The Main screen also provides a quick access to the Server's configuration, by tapping the "SageTV Server" at the bottom. If the Client is not connected, tapping the "!" will bring the Client's configuration, while tapping the connected sign will bring the Remote control for it. You can also switch between your Clients by tapping the current one (i.e. Client 2) and selecting another one.
Streaming Configurations
Streaming should be considered Beta, but some software combinations have proven successful. Here is a Table of combinations that have worked:
| Status | Device | Android OS | SageTV | TASageTV | TCPServer | VLC | Port | Android Player | Format(s) | Notes |
|---|---|---|---|---|---|---|---|---|---|---|
| Streams | Droid | 2.1 | 7.0 | 1.09 | 1.6.0 | 1.0 | 554 | Movies | mpg | Sound delayed ~250ms |
| Streams | Placeholder | 2.1 | 7.0 | 1.09 | 1.6.0 | 1.0 | 554 | Movies | mpg | Sound delayed ~250ms |
| Total Phones | 2 | |||||||||
Control
If a Client has been configured (i.e. Extender, SageTV Client or SageTV Server's UI), it is possible to control it with the equivalent of a Remote control. From most pages, you can access it by pressing the hardware Menu button, then tapping Remote. In addition, on the main page you can press the "checked sign" next to the client's selection (only works if you are actually connected, otherwise it will bring you to the Client settings page).
The various keys should match the functionality of the IR remote control included with the SageTV HD Theater (i.e. HD200), though they have not all been enabled yet. In the case of the HD200, the Power button should be able to take it out/into Standby mode, though sometimes it does totally lose network access and will require the actual IR remote control to power it back on.
Acknowledgments
- Thanks to Eric and Tash for preliminary testing on a real device!
- Thanks to Bob, Fuzzy and SageTV for the graphics.
- Thanks for the feedback and suggestions.
Known issues
- If you are not running the default UI, some features might not work properly (i.e. playing a video).
- Letting the device go in standby with the app still running, might put the listening thread in a bad state.
- Some weird issue about not liking having the database opened while using it to display the listview items or getting detailed information about a selected item..
- 1080i HD-PVR recordings only seem to stream audio...
Feature requests
Those things might never get implemented, but...
- Improve the Photos support.
- Include thumbnails.
- Include channel logos.
- Include a media player that can stream the videos.
- Make SageTCPServer available through the SageTV 7 plugin.
- Make the application available through The Market.
- Make the Remote control configurable.
- Password protect the SageTCPServer access.
- Provide more notifications.
Release notes
Version 1.21
- It is now possible to delete a client or server.
Version 1.20
- Fix: going back to the main page would not properly display the spinner(s) selection.
- Added support for BMT's non-conform EPGID.
Version 1.10 to 1.19
- Fix: failure to connect would prevent the drop down list from showing.
- Fix: the TV Guide was broken.
- Fix: all the system messages were sent/appended on start up.
- Helped the memory management with some "final"...
- Replaced the drop down lists when not needed.
- Fix: the Reset System Messages was not actually implemented.
- Fix: the Main screen was not always refreshed when it should have been.
- Fix: the SQL query for the last message was wrong.
- The Power button on the remote should now work with HD100/HD200/MVP.
- Only query for the latest System messages.
- More fixes and improvements to the System Message support.
- Fix and improvement to the System Message support.
- Fix: Connection icon could get out of sync.
- Started to look at System messages...
- Fix: locking icon was wrong.
- Streaming now skips the About page.
- Added the possibility of locking the screen orientation.
Version 1.00 to 1.09
- Fix: The Mute button did not work.
- Improved the database access.
- Fix: returning to a filtered list would crash.
- While browsing a list, starting to type text will filter items containing that text in the Title...
- Completely stripped the " from the metadata.
- Fix: Filters containing & did not work properly.
- Fix: Manual recordings were not merged with the Favorites.
- Fix: The songs' count was not reset on resync.
- The PlayList section is now working.
- Can now browse the Songs by themselves.
- Can now consult any lists unfiltered.
- Added a Search option.
- Moved the Favorites/Recorded shows/Schedule/Search to their own section.
- Updated the default VLC init string. (sageTCPServer)
- Fix: Channels were not handled uniformly.
- Fix: added more missing properties.
- Fix: one too many ( in the Videos table creation...
Version .90 to 0.99
- Fix: added more missing properties.
- Changed the Stream link to "all" from "web"...
- Fix: Some properties were missing from the database.
- Fix: TV guide had issues following a device rotation.
- The streaming option now takes you to the About page, with a link to the stream.
- The TV Guide has now migrated to the more memory efficient method.
- Fix: filtering by folder was partially broken.
- Completed the migration of the Music section to the new scheme.
- Fix: was not escaping \ to \\ (sageTCPServer).
- Improved the query for the rows count in the database.
- Changed the default sort options.
- Replaced more problematic filtering characters by _.
- Fix: the memory leaks related to the database should be fixed...
- List of less than 100 items (up from 50) can be viewed unfiltered (*) .
- Non alphabetical titles are no longer bunched up under the # filter...
- Fix: Big Upcoming recordings list could fill the 8k buffer.
- Fix: Genre was not defined in the Songs table.
- Fix: Some characters like " or % would mess up the filtering. (most likely others still can...)
- Fix: crashed on empty list.
- Added a "Do you really want to quit?" prompt.
Version 0.80 to 0.89
- The Music section now mostly uses the improved code.
- The list of Photos, Recordings and Videos can now be filtered by folder.
- The list of Recordings, Schedule and Videos can now be filtered by actor.
- The list of Favorites, Photos, Recordings, Schedule and Videos have gained sorting/filtering.
- Fix: the database file did not have an extension (will require a sync).
- Changed the database structure.
- Reduced the memory usage by getting rid of some buffers.
- Some of the ListView's now use a customized SimpleCursorAdapter.
- Exposed more of the available information.
- Moved the client notification to ongoing.
- Fix: the Remote stopped working on orientation changes.
- Pressing Del, Enter or Space on the real keyboard should work properly.
- Fix: there were various Playlist issues with an offline extender.
- Should now remember the previous position in a list.
Version 0.70 - 0.79
- Key pressed on the real keyboard should be passed along to the client.
- Added the possibility of clearing the current Playlist.
- Completed the Music Playlist.
- The Channel Up/Down buttons now match the real remote's behaviors.
- Started to implement the "Play list". (not working yet)
- Fix: the Server settings layout looked a bit messy...
- Replaced the notification icon by a more compliant one.
- Fix: Client's selection was not always saved between sessions.
- Reduced the size of the notification icon.
- Can now define multiple servers (i.e. local vs remote access).
- Added a password field (for future use).
- The albums can also be sorted by their Title.
- If a sub-list of Albums contains less than 50 items, it can be seen unfiltered.
- Moved the "Synchronize" of Media Center to the options menu.
- Started to play with the notifications...
- Fix: losing connection and reconnection were not properly handled.
- Fix: when sorted by Artist or Year, the Genre fields displayed the selection too...
Version 0.60 to 0.69
- The albums can now be sorted by Artist, Genre or Year.
- Fix: the Media center part would only sync once per SageTV Server restart...
- Reduced the size of the Photos/Videos packets.
- Don't count the number of items in a table when incrementing a counter will do...
- For a full database, the maximum available data is redundant...
- Improved the database synchronization.
- Fix: the dates of the Videos were not re-read properly.
- No longer adds "#" as filter for all the lists when not needed.
- Added more options to the lists' menu.
- Fix: the list of Clients was acting funny.
- Fix: removed some forced Client reconnection.
- Fix: was not releasing some "intent receivers".
- The hardware volume buttons should work from more than just the Remote...
- Fix: don't select a client that does not exist.... (duh!)
- More toying with the streaming, try the rtsp one...
- Added a download link to About. (might require Astro/AppInstaller)
- Fix: streaming used the wrong URL. (probably still won't work)
Version 0.50 to 0.59
- Added more options to some menus.
- Added more options to some menus.
- Removed the possibility to delete other files than Recordings.
- Changed the licensing to use the Android_ID instead of the phone number.
- Fix: detailed information was not scaling with the resolution.
- Licensed version now have a limit of 1000 items, to prevent running out of memory.
- Removed some debug text to speed up synchronizations.
- Started to move the licensing to use the Android_ID instead of the phone number.
- First step before making the options menu more readily available.
- Fix: the Client list on the main screen was not getting filled on orientation changes.
- Fix: adding a client was broken.
- Fix: the Client displayed on the main screen could be off.
- Fix: switching between Clients should be cleaner.
- Fix: the Play option got broken in version .52.
- Fix: the number of duplicate Client's choice grew exponentially.
- It is now possible to switch between clients from the main screen.
- Reordered the items on the main screen.
- The Play and Stream buttons have been moved to Menu options.
- Added a Delete option for the Recordings and Video files.
- Added a Menu to Record all/first run/once/re-run for the selected show from the TV guide.
- Added a combined lineups item to the TV Guide.
- Compacted the display of some lists.
- The text should scale better with the resolution.
- The streaming test and video playback is now available for the Recorded shows.
Version 0.40 to 0.49
- On the Main menu, clicking the server text will bring the Server config.
- On the Main menu, clicking the client text will bring the Remote or Client config.
- On the Main menu, clicking the client text will bring the Remote control.
- Added a Power button to the remote control, hardcoded to get the HD200 in/out of standby.
- Possible fix for some orientation issues.
- First attempt at getting some streaming going.
- Added landscape versions of the Remote control page.
- Fix: saving the client configuration could fail.
- Fix: the lineups got broken in .41.
- Decreased the log verbosity.
- Added Server/Client status on the Main page.
- Added landscape versions of the Main, TV guide and Album details pages.
- Channels are only loaded on demand from the database.
- Can select how many days of data to display.
- Fixed some issues changing the server.
- Photos/Videos are only loaded on demand from the database.
- Moved more content to the services.
Version 0.30 - 0.39
- Started to further limit the lists by the first letter of the item's title (A-Z, # for others).
- Updates the services.
- Reduced the memory foot-print by filter the Albums by genre.
- Implemented the licensing.
- Added a recording menu to the Program details.
- Fix: Album list was not getting updated properly.
- Fix: Duration was off for the videos.
- Fix: Icons in the lists were set as background instead or source...
- Fix: Reruns flag was not properly handled.
- Added the TV Guide.
- Little face-lift for the "Detailed information".
- Started to work on customized listview items...
- Added support for multiple Client/Extender.
- Added the missing volume/channel buttons.
- Added web and email links.
- Fix: the Play button got broken when Filenames were removed.
- Improved the database support.
- Albums and Songs are now stored in the database.
Version 0.20 to 0.29
- Made the database access more generic through the use of an enumeration.
- Added more metadata to the detailed info/database.
- Fix: the default ListView optimization caused issues with the background...
- Fix: Communication parameters would not always stick...
- The metadata for the Photos are now stored in a local database.
- The metadata for the Videos are now stored in a local database.
- Enabled more buttons on the remote.
- From the remote screen, the hardware volume buttons should work.
- Fix: the selected list could be redrawn if another list received data.
- The list and status actually updates with incoming data.
- Added the possibility to start playback of audio/video files from the Detailed info screen.
- Enforced an evaluation mode.
- Added a Media center category for Music/Photos/Videos.
- Added a Live TV button.
- Activated more of the Remote's buttons.
- Fix: the application can now shutdown properly.
- Fix: status no longer crashes if nothing is playing.
Version 0.10 - 0.19
- Tapping and item from a list will now display detailed information.
- Added an options menu to the Remote control.
- Implemented a limited Status.
- Changed the TCP communication from background threads to Services.
- Changed some tabs to Activity AlertDialog and setContentView.
- Got rid of all the tabs and started to modify the logic for it.
- Replaced and added more buttons to the "remote control", thanks to Bob.
- Added an option menu.
- Moved the "About" button to the Settings tab.
- Now compiled for Android 1.5 and up...
- Added filtering to the lists (seems buggy).
- Updated the TCP connection handling.
- Fix: now the parameters are saved before attempting to connect.
- Removed the orientation lock.
- First beta release
Version 0.01 - 0.09
- Added listview.
- Added TCP support.
- Added navigation.
- Added preferences.
- Initial user interface
- Proof of concept
Setting up VLC Remote
This is an optional step, should you want more controls over VLC, by using the android VLC Remote application.
Set up VLC for the VLC Remote - Windows
A) Enable the HTTP Interface
1.Open the VLC settings
◦VLC Menu/Tools/Preferences
2.Enable 'All Settings' (by default VLC only shows the most used settings)
◦Click on the 'All' button at the bottom left of the screen
3.Enable the interface
◦Select the 'Interface', then 'Main Interfaces', then select the 'HTTP Remote Control Interface' checkbox
◦NB - You have to actually click where it says 'Main Interfaces' on the left hand window, rather than expanding the list and clicking on a sub-option.
4.Save the Preferences
5.Exit VLC then restart it
B) Give your phone permission to access VLC
Once you have enabled the http interface, press re-scan on your phone remote.
If you see a traffic cone beside the computer you are trying to control, then you can skip this step.
If you are using a recent version of VLC then you will see a cone with a red X through it. This means you need to give your phone permission to access VLC.
VLC in the latest versions uses a file called '.hosts' to define which computers can access the VLC remote player. You need to open this file and edit it:
1.Open Word Pad (Not Notepad) ◦Start/All Programs/Accessories/Word Pad 2.Open the .hosts file ◦Click 'Open File' ◦Make sure that 'Files of Type' at the bottom shows 'All Documents *.*' ◦Navigate and select C:\Program Files\VideoLAN\VLC\http\.hosts 3.Make the changes suggested below and save the file. 4.Quit and restart VLC and all should work.
- Access-list for VLC HTTP interface
- $Id$
- localhost
- 1
127.0.0.1
- link-local addresses
- fe80::/64
- private addresses
- fc00::/7
- fec0::/10
- 10.0.0.0/8
- 172.16.0.0/12
- 192.168.0.0/16
- 169.254.0.0/16
- The world (uncommenting these 2 lines is not quite safe)
- /0
- 0.0.0.0/0
if you want to access VLC from your local network, then you will need to remove the # signs in the 'private addresses' area so that it looks like this
- Access-list for VLC HTTP interface
- $Id$
- localhost
- 1
127.0.0.1
- link-local addresses
- fe80::/64
- private addresses
fc00::/7 fec0::/10 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 169.254.0.0/16
- The world (uncommenting these 2 lines is not quite safe)
- /0
- 0.0.0.0/0
if you want to access VLC from the entire world, then remove the # in the 'The World' section. As VLC says, this is 'not quite safe' as you allow the whole world to control your VLC player.
- Access-list for VLC HTTP interface
- $Id$
- localhost
- 1
127.0.0.1
- link-local addresses
- fe80::/64
- private addresses
fc00::/7 fec0::/10 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 169.254.0.0/16
- The world (uncommenting these 2 lines is not quite safe)
- /0
0.0.0.0/0
C) Let VLC through your firewall
When you launch VLC, Windows may ask you whether to block or unblock VLC. If you see this option, then you should choose 'unblock'. This allows VLC to communicate to your phone (and vice versa).
If you don't see this alert and VLC remote isn't automatically finding your VLC player when you press 're-scan' then you will need to manually allow VLC through the firewall
1.Open the Control Panel (start/Control Panel) 2.Launch the 'Windows Firewall' 3.Click on the 'Exceptions' tab 4.Make sure that there is a checkmark next to VLC
D) Update status.xml
VLC's status.xml file needs to be updated in order to enable DVD controls, subtitle control and other advanced controls.
The current file is saved in
C:\Program Files\VideoLAN\VLC\http\requests\status.xml
Replace that file with this one (right click on the link and 'save content as...')
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<vlc id="if" param1="0"/>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
< status.xml: VLC media player web interface
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
< Copyright (C) 2005-2006 the VideoLAN team
< $Id$
<
< Authors: Antoine Cellerier <dionoea -at- videolan -dot- org>
<
< This program is free software; you can redistribute it and/or modify
< it under the terms of the GNU General Public License as published by
< the Free Software Foundation; either version 2 of the License, or
< (at your option) any later version.
<
< This program is distributed in the hope that it will be useful,
< but WITHOUT ANY WARRANTY; without even the implied warranty of
< MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
< GNU General Public License for more details.
<
< You should have received a copy of the GNU General Public License
< along with this program; if not, write to the Free Software
< Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<vlc id="end"/>
<vlc id="if" param1="url_param 1 =" />
<vlc id="rpn" param1="input 'input' url_extract store" />
<vlc id="rpn" param1="command 'command' url_extract store" />
<vlc id="rpn" param1="id 'id' url_extract store" />
<vlc id="rpn" param1="val 'val' url_extract store" />
<!-- input commands -->
<vlc id="if" param1="command value 'in_play' strcmp 0 =" />
<vlc id="rpn" param1="input value dup stripslashes playlist_add vlc_play" />
<vlc id="end" />
<vlc id="if" param1="command value 'in_enqueue' strcmp 0 =" />
<vlc id="rpn" param1="input value dup stripslashes playlist_add" />
<vlc id="end" />
<!-- playlist commands -->
<vlc id="if" param1="command value 'pl_play' strcmp 0 =" />
<vlc id="rpn" param1="id value vlc_play" />
<vlc id="end" />
<vlc id="if" param1="command value 'pl_pause' strcmp 0 =" />
<vlc id="if" param1="stream_state value 'stop' strcmp 0 = id value 0 = ! &" />
<vlc id="rpn" param1="id value vlc_play"/>
<vlc id="else" />
<vlc id="rpn" param1="vlc_pause" />
<vlc id="end" />
<vlc id="end" />
<vlc id="if" param1="command value 'pl_stop' strcmp 0 =" />
<vlc id="rpn" param1="vlc_stop" />
<vlc id="end" />
<vlc id="if" param1="command value 'pl_next' strcmp 0 =" />
<vlc id="rpn" param1="vlc_next" />
<vlc id="end" />
<vlc id="if" param1="command value 'pl_previous' strcmp 0 =" />
<!-- FIXME -->
<vlc id="rpn" param1="vlc_previous" />
<vlc id="rpn" param1="vlc_previous" />
<vlc id="end" />
<vlc id="if" param1="command value 'pl_delete' strcmp 0 =" />
<vlc id="rpn" param1="id value playlist_delete" />
<vlc id="end" />
<vlc id="if" param1="command value 'pl_empty' strcmp 0 =" />
<vlc id="rpn" param1="playlist_empty" />
<vlc id="end" />
<vlc id="if" param1="command value 'pl_sort' strcmp 0 =" />
<vlc id="rpn" param1="val value id value playlist_sort" />
<vlc id="end" />
<vlc id="if" param1="command value 'pl_random' strcmp 0 =" />
<vlc id="rpn" param1="'random' 'VLC_OBJECT_PLAYLIST' vlc_var_get 1 + 2 % 'random' 'VLC_OBJECT_PLAYLIST' vlc_var_set" />
<vlc id="end" />
<vlc id="if" param1="command value 'pl_loop' strcmp 0 =" />
<vlc id="rpn" param1="'loop' 'VLC_OBJECT_PLAYLIST' vlc_var_get 1 + 2 % 'loop' 'VLC_OBJECT_PLAYLIST' vlc_var_set" />
<vlc id="end" />
<vlc id="if" param1="command value 'pl_repeat' strcmp 0 =" />
<vlc id="rpn" param1="'repeat' 'VLC_OBJECT_PLAYLIST' vlc_var_get 1 + 2 % 'repeat' 'VLC_OBJECT_PLAYLIST' vlc_var_set" />
<vlc id="end" />
<vlc id="if" param1="command value 'pl_sd' strcmp 0 =" />
<vlc id="if" param1="val value services_discovery_is_loaded" />
<vlc id="rpn" param1="val value services_discovery_remove" />
<vlc id="else" />
<vlc id="rpn" param1="val value services_discovery_add" />
<vlc id="end" />
<vlc id="end" />
<!-- misc commands -->
<vlc id="if" param1="command value 'fullscreen' strcmp 0 =" />
<vlc id="if" param1="'VLC_OBJECT_VOUT' vlc_object_exists" />
<vlc id="rpn" param1="'fullscreen' 'VLC_OBJECT_VOUT' vlc_var_get ! 'fullscreen' 'VLC_OBJECT_VOUT' vlc_var_set" />
<vlc id="end" />
<vlc id="end" />
<vlc id="if" param1="command value 'snapshot' strcmp 0 =" />
<vlc id="rpn" param1="snapshot" />
<vlc id="end" />
<vlc id="if" param1="command value 'volume' strcmp 0 =" />
<vlc id="rpn" param1="val value vlc_volume_set" />
<vlc id="end"/>
<vlc id="if" param1="command value 'seek' strcmp 0 =" />
<vlc id="rpn" param1="val value vlc_seek" />
<vlc id="end"/>
<vlc id="if" param1="command value 'key' strcmp 0 =" />
<vlc id="rpn" param1="'key-' val value strcat vlc_config_get key-pressed 'VLC_OBJECT_LIBVLC' vlc_var_set" />
<vlc id="end"/>
<vlc id="end" />
<root>
<volume><vlc id="value" param1="volume" /></volume>
<length><vlc id="value" param1="stream_length" /></length>
<time><vlc id="value" param1="stream_time" /></time>
<state><vlc id="value" param1="stream_state" /></state>
<position><vlc id="value" param1="stream_position" /></position>
<fullscreen><vlc id="if" param1="'VLC_OBJECT_VOUT' vlc_obj_exists" /><vlc id="value" param1="'fullscreen' 'VLC_OBJECT_VOUT' vlc_var_get" /><vlc id="end" /></fullscreen>
<random><vlc id="value" param1="'random' 'VLC_OBJECT_PLAYLIST' vlc_var_get" /></random>
<loop><vlc id="value" param1="'loop' 'VLC_OBJECT_PLAYLIST' vlc_var_get" /></loop>
<repeat><vlc id="value" param1="'repeat' 'VLC_OBJECT_PLAYLIST' vlc_var_get" /></repeat>
<information>
<vlc id="foreach" param1="inf" param2="information" />
<category name="<vlc id="value" param1="inf.name value xml_encode" />">
<vlc id="foreach" param1="subinf" param2="inf.info" />
<info name="<vlc id="value" param1="subinf.name value xml_encode" />"><vlc id="value" param1="subinf.value value xml_encode" /></info>
<vlc id="end" />
</category>
<vlc id="end" />
<meta-information>
<title><![CDATA[<vlc id="value" param1="'TITLE' vlc_get_meta xml_encode" />]]></title>
<artist><![CDATA[<vlc id="value" param1="'ARTIST' vlc_get_meta xml_encode" />]]></artist>
<genre><![CDATA[<vlc id="value" param1="'GENRE' vlc_get_meta xml_encode" />]]></genre>
<copyright><![CDATA[<vlc id="value" param1="'COPYRIGHT' vlc_get_meta xml_encode" />]]></copyright>
<album><![CDATA[<vlc id="value" param1="'ALBUM' vlc_get_meta xml_encode" />]]></album>
<track><![CDATA[<vlc id="value" param1="'TRACK_NUMBER' vlc_get_meta xml_encode" />]]></track>
<description><![CDATA[<vlc id="value" param1="'DESCRIPTION' vlc_get_meta xml_encode" />]]></description>
<rating><![CDATA[<vlc id="value" param1="'RATING' vlc_get_meta xml_encode" />]]></rating>
<date><![CDATA[<vlc id="value" param1="'DATE' vlc_get_meta xml_encode" />]]></date>
<url><![CDATA[<vlc id="value" param1="'URL' vlc_get_meta xml_encode" />]]></url>
<language><![CDATA[<vlc id="value" param1="'LANGUAGE' vlc_get_meta xml_encode" />]]></language>
<now_playing><![CDATA[<vlc id="value" param1="'NOW_PLAYING' vlc_get_meta xml_encode" />]]></now_playing>
<publisher><![CDATA[<vlc id="value" param1="'PUBLISHER' vlc_get_meta xml_encode" />]]></publisher>
<encoded_by><![CDATA[<vlc id="value" param1="'ENCODED_BY' vlc_get_meta xml_encode" />]]></encoded_by>
<art_url><![CDATA[<vlc id="value" param1="'ART_URL' vlc_get_meta xml_encode" />]]></art_url>
<track_id><![CDATA[<vlc id="value" param1="'TRACK_ID' vlc_get_meta xml_encode" />]]></track_id>
</meta-information>
</information>
<stats>
<readbytes><vlc id="value" param1="read_bytes" /></readbytes>
<inputbitrate><vlc id="value" param1="input_bitrate" /></inputbitrate>
<demuxreadbytes><vlc id="value" param1="demux_read_bytes" /></demuxreadbytes>
<demuxbitrate><vlc id="value" param1="demux_bitrate" /></demuxbitrate>
<decodedvideo><vlc id="value" param1="decoded_video" /></decodedvideo>
<displayedpictures><vlc id="value" param1="displayed_pictures" /></displayedpictures>
<lostpictures><vlc id="value" param1="lost_pictures" /></lostpictures>
<decodedaudio><vlc id="value" param1="decoded_audio" /></decodedaudio>
<playedabuffers><vlc id="value" param1="played_abuffers" /></playedabuffers>
<lostabuffers><vlc id="value" param1="lost_abuffers" /></lostabuffers>
<sentpackets><vlc id="value" param1="sent_packets" /></sentpackets>
<sentbytes><vlc id="value" param1="sent_bytes" /></sentbytes>
<sendbitrate><vlc id="value" param1="send_bitrate" /></sendbitrate>
</stats>
</root>
E) That's it! By now, you should be able to see your computer in the VLC Remotes page under 'Found Computers'. If VLC is running on your computer, then you should see a Traffic cone next to the computer entry.
You can then select that computer and control it remotely.
Troubleshooting... If you can't connect, try the troubleshooting page.



















