New Project: Webcam Resolver

I've released a new project that I've been using personally to get the URLs for some web cams.

As any seasoned Custom Channels fan knows, a lot of hosted web cams and other streams use rotating URLs so that people can't link to them permanently. The problem with those URLs is, you can't use them for Custom Channels streams because they eventually become unavailable.

Webcam Resolver will fetch the real URLs for you and redirect to that URL, allowing you to use it as a proxy for the stream URLs of your Custom Channels.


This this will redirect to the real stream URL of the Avon cam hosted by Surfchex. Its original url is:

Webcam Resolver looks up, finds, and redirects the response to this streaming URL, allowing you to replace the streaming URL in your Custom Channel, with the URL to Webcam Resolver.

So you would use as the streaming URL of your Custom Channel


Right now the only providers supported are:

  • Surfchex
  • IPCamLive

Check it out

The project is deployed as a simple Docker image. Installations instructions as well as more documentation can be found in the README.


Any chance we could get support for

I can check it out. Can you give me a couple example URLs?

can we have a way of getting stream URLS from websites to where we can see if it able to be even used?
I want to find player URLS inside of webpages.

There are tons of browser plugins that will do that for you.

This project is not that.

Thanks very much.

After looking into it more, I'm not sure if this is the right tool for it, I'll probably have to end up going with cc4c.

Here is what I was trying to add in.

Inspecting it gives this as the m3u8 (at the time of this post)

The token part of the link changes, and I guess it's part of their technology that " Prevent others from embedding your stream to their website"

Here's a bunch of other livecams that are run through this service

I see the same thing for Elk Mountain’s web cams from Webcams - Elk Mountain

They are at (link is here in Markdown for shortening)


(another link in markdown for shortening)

Those addresses stay the same, but the m3u8 links change regularly. At present, one of them is

I’ve noticed a few ski areas have these links.

This is exactly what this project is for, to take a normal url, then pull in the markup and try to fetch the m3u8 url based on the markup.

In the small amount of introspection I did, I couldn't find an obvious way to fetch it though.

If anyone can find a good manual way of doing it and document it, that I could reproduce, I could probably add it as an option in Webcam Resolver.


I have a manual workflow I've been using to update those two Elk Mountain webcams in Channels on days I might want to check in.

My process on the iPad might be more helpful than my Mac process:

  • The first two webcams also have permanent, unchanging links here and here.

  • I go to one of those two links, and View Source (using a bookmarklet I've set up in Safari on the iPad). In the source code, I find the long m3u8 URL that starts with "". I copy that and paste that into my Channels source.

On Safari on the Mac, it's even easier — I go to Webcams - Elk Mountain, right click on one of the webcam images (one of the first two — for some reason, the third one is flaky, but that might be user error), and copy the video URL. (I presume my ability to copy the video URL is native to Safari, but it's possible it's due to some extension I added at some point).

With both the iPad and Mac, after I paste into the Source in the Channels server, it looks like this:

#EXTINF:-1 channel-id="elk1" channel-number="5001" tvg-logo="" tvg-name="elk1" tvc-guide-title="Elk Mtn Lodge" tvc-guide-description="A view from the base of Elk Mountain Ski Resort, Uniondale, Pennsylvania" tvc-guide-art="",Elk Mountain Base

The very last URL in the above source is an example of what I copied from Safari. That's the part that changes from time to time.

That's great. Those seem to be the iframe URLs though. What would be best is if we could get the URL you saved, via the simple URL most people visit for the cams. That's sort of the promise of the project and how it works for the other providers.

If I understand what you are saying, most people go to Webcams - Elk Mountain to see the cams.

That's different. I meant the url that cams usually live at per the provider, like the examples at the top. I was specifically talking about the click2stream mentioned.


I could be wrong, but I think these ski resort cams don't go to a publicly-available service, but they are appliance devices, and as part of the package they get a web-facing URL the resort can share, but there is no aggregator. Aside from the two embed links above, which don't change, and the two m3u8 URLs, I'm not aware of any other URLs, unfortunately.

Looks like TvLand and CMT TVE are no longer working.
I know the Resolver is not meant for the TvLand situation I describe below (but could??)
If you sniff the TvLand m3u after a proper provider logon it will play in VLC, and pbly CDVR, but only for a few seconds.
(h ttps://
Seems like this "Resolver" is meant to refresh a changing m3u as is happening here,
BUT, if the m3u changes every few seconds how would this resolver keep up with that??
seems like the Custom Channel would have to continuously call the Resolver non stop.
I know the Resolver is not meant for the TvLand situation
but even for a webcam how does it keep up with a continously changing m3u?
Sorry if this is a dumb question, I'm learning.

This is absolutely outside the scope of this project.

While the approach might be along the same lines, the point of this project is for providing m3u8 URLs for hosted web cams of a select few providers.

Please open a new thread to discuss that.

Thanks for the reply.

These hosted webcams have patterns for hiding the URLs. Webcam Resolver just uses those patterns to grab the real streaming URL.

So it the webcam m3u changes every two hours
you would set the Custom Channel to refresh every two hours, something like that.
But every 5 seconds... impossible.

No, it happens on demand. You set your custom channel to the url specified in the documentation.

When Channels tries to stream the channel, it hits Webcam Reaolver, which figures out the url, and then redirects to the correct streaming url.