Chrome HDMI for Channels (CH4C): Chrome channel tuner plus HDMI encoder

I’ve created a proof of concept that pairs Chrome channel tuning with an HDMI encoder, enabling Channels to record any URL at 1080p / 60fps.

See the GitHub README for screenshots and setup instructions

This borrows heavily from Chrome Capture for Channels and Android HDMI for Channels. If you’re familiar with CC4C, think of this as a similar idea but offloading the encode to another device. If you’re familiar with AH4C, think of this as a similar idea but using a Chrome browser as the input instead of a streaming stick.

This is a proof of concept, not a fully developed executable, so proceed at your own risk. And please do share thoughts / feedback / pull requests.

3 Likes

This sounds like something I do with the TVbro app on the android devices and adbtuner. This is the way I pipe in TNF games from twitch. Set the user agent to Chrome (Desktop) and use set the url to the twitch stream with /popout in the end and voila.

Great work @Parkside! I really like the concept of offloading the browser stream encoding to an external encoder (via a standard Windows or Linux server). My (relatively low-power N95 Windows) Channels server can handle the web-based streaming and all the other DVR-related activities in parallel without issue.

I created a fork to add support for Sling TV and Google Photo Albums support and also added some error handling and input parameter options. I was able to create a Windows exe as well. I didn't re-test your previous NFL network and Disney streaming or instant recording capabilities, but I'm hopeful they're still functional.

I think there's now an opportunity to merge the remainder of the chrome-capture-for-channels functionality in here i.e. to run using the local gpu to encode if no external encoder is specified.

2 Likes

Amazing work @dravenst ! And I agree with your concept of integrating this approach into the CC4C code base as an optional implementation.

Minor FYI, the only work I attempted on this since posting was a re-write in Deno instead of Node. Overall I really liked Deno, but I found that the puppeteer package in Deno didn't behave at all. So it's likely best to stay in Node, or any other language that has high confidence Puppeteer performance.

I would try bun

I added support for multiple encoders now. I tested it with the Link Pi ENC1-V3 on two concurrent streams and it works pretty well. Redirecting the browser sound to the proper encoder input was a bit challenging to deal with so I'm not sure if the method will work with all the streaming sites but I did test with Sling TV.