User Tools

Site Tools


stream_pc

This is an old revision of the document!


====== How to Stream Your Windows PC Desktop ======

This process allows any video playable on your desktop, preferably in fullscreen, to be streamed and displayed on your TV. The only Serviio change is to add the video stream from your PC to the Serviio console as a video livestream at your PC address eg: http://192.168.1.10:8081 . All the rest involves the setup of your PC to create the stream using VLC, again making changes in the following to using the same static address for your PC. eg: http://192.168.1.10:8081 .

While the ability to stream your desktop to your TV can give you a remote monitor capability, the real value is to be able to display the output of any application on your TV, in particular the fullscreen output from any video playback application including flash videos.

This means that you can now browse and display all those videos on news sites, tv network shows, movie sites, social sites or music sites etc, that are not available as rss feeds, or unencripted rtmp live streams. You can now also access and display the text info that usually accompanys many of those videos, or the subtitles that overlay videos such as hulu, or the music title/artist/album information which are not available directly to Servio online streams.

To stream your desktop you need to install VLC to do the streaming, a directshow video input filter to capture the desktop area, and a directshow audio input filter to capture the sound output from the application.

This process has been tested and works correctly with VLC 1.1.10. It may break with other versions or nightlys so be warned. Since VLC is registry independent, you can maintain a VLC 1.1.10 version for desktop streaming, while installing updated versions for normal purposes. This Wiki entry does not address the installation of VLC.

