Coax: No longer public

No longer building tooling for CVDR kindly lock post. Thank you.

4 Likes

This comment is reserved.

Looks awesome. This appears like it's in the same space that Dispatcharr is I believe? I've got too much time invested in setting it up to start swapping out immediately, but may download and start doing some testing to see if it's easier to manage long term.

I'm liking m3u-editor.
Tried dispatcher when it first started and it was a hard pass.
m3u-editor does great with on-demand material plus it works great with Stream Link manager.
got to have a good go-between with all these projects.

(post deleted by author)

2 Likes

Can you go into detail about this?

1 Like

(post deleted by author)

so it's always transcoding EVERY stream?

What does this mean if the provider is using mpeg-ts?

2 Likes

It's optional, but it's recommended to transcode each stream on one's GPU. I'm finding using Intel Quick Sync, it's extremely lightweight. Also, have a bit of an older chip, a 12700K, and it's holding up just fine doing 1080p60. Took a lot of time to figure out the best route, and it just ended up being that transcoding to smooth things over was the best route. So, I would imagine, although I only have one provider, that most providers give an HLS option or serve HLS. But if one were to have a provider that did not serve content as HLS and only provided MPEG TS streams to their users, then you would choose that option, of course, when setting up the provider. And just some of the functionality is reduced because of the limitations of MPEG TS over HLS. It's really meant to be a fallback because it does degrade the experience in terms of recovery and buffering. Really, I just kind of included it there for completeness. Really, one should choose HLS, and I would assume that would be fine. The whole point of transcoding is to allow that buffer to refill itself because having control over the actual feed makes the slight 3% slowdown and pitch adjustment possible. The other key point in terms of transcoding is when falling over to a backup feed that one selects when something breaks with the feed you are currently on, for example. If that feed is slightly off in terms of frame rate, like one is 29.97 FPS and the other one is 59.94 FPS, for example, there will be a bit of a stutter when switching. But since we're Transcoding everything, it just switches nearly seamlessly.

Naturally, it can be switched off. It's actually off by default, and it's recommended that one chooses a profile. And in the Docker Compose, it's very carefully explained how to turn it on. The yaml commented pretty well. At least I did my best to explain how to enable it on most systems.

FYI just pushed an update with some fixes. I am keeping a running changelog in the OP. Commit messages on GH are more informative of couse.

Link is in the post. I don't know what you mean. I don't know what you are doing with VLC. That is not the purpose of the tool. This is meant as a playlist manager and buffering proxy for Channels only. Please review the readme and that should explain your questions. Lastly everything I build in build for my own use and needs. I don't have the time or stamina mentally or physically to implement suggestions besides actual bug fixes. What you see is what you get. I made sure I documented every single feature and how to get set up.

In my original post here and in CONTRIBUTING.md I explain that this project is open for forking, remix and modifications under the terms of the MIT license. Unfortunately I must do this as in the past I have had to force myself to stop projects and close the repos due to incessent feature requests and support that was harmful for my own mental health hence the reasoning for a different approach with this tool. I don't mean to be disrespectful in anyway. This is the only way I can share my work while maintaining my personal well-being.

Again please don't take this reply as curt or disrespectful I just don't have much ability to provide support beyond providing documentation.

OK. thanks for the reply.

2 Likes

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.