Channels DVR + Xteve / Telly

While broadcast may not be specifically in the text, Channels' site does specifically call out antenna and cable feeds as the primary source of content, which TVE sources are offered to augment that:

Similarly, the Channels Plus page makes no mention about adding your own outside content, nor working with any input type not in the aforementioned page. While developers have stated that they'd like to implement and provide media library support for outside content, that has only been as part of similar conversations in the forums, and not part of any of the product materials.

In any case, you're welcome to request features you'd like to see implemented.

However, as to your statement:

That's not quite true. I could easily find a way to combine Channels as the backend to provide TVE and Locast sources to Tvheadend, which can also use your generated playlists and XMLTV guides for your 24/7 channels. Add in an SQL-backed shared library for Kodi to manage your provided media library, separate remote profiles for Tvheadend to selectively transcode high quality TV streams to lower bitrates (to mirror remote access), and you'll have it all in one program. (Not only that, but you can change the interface to your liking if purple isn't your thing; Tvheadend can selectively merge channels if you so choose, as well as rename or reorder them as desired.) and if what you want isn't available, you have the ability to add it yourself.

What you want is possible—it's just a lot of work to get a lot of different moving parts to work together. The question is how much effort of your own that you want to expend in achieving that goal.

2 Likes

Can you recommend a good forum or source for Tvheadend. Back when I looked into it i couldn't find a version for the DS218+ and all the information I could find seemed to be years old. I would like to give it a closer look.
Thanks

Tvheadend has their own forums, and you can find information there. If you go that route, you need your own guide data, most likely from Schedules Direct. Also, some method of getting that guide data into a format you can use: I personally preferred tv_grab_zz_sdjson_sqlite.

As far as running Tvheadend on a NAS, I would personally use a small dedicated computer or something like a Raspberry Pi, only because OS in the NAS is limited on which software is available. If you still want to go that route, you can look into SynoCommunity, as they provide a Tvheadend package. If you find find you need software that isn't natively shipped on your NAS, you may want to check out Entware.

I'll leave the rest up to you. If you're looking to cobble together a fragile system of so many disparate parts, you really ought to know what you're doing so you can fix it when something goes wrong. The point I was making when I brought it up was that what was being asked for was indeed possible; it's just a lot of work to get working. If all you want is a turnkey solution that just works, then you'll have to make sacrifices, as I don't know of any package that offers everything; there's always a trade off.

Thanks for all the information i have plenty of spare mini pc's I can play with, I have an SD account I use with epg123 for plex and emby. But I'm always looking for something new to mess around with. Thanks again.

interesting, i didn't know that was possible. can you direct me towards some resources on how to set that up?

The following thread details how to get URLs or M3U playlists that you can feed into Tvheadend as IPTV inputs:

Using that information, you create your M3U playlist. Then use a service like Schedules Direct to get your guide data. There are myriad posts on the TVH forums describing how to use playlists as inputs to TVH.

I am still having trouble getting xteve with epg into channels. I can get it to work in emby but not channels dvr. Anyone have any suggestion or instructions?

how do i run this docker? This takes out the -re in ffmpeg right?

1 Like

Check out Telly's own wiki/documentation: Running Telly: Master Branch Docker

Also,

Remembering from the MPEG-TS pipe input type in Tvheadend, the -re option is only needed when using a file from disk or some other source that is feeding Ffmpeg faster than realtime. If your stream is a live stream, -re is unnecessary. (I still can't believe how many supposed "tutorials" for feeding IPTV streams into Ffmpeg keep including this flag.)

From the Ffmpeg documentation:

-re (input)
Read input at native frame rate. Mainly used to simulate a grab device, or live input stream (e.g. when reading from a file). Should not be used with actual grab devices or live input streams (where it can cause packet loss). By default ffmpeg attempts to read the input(s) as fast as possible. This option will slow down the reading of the input(s) to the native frame rate of the input(s). It is useful for real-time output (e.g. live streaming).

telly v1.1.0-Beta7 was released recently and includes the -re fix.

Finally, I started testing telly on channels. When i play a channel it plays for 6 s and cancels out.

Channel Logs
2020/06/18 15:58:00.149370 [ERR] Could not start stream for 12345678 ch8 Newsy: Get "http://192.168.1.150:6077/auto/v8?transcode=none": net/http: timeout awaiting response headers
2020/06/18 15:58:40.650589 [TNR] Opened connection to 12345678 for ch1 AlJazeera [transcode=none]
2020/06/18 15:58:58.595018 [TNR] Cancelling stream 12345678 ch1 after 6s read timeout
2020/06/18 15:58:58.595298 [TNR] Closed connection to 12345678 for ch1 AlJazeera

telly logs
Jun 18 16:03:27 raspberrypi telly[4642]: time="2020-06-18T16:03:27-04:00" level=info msg="frame= 740 fps=181 q=-1.0 size= 7099kB time=00:00:29.62 bitrate=1963.1kbits/s spee
Jun 18 16:03:33 raspberrypi telly[4642]: time="2020-06-18T16:03:33-04:00" level=info msg="[https @ 0x207bef0] Opening 'https://live-hls-web-aje.getaj.net/AJE/20190710T110056-03
Jun 18 16:03:33 raspberrypi telly[4642]: time="2020-06-18T16:03:33-04:00" level=info msg="frame= 750 fps= 77 q=-1.0 size= 7154kB time=00:00:29.98 bitrate=1954.3kbits/s spee
Jun 18 16:03:34 raspberrypi telly[4642]: time="2020-06-18T16:03:34-04:00" level=info msg="frame= 842 fps= 82 q=-1.0 size= 8017kB time=00:00:33.80 bitrate=1942.7kbits/s spee
Jun 18 16:03:34 raspberrypi telly[4642]: time="2020-06-18T16:03:34-04:00" level=info msg="frame= 951 fps= 89 q=-1.0 size= 9102kB time=00:00:38.05 bitrate=1959.7kbits/s spee
Jun 18 16:03:43 raspberrypi telly[4642]: time="2020-06-18T16:03:43-04:00" level=info msg="[https @ 0x256f010] Opening 'https://live-hls-web-aje.getaj.net/AJE/03.m3u8' for readi
Jun 18 16:03:43 raspberrypi telly[4642]: time="2020-06-18T16:03:43-04:00" level=info msg="[https @ 0x207bef0] Opening 'https://live-hls-web-aje.getaj.net/AJE/20190710T110056-03
Jun 18 16:03:43 raspberrypi telly[4642]: time="2020-06-18T16:03:43-04:00" level=info msg="frame= 1000 fps= 50 q=-1.0 size= 9528kB time=00:00:39.99 bitrate=1951.8kbits/s spee
Jun 18 16:03:43 raspberrypi telly[4642]: time="2020-06-18T16:03:43-04:00" level=error msg="Error when copying data" error="write tcp 192.168.1.150:6077->192.168.1.2:37286: writ
Jun 18 16:03:43 raspberrypi telly[4642]: time="2020-06-18T16:03:43-04:00" level=info msg="Stopped streaming 1"

6s time-out will occur if you don't use the sample configuration above

Added xTeve, found 0 channels. How do i remove this from Channels?

FYI

Read it this morning as well. Been trying to get Xteve to work as well with Channels

2 Likes

Hi. I am new to this to bear with me. I have telly installed on Windows with Channels DVR on same. I use a direct m3u from SAT>IP box and everything works ok. I am using ffmpeg. Only minor issue is channel changes take about 8 seconds on average. Is this normal? I was looking if arguments can be used with ffmpeg to speed it up. Thanks for the great information here.

Blockquote
time="2020-07-05T18:36:49+01:00" level=info msg="Serving channel number 100"
time="2020-07-05T18:36:49+01:00" level=info msg="Remuxing stream with ffmpeg"
time="2020-07-05T18:36:49+01:00" level=info msg="ffmpeg version git-2020-06-23-ce297b4 Copyright (c) 2000-2020 the FFmpeg developers\r"
time="2020-07-05T18:36:49+01:00" level=info msg=" built with gcc 9.3.1 (GCC) 20200621\r"
time="2020-07-05T18:36:49+01:00" level=info msg=" configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libsrt --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libgsm --disable-w32threads --enable-libmfx --enable-ffnvcodec --enable-cuda-llvm --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt --enable-amf\r"
time="2020-07-05T18:36:49+01:00" level=info msg=" libavutil 56. 55.100 / 56. 55.100\r"
time="2020-07-05T18:36:49+01:00" level=info msg=" libavcodec 58. 93.100 / 58. 93.100\r"
time="2020-07-05T18:36:49+01:00" level=info msg=" libavformat 58. 47.100 / 58. 47.100\r"
time="2020-07-05T18:36:49+01:00" level=info msg=" libavdevice 58. 11.100 / 58. 11.100\r"
time="2020-07-05T18:36:49+01:00" level=info msg=" libavfilter 7. 86.100 / 7. 86.100\r"
time="2020-07-05T18:36:49+01:00" level=info msg=" libswscale 5. 8.100 / 5. 8.100\r"
time="2020-07-05T18:36:49+01:00" level=info msg=" libswresample 3. 8.100 / 3. 8.100\r"
time="2020-07-05T18:36:49+01:00" level=info msg=" libpostproc 55. 8.100 / 55. 8.100\r"
time="2020-07-05T18:36:50+01:00" level=info msg="[h264 @ 000002a3ef760200] non-existing PPS 0 referenced\r"
time="2020-07-05T18:36:50+01:00" level=info msg=" Last message repeated 1 times\r"
time="2020-07-05T18:36:50+01:00" level=info msg="[h264 @ 000002a3ef760200] decode_slice_header error\r"
time="2020-07-05T18:36:50+01:00" level=info msg="[h264 @ 000002a3ef760200] no frame!\r"
time="2020-07-05T18:36:50+01:00" level=info msg="[h264 @ 000002a3ef760200] non-existing PPS 0 referenced\r"
time="2020-07-05T18:36:50+01:00" level=info msg=" Last message repeated 1 times\r"
time="2020-07-05T18:36:50+01:00" level=info msg="[h264 @ 000002a3ef760200] decode_slice_header error\r"
time="2020-07-05T18:36:50+01:00" level=info msg="[h264 @ 000002a3ef760200] no frame!\r"
time="2020-07-05T18:36:50+01:00" level=info msg="[h264 @ 000002a3ef760200] mmco: unref short failure\r"
time="2020-07-05T18:36:57+01:00" level=info msg=" Last message repeated 1 times\r"
time="2020-07-05T18:36:57+01:00" level=info msg="[mpegts @ 000002a3ef74c0c0] Could not find codec parameters for stream 1 (Audio: mp3 (mp3float) ([3][0][0][0] / 0x0003), 0 channels, fltp): unspecified frame size\r"
time="2020-07-05T18:36:57+01:00" level=info msg="Consider increasing the value for the 'analyzeduration' (0) and 'probesize' (5000000) options\r"
time="2020-07-05T18:36:57+01:00" level=info msg="[mpegts @ 000002a3ef74c0c0] Could not find codec parameters for stream 5 (Unknown: none ([5][0][0][0] / 0x0005)): unknown codec\r"
time="2020-07-05T18:36:57+01:00" level=info msg="Consider increasing the value for the 'analyzeduration' (0) and 'probesize' (5000000) options\r"
time="2020-07-05T18:36:57+01:00" level=info msg="[mpegts @ 000002a3ef74c0c0] Could not find codec parameters for stream 6 (Unknown: none ([5][0][0][0] / 0x0005)): unknown codec\r"
time="2020-07-05T18:36:57+01:00" level=info msg="Consider increasing the value for the 'analyzeduration' (0) and 'probesize' (5000000) options\r"
time="2020-07-05T18:36:57+01:00" level=info msg="[mpegts @ 000002a3ef74c0c0] Could not find codec parameters for stream 7 (Unknown: none ([5][0][0][0] / 0x0005)): unknown codec\r"
time="2020-07-05T18:36:57+01:00" level=info msg="Consider increasing the value for the 'analyzeduration' (0) and 'probesize' (5000000) options\r"
time="2020-07-05T18:36:57+01:00" level=info msg="[mpegts @ 000002a3ef74c0c0] Could not find codec parameters for stream 8 (Unknown: none ([5][0][0][0] / 0x0005)): unknown codec\r"
time="2020-07-05T18:36:57+01:00" level=info msg="Consider increasing the value for the 'analyzeduration' (0) and 'probesize' (5000000) options\r"
time="2020-07-05T18:36:57+01:00" level=info msg="[mpegts @ 000002a3ef74c0c0] Could not find codec parameters for stream 9 (Unknown: none ([5][0][0][0] / 0x0005)): unknown codec\r"
time="2020-07-05T18:36:57+01:00" level=info msg="Consider increasing the value for the 'analyzeduration' (0) and 'probesize' (5000000) options\r"
time="2020-07-05T18:36:57+01:00" level=info msg="[mpegts @ 000002a3ef74c0c0] Could not find codec parameters for stream 10 (Unknown: none ([5][0][0][0] / 0x0005)): unknown codec\r"
time="2020-07-05T18:36:57+01:00" level=info msg="Consider increasing the value for the 'analyzeduration' (0) and 'probesize' (5000000) options\r"
time="2020-07-05T18:36:57+01:00" level=info msg="[mpegts @ 000002a3ef74c0c0] Could not find codec parameters for stream 11 (Unknown: none ([5][0][0][0] / 0x0005)): unknown codec\r"
time="2020-07-05T18:36:57+01:00" level=info msg="Consider increasing the value for the 'analyzeduration' (0) and 'probesize' (5000000) options\r"
time="2020-07-05T18:36:57+01:00" level=info msg="[mpegts @ 000002a3ef74c0c0] Could not find codec parameters for stream 12 (Unknown: none ([5][0][0][0] / 0x0005)): unknown codec\r"
time="2020-07-05T18:36:57+01:00" level=info msg="Consider increasing the value for the 'analyzeduration' (0) and 'probesize' (5000000) options\r"
time="2020-07-05T18:36:57+01:00" level=info msg="[mpegts @ 000002a3ef74c0c0] Could not find codec parameters for stream 13 (Unknown: none ([11][0][0][0] / 0x000B)): unknown codec\r"
time="2020-07-05T18:36:57+01:00" level=info msg="Consider increasing the value for the 'analyzeduration' (0) and 'probesize' (5000000) options\r"
time="2020-07-05T18:36:57+01:00" level=info msg="[mpegts @ 000002a3ef74c0c0] Could not find codec parameters for stream 14 (Unknown: none ([11][0][0][0] / 0x000B)): unknown codec\r"
time="2020-07-05T18:36:57+01:00" level=info msg="Consider increasing the value for the 'analyzeduration' (0) and 'probesize' (5000000) options\r"
time="2020-07-05T18:36:57+01:00" level=info msg="[mpegts @ 000002a3ef74c0c0] Could not find codec parameters for stream 15 (Unknown: none ([11][0][0][0] / 0x000B)): unknown codec\r"
time="2020-07-05T18:36:57+01:00" level=info msg="Consider increasing the value for the 'analyzeduration' (0) and 'probesize' (5000000) options\r"
time="2020-07-05T18:36:57+01:00" level=info msg="Input #0, mpegts, from 'http://192.168.1.8/?freq=10847&src=aa&pol=v&msys=dvbs2&fec=34&rolloff=35&pilots=auto&sr=23000&mtype=auto&sid=6941&pmt=260&pids=0,5400,5401,260':\r"
time="2020-07-05T18:36:57+01:00" level=info msg=" Duration: N/A, start: 74956.163133, bitrate: N/A\r"
time="2020-07-05T18:36:57+01:00" level=info msg=" Program 6961 \r"
time="2020-07-05T18:36:57+01:00" level=info msg=" Program 6960 \r"
time="2020-07-05T18:36:57+01:00" level=info msg=" Program 6963 \r"
time="2020-07-05T18:36:57+01:00" level=info msg=" Program 6940 \r"
time="2020-07-05T18:36:57+01:00" level=info msg=" Program 6941 \r"
time="2020-07-05T18:36:57+01:00" level=info msg=" Stream #0:0[0x1518]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p(tv, bt709, top first), 1920x1080 [SAR 1:1 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 50 tbc\r"
time="2020-07-05T18:36:57+01:00" level=info msg=" Stream #0:10x151a: Audio: mp3 ([3][0][0][0] / 0x0003), 0 channels, fltp\r"
time="2020-07-05T18:36:57+01:00" level=info msg=" Stream #0:20x151c: Subtitle: dvb_subtitle ([6][0][0][0] / 0x0006)\r"
time="2020-07-05T18:36:57+01:00" level=info msg=" Stream #0:30x151b: Subtitle: dvb_teletext ([6][0][0][0] / 0x0006)\r"
time="2020-07-05T18:36:57+01:00" level=info msg=" Stream #0:40x1519: Audio: ac3 ([6][0][0][0] / 0x0006), 48000 Hz, 5.1(side), fltp, 384 kb/s\r"
time="2020-07-05T18:36:57+01:00" level=info msg=" Stream #0:5[0x912]: Unknown: none ([5][0][0][0] / 0x0005)\r"

Blockquote

I have setup telly and Channels can see my telly as a tuner, I can add it, but then when I want to scan for channels it fails. Anybody else got this?

I'm having a similar issue.. I've set my config file up as described in the previous posts, but I'm not sure what to do with this section. Is it OK as is, do I need to change it, or can it be omitted entirely?

  # THE FOLLOWING KEYS ARE OPTIONAL IN THEORY, REQUIRED IN PRACTICE
  Filter = "YOUR_FILTER_REGULAR_EXPRESSION"
                            # Telly is written in Go, and uses the Go regular expression system, 
                            # which is limited compared to other regular expression parsers.
  FilterKey = "group-title" # Telly applies the regular expression to the contents of this key in the M3U.
  FilterRaw = false         # FilterRaw will run your regex on the entire line instead of just specific keys.
  Sort = "group-title"      # Sort will alphabetically sort your channels by the M3U key provided
# END TELLY CONFIG  ###############################################################################

Telly has a limit on the number of channels it will load. This is because plex has a number of channels it will allow. This section is where you set up a filter for the channels you want to import to telly from your iptv provider. The limit is between 400 and 500 i forget the exact number you can look it up. If you try to import more channels then telly allows then 0 channels will load into telly.

Thank you for that information. I see from another post you made that you’ve been using Telly 1.5 which eliminates that issue. Did you have to do anything different in the config file for 1.5? I can’t find documentation for it like the 1.1 branch. Would it just omit the filter section entirely in that case? It appears the web interface with 1.5 and its custom lineup would solve all my issues. I only want a handful of channels anyway