Coax: No longer public

Transcoding every stream could be an issue. The goal is to avoid that whenever I can. I got a good GPU but...transcoding underground IPTV streams is a bit too much. Its just Prismcast Zero really. Remuxing? Yes, thats probably a good idea on occasion

But, cool tool. I may use it

Transcoding every stream is a deal breaker for me. :pensive:

I like that Channels DVR doesn't modify the streams and I want to keep it this way.

Too bad because everything else was very impressive and great work.

(post deleted by author)

The server pc does that quicksync. Using this as a go-between is something to think about although my provider doesn't have buffering issues often.

I'm using dispatcharr + lineuparr ATM but this seems promising

The reason why I like this a lot, even if you don't want to use the transcoding, is I find XMLTV guide data to suck. That one of the key points of this tool is it will connect your channel server and help you very quickly populate your IPTV channels with the actual Gracenote IDs from your Channels server. It also has you putting your country and zip code to kind of narrow things down. Because what would happen to me is I would match and then get a bunch of channels from Poland or something like that instead of America. So, I felt it helpful to put in a country and zip code to narrow down what initially matches. And then, when it doesn't find stuff, you can do a search and match more broadly outside of your region. This actually doesn't ever have to be entered into Channels or mapped inside of Channels. Once you copy the M3U over by clicking the button in the app, it's kept in sync. So any changes you make inside of Coax immediately sync to channels over the API. And it immediately downloads the guide data from Gracenote through channels. And you end up with perfect guide data instead of whatever your provider provides you with that's crappy.

I tried to make it as easy as possible to set up as well. Once you enter in your line and each connection you may have with your provider, and then pick the groups you want to display, you go to the channels page, and there's a little section on the left-hand side. You just search through that by hand and pick the channels you want. It's literally just a checkbox and an add button. I even implemented some filters to make it a little bit easier, but my goal was just to keep it as simple as possible. So that's why it's mainly just a search box and you add. The flow is you click the auto-match button at the top after you have populated your list with every channel you want. That will show a little progress bar and just run asynchronously in the background so you can just walk away, but it shouldn't take too long. That pulls in the IDs for the guide and tries to match them based on confidence. It'll flag anything that it's not confident about, so you can manually go ahead and review. Then, what it does automatically is look through the rest of your groups that you've added, all of them, and attempts to pull in feeds that are identical to the ones you've selected to use as backups. It will also score these. So if it tells you it's not confident about one and the name is slightly different or something like that, you can then go in and approve it or reject it and then save. And as you're doing that, it's also auto saving in the background so you don't ever lose your work just in case it takes a while. But for me, it wasn't too long.

So, the goal here is just to make things very, very easy to build out, minimal work, and just kind of a clean workflow with as much automation as possible. The other really nice thing I think I did was a lot of providers I found, at least the one I use, puts a prefix in front of every channel, like maybe a country or something like that. So, I built a regex to remove that. Automatically anything before the name of the channel should be stripped out. So, you can easily then go into your lineups, maybe choose a starting number and say, "Hey, I want this to be sorted alphabetically." So, let's say I want my numbers to start at 10,000, so it's out of the way, and I want them to be sorted alphabetically. So every channel is 10,000 through whatever, and they're all easy to find because they're in alphabetical order without any prefix cluttering up the order. So, another key reason why I think this is really cool is it really makes the process of actually browsing the channels guide really nice. And just another thing to note that's interesting, I did because it runs about a minute behind live, it automatically will append whatever time it needs to the end of a recording because obviously the show is running slightly behind the wall clock. So if you have a recording that ends at 10 p.m., it will stop recording at 10:02 p.m., for example, to ensure that nothing's cut off at the end. And let's say you're watching something like 60 minutes and you decide to put an extra half hour at the end of that because of the football games that usually play beforehand. It'll record it for an extra 32 minutes. So it depends, it doesn't ever change what you already did. And it only affects recordings created by this tool, and that's it.

But really, I try to do a lot to make this really specific to Channels DVR, and nothing else. It's not meant to work with anything else; it's really meant for our community here. Very sorry about the transcoding thing. It's only there to ensure stability when needed. If you don't have issues with your provider, feel free to leave it off, and you probably won't need it.

