How create custom channel using a remote Channels DVR server as a video source

What would be the easiest was to create a custom channel on Channels DVR server "A" that is a stream from Channels DVR server "B" ? Can you choose between HLS or other streaming formats ? Limit bandwidth?

Enable Tailscale on both servers. On server (A) create a custom channel and Choose hls with url:

http://Tailscale.ip.of.remote.server(B):8089/devices/ANY/channels.m3u?bitrate=3000

This will use a 3mb stream (3000). Adjust how you like.

For guide data:

http://Tailscale.ip.of.remote.server:8089/devices/ANY/guide/xmltv?duration=604800

This will import all the channels from the remote server(B) into the local server(A)and when playing them they will be limited to 3mb.

1 Like

Thanks that worked quite easily. .. Anyone have the syntax for exposing a single channel and not all the source DVR's available channels ? Or a subset/group of channels or a just a single "source" such as a particular HDHomeRun device on the source DVR ?

http://x:8089/devices/ANY/channels.m3u
Use a DeviceID in place of ANY for a specific source device
http://x:8089/devices/DeviceID/channels.m3u
To see your DeviceID's, view http://x:8089/devices

Use the option filter=favorites for FAVORITE CHANNELS ONLY
http://x:8089/devices/ANY/channels.m3u?bitrate=3000&filter=favorites

Use the option filter=hd for HD CHANNELS ONLY
http://x:8089/devices/ANY/channels.m3u?bitrate=3000&filter=hd

Some m3u options listed here

To use just a single channel, download the m3u playlist from the server and copy/paste the lines for the channel you want as a Custom M3U Channel Text entry instead of a URL for the playlist.

2 Likes

Can you limit the bandwidth of a single channel using the Channel Text Entry? I tried using this and didn't see a change in the bitrate when watching:

#EXTM3U

#EXTINF:-1 channel-id="1.1" tvg-id="1.1" tvg-chno="1.1" tvg-logo="https://tmsimg.fancybits.co/assets/s28717_ll_h15_ad.png?w=360&h=270" tvc-guide-stationid="25544" tvg-name="WGALDT" group-title="Favorites",NBC
http://IPADDRESS:8089/devices/10A22667/channels/8.1/stream.mpg?bitrate=3000&codec=copy&format=ts

I'm going from memory, but if IIRC, change stream.mpg to hls/master.m3u8. stream.mpg will send the raw MPEG-TS stream, and the following query parameters will be ignored. Instead you want the HLS stream of the channel, which will remux/transcode.

So trying to share a single channel over Tailscale. Here's my settings:

However, even though it loads this as a source, the channel isn't showing up and when I check the logs, I get this:

Failed to parse m3u for NBCTest: malformed M3U provided.

I show the Tailscale is working and both machines are actively connected. When I tested on 2 computers in the same house, worked fine. Any help is appreciated.

The first line must be

#EXTM3U

1 Like

Doh....

OK. now getting new problem after fixing that:

2023/08/26 10:52:39.725172 [ERR] Failed to start stream for ch1.1: M3U: Could not fetch playlist: 100.93.xxx.x:8089 (Timeout): Get "http://100.93.xxx.x:8089/devices/10A22667/channels/8.1/stream.mpg?bitrate=3000&codec=copy&format=ts": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
2023/08/26 10:52:39.732485 [HLS] Couldn't generate stream playlist for ch1.1-dANY-ip192.168.1.34: M3U: Could not fetch playlist: 100.93.xxx.x:8089 (Timeout): Get "http://100.93.xxx.x:8089/devices/10A22667/channels/8.1/stream.mpg?bitrate=3000&codec=copy&format=ts": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
2023/08/26 10:52:39.732790 [HLS] Stopping transcoder session ch1.1-dANY-ip192.168.1.34

That sounds like no connectivity.

Are you using Tailscale on the OS? The built in one won't let you connect two dvrs iirc

Ah, I didn't realize that they couldn't be connected via the integrated. yes, I was trying to feed a specific channel from one of my servers to another. I guess I have to start researching at the device level. Having it within the application is so much more convenient, but looks like I exceeded the intent. Thanks for the quick replies.

1 Like