For the video input filter, I used screen-capture-recorder (SCR)because its free, it works, is configurable and is under active maintenance (download from http://sourceforge.net/projects/screencapturer/files/). Read the README for instructions on how it works and how to use the “Screen Capturer Recorder\configuration_setup_utilities” to set it up for your system. (Note that the author has confirmed the need to install “Microsoft Visual C++” first and that you need the Java JRE installed to run some of the utilities. See http://forum.serviio.org/viewtopic.php?f=4&t=4660&start=10.)

By default, it is supposed to capture the whole screen. For some reason however on initial install I got a lot of static. If this happens to you, run the “configuration_setup_utility\edit_config.bat” and set the height and width to your screen's maximum dimensions, or edit the registry keys as I did. You must however use the exact maximum dimensions recognized by your screen driver, In my case 1366 x 768 regardless of the resolution my screen was set to display which is 1280×720. (Right click your Desktop and click “Screen resolution” to see your current and maximum setable resolutions). Other users have reported the need to set the dimensions that their screen is set to display.

To get Serviio to play the video stream this process requires the inclusion of an audio track, even if you do not want to hear the audio of any video you are playing on the pc. It may be possible to stream the video only, however this process does not addres that option.

For the audio input filter, you should try the free virtual audio capture grabber device (VACGD) (download from https://github.com/rdp/virtual-audio-capture-grabber-device/downloads) however it did not work correctly for me on W7-64 and I had to use virtual-audio-cable(VAC) which while not free works flawlessly (available at http://software.muzychenko.net/eng/vac.htm). (Note that I am still working with the author of VACGD to correct my problems with VACGD..Others should try it because my problem may be with my sound card driver and not with VACGD)

To setup VAC for streaming, in the Sound Control panel for both Recording and Playback,(accessable by right clicking the Speaker icon in the System tray) right click the Vac “Line 1” and select “Set as Default Device”. This causes the audio from all applications to be connected to the input of the VAC cable and enables the VAC cable output to be available for VLC to stream the application audio. This also disconnects the PC mic and speakers while you are streaming. For VACGD no setup is required as it will stream the default sound card output at full volume even if the speaker volume is turned off or muted.

Once these filters are installed, open VLC, click “Media/Open Capture Device” and check under “Default” that it shows “screen-capture-recorder” and “Line 1 (Virtual Audio Cable)” or “virtual-audio-capturer” options as available video and audio device names. Other users have reported that VAC displays a different name (“Virtual Cable 1”). If so change the bat to reflect that, enclosing any name that includes blanks within quotes. Also if you use VACGD, replace :dshow-adev=“Line 1 (Virtual Audio Cable)” with :dshow-adev=virtual-audio-capturer

After editing the bat to point at your installed VLC.exe and any changes above, run the .bat file to start the stream. This is best done by creating a shortcut to the bat on your desktop, and simply click it each time you want to stream your desktop.

This bat will cause VLC to use the named filters to capture the video and audio output, transcode it to Mpeg2Video/MP3 audio with a 1280 x 720 resolution consistent with HDTVs and stream it to the network as a 10000 bps HTTP stream on port 8081. Be sure that only one instance of VLC.exe is running. Sometimes on termination the previous VLC.exe remains active and must be manually terminated, or a kill command added to the bat file.

You may also experiment with :dshow-caching=20000 to reduce latency and the transcoded video bit rate vb=10000 to overcome network capacity or transcoding load.

Note that the use of MPEG2 is essential to the success of this process. While h264 may be considered by some to be a better choice, it requires significantly more CPU cycles to encode than MPEG2, and more significantly that load increases in relation to the dynamics of the area being captured, whereas the MPEG2 load is flat regardless of the dynamics. This can lead to the belief that h264 is satisfactory based on the transcoding of a static desktop, however when a video is being played the h264 load soars while the MPEG2 load stays the same.

Note that your PC must be fast enough to read any incoming stream, render it using a player to the screen, capture the desktop screen, transcode it to an MPEG2 video stream and send it as an output stream, all in real-time, otherwise the TV will sense the real-time delay as the termination of the stream and issue some type of File Format Not Supported message. Reducing your PC screen resolution or the size of the capture window can help reduce the capture and transcoding load, however the resolution of the streamed picture on the TV will be correspondingly reduced, and only part of the desktop may be streamed. Since neither of these outcomes are consistent with the goals of this wiki to stream your full desktop at its full resolution, and somewhat impractical to use, these alternatives are not further explored. Based on user feedback, even dual core systems can have problems. In my case my 8 core I7 uses about 15% cpu but if reduced to 2 cores runs at about 90% cpu.

StreamDesktop.bat

@echo off

:This bat is used to stream the desktop with VLC using HTTP
:A corresponding player must be started using HTTP

"C:\Programs\VLC TEST 1.1.10\vlc.exe" -vvv dshow:// --sout=#transcode{venc=ffmpeg,vcodec=mp2v,vb=10000,fps=24,scale=0.5,width=1280,acodec=mp3,ab=192,channels=2,samplerate=44100}:std{access=http,mux=ts,dst=:8081} --no-sout-rtp-sap --no-sout-standard-sap --ttl=1 --sout-keep   :dshow-vdev=screen-capture-recorder :dshow-adev="Line 1 (Virtual Audio Cable)"  :dshow-caching=2000

:Exit

You can test it on your PC using mplayer. Here is my .bat for that, but you will want to get and install the latest mplayer.exe:

"D:\My Program Downloads\Base Install VPlayers\MPlayer-Mencoder\MPlayer-p3-svn-33216\mplayer.exe" http://@192.168.1.10:8081 -cache 50

Finally, to setup Serviio to play the stream, add your PC's static address to the Serviio Console/Online Sources/Live Stream/Video in the form http://192.168.1.10:8081 and name it “Desktop”. (Note that zip has advised that the stream must be running, as instructed above, when the link is added to the console, else Serviio will not accept the link or display it in the Online menu.) Then on the TV click on the “Desktop” icon and the stream should play.

Now, each time you want to stream your desktop, access your SoundCard control Panel by right clicking the speaker icon in the system tray and click “playback devices”, right click “Line 1” and click “Set as Default Device” then click the recording tab and again click right click “Line 1” and click “Set as Default Device”. The sound from your PC applications will now be streamed to Serviio. To revert the PC to normal speaker/microphone operation reverse the above and set the speakers and microphone as the default devices. None of this is necessary with VACGD but you will want to mute the PC sound.

Then run the StreamDesktop.bat from a shortcut on your desktop, and open the “Desktop” stream under “Video/Online Sources” in Serviio.

You may now start whatever PC application you want either directly on the PC or by using a remote mouse/keyboard to operate your PC remotely while viewing the TV screen. You will see a slight overscan on the TV. (in my case about half a line on the top and bottom of the desktop is missing but not enough to prevent me from clicking on the taskbar icons). If this is annoying simply drag the taskbar up to make it double high. Similarly for the top line function access “alt-space” will display the System menu for the active window where you can restore, move, resize, minimize, maximize, or close the window. There will also be a delay (3 to 5 seconds in my case) as the screen is captured, buffered and streamed, but it is irrelevant once your video playback starts and you switch to full screen.

Change Log

Please post your experiences with this setup in the “streaming desk top to tv” thread http://forum.serviio.org/viewtopic.php?f=4&t=4660&p=32269

- Jan 8, 2012 - Changed setup sequence. Noted stream must be started before adding link to Serviio. Added VACGD info. Added .bat tuning info.
- Jan 12, 2012 - Edited for more clarity per user feedback.
- Jan 14, 2012 - Edited to explain why transcoding needs to be to MPEG2
- Jan 21, 2012 - Removed soverlay parameter from command as redundant, and identify lack of low resolution/partial screen support.

stream_pc.1335547947.txt.gz · Last modified: 2012/04/27 18:32 by jhb50