How To Create your own 24/7 Channels with your own media

I usually dont do how to's since i dont have the patience to take screenshots, make it look nice and type in proper grammar or punctuation, but here is what i did in order to create my own 24/7 channels or any type of linear channel right in Channels. Hopefully i dont miss something.

Ive been searching for this holy grail for more than 10 years and no one did it right, it was a pain to get everything working (looking at you pseudotv for kodi) and it never worked.

here is what i did and it works perfectly now (well almost). Hopefully this will push @maddox, @tmm1 and @eric to do this natively!!

Prerequisites:

Channels DVR sub (obviously)
Plex server and your media scanned by plex for metadata
DizqueTV https://github.com/vexorian/dizquetv
ffmpeg

Steps:

Install DizqueTV on your preferred system. I settled on Docker Desktop for Windows 10 on an old dell pc that is not my Channels or Plex server.

follow the directions on their github to setup ffmpeg and plex. the reason you need plex is because this was made to connect to plex and use the plex metadata database in order to provide guide data to the emulated dizquetv hdhr in which plex uses. We will not be using the hdhr, DizqueTV creates and provides an m3u and xml of your data that Channels will ingest.

the docker image has ffmpeg already installed and setup, you will need to do this on your own if you use the other methods.

Once Dizquetv is installed and setup with ffmpeg and connectd to plex, you can now create your own tv cahnnels with many options.

Here is what i have done so far, Channel 100 - Top Gear:

Put in the channel number that will appear in Channels, name the channel and add an icon if you want

Add your files with the plus sign in what ever order you want. You can see all the options you can do to this channel. I simply just added the show in order without any commercials, etc.

I didn't change anything in the flex, epg and ffmpeg tabs.

Now that you have your channel setup, now its time to add it to Channels. A very easy thing to do.

DizqueTV provides the xml and m3u via http on the top right. simply copy the link and add it to channels;

the channel now appears with the channel number you provided in diquetv, with proper artwork and metadata

Now here are the limitations and gotchas i encountered:

dizquetv will always transcode with ffmpeg because, from what i understand, dizquetv will only direct play the files if they are compatible with Plex's live tv constraints. plex live tv apparently only supports whatever the tuner sends to plex live tv. So it looks at the file and transcodes it to play nicely with plex.

after testing the windows, mac installs, it kept crashing on me every so often. i moved it to docker on synology but it was not powerfull enough for some of the files i have in some of the channels so it would crash or pause.

i settled on an old dell pc with docker desktop. the cpu hoovers around 50 - 90% without any issues for one stream. i encounter problems if i try two streams, hopefully that wont happen when the mac mini m1 arrives in a few weeks.

i was experiencing missing guide data in channels after a while, so you can simply change the xml settings in dizquetv so channels will always ingest the xml with more guide data. i set it to 48 hours with a 1 hour refresh.

any who, it works great without any (major) issues. give it a try and hopefully something like this is integrated natively in channels soon.

9 Likes

Great write up! It's super cool that we now have integration points to allow this kind of hackery to let you guys get things you want.

And just for the record, we TOTALLY play on having virtual channels like this :wink: There's just NO timeline yet.

But this is a great way for everyone to get their feet wet with it and figure out what they like and hate for when we start building it out.

4 Likes

Thanks! i cant wait for the native implementation!

I wish ffmpeg in the container would utilize hardware transcoding, but everything ive found and read, apparently it cant.

If Channels' containerized Docker install can use ffmpeg's hardware transcoding, there's no technical limitation.

Make sure you are giving the container access to the hardware (something like -d /dev/dri on your docker run command line, for instance), and you probably ought to use a statically linked Ffmpeg binary, too.

you, sir, are my hero. i've been planning on doing this for a while now...i used to have a few channels up but could never really get the guide to work right. this ties it all together, and i had been looking at dizque tv last weekend but gave up because i couldn't find a start to finish guide on it and didn't have time to mess around. this will give me the kick in the ass i need to finally set it all up this weekend. thank you!

as for transcoding, is there any reason not to just have ffmpeg do a copy instead of a transcode? should be able to modify the source to do that (dizque is open source, right?) and i remember when i had my 24/7 channels up a few months ago they were pretty easy on system resources...