You're specifying format=ts; don't. You want the HLS stream, not the MPEG-TS.

Also, if you set the preferred bitrate/resolution in the Web Player section of your DVR settings, you can additionally omit the bitrate query parameter.

Thanks. I had actually tried both, but went ahead and re-loaded with the following settngs:

#EXTM3U

#EXTINF:-1 channel-id="1.1" tvg-id="1.1" tvg-chno="1.1" tvg-logo="https://tmsimg.fancybits.co/assets/s28717_ll_h15_ad.png?w=360&h=270" tvc-guide-stationid="25544" tvg-name="WGALDT" group-title="Favorites",NBC
http://100.93.xxx.x/devices/10A22667/channels/8.1/hls/master.m3u8

I still get the following error. Looks like I've exceeded the intent of the capabilities:

2023/08/26 11:13:35.089965 [ERR] Failed to start stream for ch1.1: M3U: Could not fetch playlist: 100.93.119.7 (Timeout): Get "http://100.93.xxx.x/devices/10A22667/channels/8.1/hls/master.m3u8": dial tcp 100.93.xxx.x:80: i/o timeout
2023/08/26 11:13:35.090195 [HLS] Couldn't generate stream playlist for ch1.1-dANY-ip192.168.1.34: M3U: Could not fetch playlist: 100.93.xxx.x (Timeout): Get "http://100.93.xxx.x/devices/10A22667/channels/8.1/hls/master.m3u8": dial tcp 100.93.xxx.x:80: i/o timeout
2023/08/26 11:13:35.090371 [HLS] Stopping transcoder session ch1.1-dANY-ip192.168.1.34

I just tested your text subbing in my tail net and hdhr device Id and it played just fine on a remote server. If you have double verified your tail net ip annd it’s still enabled in the dvr settings page and hdhr id are correct then try adding Tailscale to the client machine at the os level. And leave the m3u text with the dvr Tailscale and try again.

Per Tailscale status page, both machines were active and also showed active under the settings section of both DVR servers. I was testing using a web browser vs a client. I suppose I could add Tailscale for the windows machine, but seems like that wouldn't be necessary if the Host Server is sharing with the Client Server which in turn feeds the local clients.

Just an FYI.
When connecting to a Channels DVR using tailscale, if using the Channels DVR built-in tailscale you don't specify the port#. i.e. 100.100.100.100

If instead using tailscale on the server device (and not the Channels DVR built-in tailscale) you must specify the port#. i.e. 100.100.100.100:8089

Not sure on other installs, but I know this is true for a Synology NAS.

So installed Tailscale at the OS Level for my Home DVR Server and have Tailscale installed at the Channels DVR Server level on the remote server.

Home DVR Server = 1.1.1.1 (as an example) <- Tailscale enabled at OS Level (Synology NAS)
Remote DVR Server = 2.2.2.2. (as an example) <- Tailscale enabled at the Channels DVR Server Level
Confirmed both IP addresses are valid (I can access the remote server from my home network using the following:

http://2.2.2.2:8089/admin/settings

I used the below to create a custom channel on my Home DVR Server:

#EXTM3U

#EXTINF:-1 channel-id="1.9" tvg-id="1.9" tvg-chno="1.9" tvg-logo="https://tmsimg.fancybits.co/assets/s28708_ll_h15_ac.png?w=360&h=270" tvc-guide-stationid="51960" tvg-name="WCJBDT" group-title="HD",ABC
http://2.2.2.2:8089/devices/ANY/channels/6001/hls/master.m3u8?

I'm still not able to get a live feed. Current error looks like this:

2023/08/28 21:29:26.502289 [ERR] Failed to start stream for ch1.9: M3U: Could not fetch playlist: 2.2.2.2:8089 (Timeout): Get "http://2.2.2.2:8089/devices/ANY/channels/6001/hls/master.m3u8?": context deadline exceeded

Will it work if you set up a custom source with hls and url with this as the url

http://2.2.2.2:8089/devices/ANY/channels.m3u?bitrate=3000

You may need to follow these additional steps on your Synology to get Tailscale to fully work:

The latest DVR pre-release now will support connecting two DVRs over the integrated Tailscale support without needing to install it on the OS.

Thanks for reporting this.

1 Like