My desktop PC has a TBS6983 satellite tuner card installed.
I'm using TSReader to control and tune the card.
TSReader uses VLC to play a selected channel over HTTP via the loopback adapter address (127.0.0.1:1234).
I was trying to figure out how to stream the satellite channel to VLC running on other computers on the LAN - specifically my laptop in this example.
My ultimate goal is to make the stream DLNA compatible (using serviio maybe?) and send it directly to the TV, but I'm not there yet.
These are very basic functions, but it took a lot more time and effort than I expected to get it to work because I wasn't fluent in VLC command line and much of the documentation online is either outdated, incomplete, or confusing. So this might be very basic to some of you, but it might save other people some time. I did search this forum (and the web) for specific instructions first, but didn't find anything recent or exactly what I was looking for.
TSReader has a very neat feature on the Playback/VLC menu, that you can define up to 16 configurations (different sets of command line parameters) to pass to VLC; just click on "Settings" at the bottom of the menu. The first configuration, "Play", is already defined, like this:
Description: PlayCommand: <IP> It simply passes the loopback address and port 1234 to VLC (127.0.0.1:1234), which conveniently is the address that TSReader is streaming to, and VLC launches and plays it. The "<IP>" at the start of each command must be there, and it's literally just the letters IP - don't substitute an actual IP address. I believe it gets parsed as the loopback address.
Here are the Configurations that I added. Note that 192.168.1.27 is my desktop's IP address (host) and 192.168.1.22 is my laptop's IP address (client). You of course have to change those to your corresponding addresses.
I set up the 2nd configuration to stream using HTTP like this:
Description: HTTP StreamCommand: <IP> --qt-start-minimized --sout "#standard{access=http,mux=ts,url=192.168.1.27:8080}"Note that VLC will start minimized in the system tray, and it will not play the stream locally on the desktop/host - it will be blank (which is why I have it start minimized to the system tray). This is to cut down on the CPU load on the desktop PC for high bit rate channels or feeds. (Note that there is a quirk whereby TSReader doesn't seem to properly shut down VLC if it's running minimized to the system tray.)
If you don't want that, simply leave out the first part:
Command: <IP> --sout "#standard{access=http,mux=ts,url=192.168.1.27:8080}"
However, again VLC on the desktop will be streaming only, and not also playing the channel, which is why my 3rd configuration is:
Description: Play and HTTP StreamCommand: <IP> --sout "#duplicate{dst=display,dst=standard{access=http,mux=ts,url=192.168.1.27:8080}}"
this launches and plays the channel on the desktop and also streams it over HTTP, using just one instance of VLC running on the desktop.
To play the stream on my laptop, I open VLC and from the Media menu choose "Open Network Stream" and enter the IP address and port of the desktop (host) VLC server like this:
http://192.168.1.27:8080(You can change the 8080 to any available HTTP port on the desktop/host.)
OK, those both work great, but HTTP isn't ideal for our purposes because it uses TCP and thus has "guaranteed packet delivery", which is great when you are transferring a file, but for streaming video you're better off if it just drops packets if it encounters network congestion or other connectivity issues. A much better choice is the RTP protocol, which uses UDP, isn't afraid to drop a few packets, and has lower overhead. (Both RTP and HTTP support the "transport stream" output of TSReader without needing to transcode anything.)
Here are the RTP configurations:
Description: RTP StreamCommand: <IP> --qt-start-minimized --sout=#rtp{mux=ts,dst=192.168.1.22}Description: Play and RTP StreamCommand: <IP> --sout "#duplicate{dst=display,dst=rtp{mux=ts,dst=192.168.1.22}}"To play the stream on my laptop, I open VLC and from the Media menu choose "Open Network Stream" and enter the IP address and port of the desktop (host) VLC server like this:
rtp://192.168.1.27@192.168.1.22
(The default port 5004 is being used and thus isn't specified in those examples. You can change it to any available rtp port on the desktop/host, but it has to be even.)
Note that simply entering rtp://192.168.1.27 (the desktop IP address) does *not* work.
Also, I used "unicast", the simplest case of RTP streaming, so the laptop's IP has to be specified in the configurations (as the destination, "dst=") and only the laptop can play that stream. You can use the "duplicate" command to send the stream using unicast to more than one location, e.g.:
<IP> --sout "#duplicate{dst=rtp{mux=ts,dst=192.168.1.22},dst=rtp{mux=ts,dst=192.168.1.xx}}"
and RTP has a "multicast" command, but I haven't figured that out yet.
Anyway, that's a start and I hope it helps. There's so much more that can be done using the VLC Configurations - transcoding, multicasting, record to a file (manual DVR), etc.
Category: Computer and USB Satellite Receivers and Recording