2 Likes

I also want to say I'm watching something right now. I am obviously transcoding 1080p60. I'm looking at the specific Compose stack that I have on my Unraid server. This is with /dev/dri on my Intel i7 12700K, which is a fairly old chip at this point, but I'm hanging on to it as long as I can because of obvious reasons related to AI. The container itself, measured by Unraid, so the actual usage it's contributing on the server, is about 1% CPU usage. So it's hardly contributing anything to my server's load at all whatsoever. Also keep in mind, this works completely with tuner sharing, like perfectly. So, if you're watching one show on one channel and tune it on another device and it's the same channel, it'll just share the same stream. It's not going to transcode twice.

The other thing is, how many lines do you really have? I personally have three connections. That's all I need. I'm not going to be streaming and transcoding more than three things at a time. So, roughly, I don't know how much CPU that would use, but it's not going to be that much. That's on my very old 2021-era chip at this point. Using the integrated graphics too.

2 Likes

Thanks a lot for the very detailed explanation.

It's very clear to me now why you decided to add transcoding, and I understand it's optional.

You have convinced me to use it. :slightly_smiling_face:

I will try it with and without transcoding to see the difference. Maybe I'll never need transcoding but it's worth the try.

Very great work. It sounds like you put a lot of work into it so the least I can do is try it.

1 Like

Thank you, and I really suggest you go through the README if you get a chance. I know it's super long, and you might want to even point Claude at it so it can condense it for you, because it's I just made it really detailed. But I try to explain everything and the reasons for it, and that too, as well, including how things work and when they work, and when things kick in and when they don't kick in, for example. There are a couple of tables in there that tell you, like, hey, this works only when it's HLS, and this only works when it's TS, like that sort of stuff. Also, just explains like the whole, like getting started and the whole workflow and everything. So it's a little bit easier to start with it instead of just trying to figure it out on your own. Although I tried to make it very simple to use.

I appreciate you giving the transcoding a shot and giving it a chance. I'm promising you it does help if your provider is a little shaky. And I don't know how your provider can't be a little shaky, because I did a lot of research on providers and I have one of the top providers out there, if not like it's literally in the top two of every list of providers. And I have a private reseller and a private domain. And despite those things, it's still a little shaky. I even went so far as to get a VPN with a static IP. It resolved the IP address of the domain it was given, did a traceroute to it, figured out the city it terminates in, and made sure my static IP and VPN are in that city. So when it crosses the Atlantic to that place that I'm not going to mention, it's a hop away, like literally a millisecond away once it gets there from the actual server I'm hitting. Even with that optimal route, a really good VPN provider, I still get random errors when just the servers are busy, I guess. I think this will happen regardless. From what I was reading online, it happens with pretty much every provider. There is no provider that's perfect. Everyone has errors. Everything goes down, or stutters, or buffers, or something like that. Anyone who says their service is buffer free is lying to you. I would actually say those are the services you should avoid, because they're more likely to be scams than anything else.

I got 5 connections to use lol

Also maybe a feature request, I got event channels that don't have guide data but it does have the time and the match info in the channel name. Any plans to create a dummy guide for that using that data? I can use epg3r for SOME of that but it doesn't work for other event feeds (ie. PPV).

While I appreciate the idea. The intent behind this isn't pay-per-view content or anything pre-recorded. It's mainly meant for live TV regular cable channels, etc. Like the initial impetus for this was to get better guide data from my IPTV provider and use channels for that. And as I was using it, I realized, "Hey, this sucks. My feed keeps crapping out." And it just kind of built on top of that. So, probably not something I would want to implement. If it's the sort of thing that you have the skill set to implement, although I don't have pull requests open, you're more than welcome to make a quick fork of my repo, flesh out the code for it, get it working really quick, and I would be happy to then merge it in. I don't know if you have an AI account for any provider like Claude or something like that, but I have three very useful files in there that will help any AI model figure out everything, including the things that didn't work while building this:

  • History.md is extremely long and basically explains the entire history of the project, everything that didn't work, everything that worked, all the lessons learned over hours and hours.
  • The regular Claude.md that just gives a summary of the project.
  • An agents.md file that just explains the structure of things to any new agent looking at it.