1 Like

You’re welcome. I’m a networking guy, not a programmer but I can navigate things like this pretty easily, I just haven’t sat down to read and play around with it and learn it.

I’m just playing with docker now to get used to it and learn it before I jump on how to get it to work with hardware acceleration or copy.

i see from your other posts that you are good with the programming aspect of it, If you figure it out with the dizque settings or you can always fork this thing to make it work better with channels, I won’t complain!

2 Likes

i'll see what i can come up with and update everyone in this thread if i figure something out

1 Like

People like you all are the pioneers catching all the arrows for those of us that see this as an alien language. I'll buy it once you all make it a simple download!

that was insanely easy. i already have one channel up and running.

one gotcha i did encounter, it involved my mapping system: if you use the default docker-compose setup that they suggest, it'll break the connection between the frontend/backend/mapper services. i fixed it by just bringing dizque into my channels bridge (note the networks list at the bottom)...

  dizquetv:
    image: vexorian/dizquetv:latest
    container_name: dizquetv
    volumes:
      - ./dizquetv:/home/node/app/.dizquetv
    ports:
      - 8000:8000
    restart: unless-stopped
    networks:
      - channels

if you have dizquetv running via docker in the same compose setup as channels, it also allows you to refer to it by the service name. for example, i added my source as http://dizquetv:8000/api/channels.m3u, rather than having to use the ip and port number. using that URL from your own system won't work, but the containers will be able to talk to it that way since they're in the same docker stack.

@AeroR1 have you tried turning transcoding off? it seems to be working that way for me so far, and system resources are basically nothing.

1 Like

also, turning on the "force direct play" option under plex settings dramatically improves the picture quality.

i forgot to mention it but i have turned transcoding off and force direct play but once i try to play a file that is not compatible with plex's live tv channel codec constraints, it fails. from what i read somewhere which i cant find, plex live tv can only play broadcast standard file types, it cant direct play everything like plex itself.

also, on the github, there is this warning, which happens to me all the time if i dont enable transcoding.

  • Most players (including Plex) will break after switching episodes if video / audio format is too different. dizqueTV can be configured to use ffmpeg transcoding to prevent this, but that costs resources.

i'm having issues with the guide this morning. i tried to delete and re-create the db, but in the logs now i'm seeing this:

2020/12/04 09:09:42.576836 [ERR] Failed to download xmltv: Get "http://http//dizquetv:8000/api/xmltv.xml": dial tcp: lookup http on 127.0.0.11:53: no such host

@tmm1 can you assist here? i don't know what is going on here, if i use the docker command line to enter the container i can ping dizquetv just fine - so it has no problem finding the host that way (nor should it, they're in the same docker stack so it should be able to access via service name).

edit: i take it back, i deleted and re-entered the xmltv url and now it's working. no clue what happened there.

the way i had gotten around that when i was running my own channels was to re-encode any material i wanted on a 24/7 channel into the same format, and then use those files to feed the channel. a little bit of work ahead of time and a little bit of extra disk space, but a ton of system resources saved along the way after that.

It says http://http// instead of http://

yeah, i saw that. i guess i had copy/pasted it only into a portion of the text field and accidentally didn't take the whole thing out. after cutting the whole thing it works now.

thanks!

I know. I won’t do that, I have 40 tb of stuff. The end goal is to make themed linear channels when something out there simply passes it along without transcoding.

Too bad dizquetv doesn’t rely on plex just for the metadata and not the live tv infrastructure as well.

This is supercool. I would think implementation into Channels wouldn't be impossible without any third party software but for now, this is really amazing.

there are solutions out there that don't rely on plex for the actual tv infrastructure, but it's a huge PITA to get working. i was using them previously but like i said i could never get the guide to work...probably because i don't think they were even using plex for that. everything was pulled from tvdb. too many variables.

i'm going to see if i can't figure out a way to tweak the code to take plex out of the equation for the actual streaming.

1 Like

i'm still tinkering, but in the meanwhile setting the preferred resolution to 720p and the video encoder to mpeg4 seems to be working pretty well for me with reasonable system resource usage.