So, if you want, it's very, very clean Python, just a couple of files for the most part, and then just the browser code, like the CSS and JavaScript and all that. Really, if you point an agent at my repo, like fork it on GitHub, obviously, and just let AI hammer away at your feature, it'll probably get it right based on what I have in there if you point it at those files too. And then I'd be happy to add it if you can just tell me it works.

The reason why I don't want to implement it myself is it's just not something I would use, and I don't want to own something that I wouldn't use and can't ensure works perfectly. Also, as I explained earlier, I just don't have the energy to implement feature requests. I mainly at this point have decided just for my own well-being, I'm building things for me. I actually almost quit using Channels a couple of times within the last month just because of all the different projects I was working on. I was feeling overwhelmed, burnt out, and I just wanted to relax and watch TV. So at this point, anything I work on is going to be something I'm interested in and it's going to be solving a problem I have for me or AH4C, which I'm passionate about. I have a real soft spot for that project and will continue to contribute to it.

So, if I share anything that it worked on, it's at the intent that there's no support implied or that I'm going to be able to do anything for anyone.It's more of just like I want people to have what I build because I think if I build something useful, others may benefit. Like, just for my own health and well-being, it's really hard for me to take on feature requests and stuff, especially when it's not something that I know much about. However, I'm more than happy, even though I have pull requests closed just because random people will open them, and I have issues closed because I just don't want to hear it. If you want to communicate on here as just fellow community members, and if you want to implement something and send me the repo for it, I'd be happy to add it if it works.

2 Likes

Understandable, I still got other options for that front anyways that works so its no big deal

1 Like

conbine this product and m3u-editor, you can have a really nice set of toos.
I'm a big channels users myself with a bunchof stuff connected through SLM.
Looks like a great product. i will grab something and give it a go.

Guys, just wanted to mention I have a proof of concept right now for getting VOD content into channels through coax. My initial thinking is, when you enable a group that has VOD content, I think the ideal solution is for it to kind of go into its own collection that gets automatically updated as the provider adds more content to that group. That way, it's kind of like separated out from the rest of your content. That's my thinking. I don't know if that's going to work, but I'm testing.

I do know that my initial proof of concept worked, and I was able to pull media in immediately from my own provider into channels, have them appear as movies, TV shows, etc., and play them, including Dolby Vision content, which was pretty awesome.

So, the plan for this, honestly, due to the variances in format and a lot of the content in certain providers being extremely high quality, I don't plan on transcoding any of it. My actual thinking is to proxy it directly to channels rather than even passing through any sort of remux at all. So, obviously, if it buffers, it's kind of on the provider. But I don't see a way around it because, obviously, for this sort of stuff, I want to preserve original quality compared to broadcast TV, where it's less important. Also, I would imagine for most cases, VOD content is sitting on a server somewhere, not being streamed live, sort of thing. So it's a little bit more resilient. I happen to notice that when I pulled up a VOD feed, it immediately had a lot of buffer just natively in channels. So, I just wanted to post a little update here that I'm working on this because I thought it was a little interesting. And once I have something to share, I'll let you guys know.

2 Likes

This looks and sounds great and I appreciate all of your transparency and explanations along the way! My previous experience with other docker containers that involved transcoding unfortunately didn’t perform well at all on my M1 Mac Mini server that’s been performing like a champ in all other regards. As far as I understand it, docker still doesn’t have access to the GPU on Apple Silicon. I’m guessing at workarounds, but am thinking I will try it anyway on an incoming M6 Mac Mini, and will report back.

(post deleted by author)

(post deleted by author)

1 Like

OK, great, with that encouragement, I'll be giving it a shot when the M6 arrives in a few days. It sounds like a well-thought out approach, I'm impressed and inspired. Reminded me of some of the ideas discussed in this other thread earlier this year: A new approach to making IPTV behave more like traditional tuners

Thanks again for sharing your work on this!

(post deleted by author)

1 Like

(post deleted by author)

1 Like

(post deleted by author)