Using OliveTin to Host YouTube Live Channel URLs Based on the Kister Method

I've asked bnhf if he could add support for a "roll your own" style m3u file.
This would be useful for those comfortable creating their own m3u files.
It would look like the Kister method m3u file, but the URI would be the youtube live stream website url, instead of the Kister method https://kister.net/mpl/yt2m3u8?w=

This was just added to OliveTin for Channels 2025.01.02

Using his first post example

My new "roll your own" version looks like this

#EXTM3U
#EXTINF:-1 channel-id="KittenAcademy" channel-number="1234" tvg-name="Kitten Academy" tvc-guide-placeholders="3600" tvc-guide-title="Kitten Academy Live Stream" tvc-guide-description="If there is nothing going on, you can rewind the stream up to 12 hours to see action. If you want to chat with us and the other viewers, there's a 24/7 Discord chat" tvc-guide-art="https://i.ytimg.com/vi/R7vrbiDi0Tc/maxresdefault.jpg?v=d780" tvg-logo="https://i.ytimg.com/vi/R7vrbiDi0Tc/maxresdefault.jpg?v=d780",Kitten Academy
https://www.youtube.com/@KittenAcademy/live

For this example

My new "roll your own" version looks like this

#EXTM3U
#EXTINF:-1 channel-id="AlJazeeraEnglish" channel-number="1235" tvg-name="Al Jazeera English" tvc-guide-placeholders="3600" tvc-guide-title="Al Jazeera English | Live" tvc-guide-description="Stay Informed: Watch Al Jazeera English Live" tvc-guide-art="https://i.ytimg.com/vi/gCNeDWCI0vo/maxresdefault.jpg?v=640a78c8" tvg-logo="https://i.ytimg.com/vi/gCNeDWCI0vo/maxresdefault.jpg?v=640a78c8",Al Jazeera English
https://www.youtube.com/watch?v=gCNeDWCI0vo
1 Like

Still unable to play YouTube Live channels, even with OliveTin. I have used Kister Method for months for YouTube with no issues. Am having same issues, as others here. Any help is appreciated!

Installed OliveTin and created m3u using both Kister format and "roll your own" examples (Kitten Academy and AlJazeera). Still getting errors when trying to play any of them in ChannelsDVR. However, I added a "non-YouTube" Internet streaming link to the OliveTin m3u, and this stream plays fine. So, I believe the OliveTin install is good. Just appears to be a YouTube issue.

Kister format error: "Remux starting" and just spins.
"Roll your own" format error: "The media could not be loaded, either because the server or network failed, or because the format is not supported."

Troubleshooting I have tried:

The m3u YouTube channels play fine using VLC, so doubt router is blocking anything.
ChannelsDVR/OliveTin both on a Synology NAS. Firewall is disabled.
The m3u using OliveTin works fine with "non-YouTube Internet stream".
Disabled old Kister sources and did "Delete and Recreate Database".

Here is my m3u:

#EXTM3U
#EXTINF:-1 channel-id="yt2m3u8-@KittenAcademy" channel-number="0.1000" tvc-guide-art="https://i.ytimg.com/vi/R7vrbiDi0Tc/maxresdefault.jpg?v=d780" tvc-guide-description="If there is nothing going on, you can rewind the stream up to 12 hours to see action. --  -- Is there something we should know about? Do you have a question for us? Email us at headmaster@kitten.academy. If you want to chat with us and the other viewers, there's a 24/7 Discord chat accessible to our suppo" tvc-guide-placeholders="false" tvc-guide-title="Kitten Academy Live Stream" tvg-logo="https://i.ytimg.com/vi/R7vrbiDi0Tc/maxresdefault.jpg?v=d780" tvg-name="Kitten Academy",Kitten Academy
https://kister.net/mpl/yt2m3u8?w=@KittenAcademy

#EXTINF:-1 channel-id="KittenAcademy" channel-number="1234" tvg-name="Kitten Academy" tvc-guide-placeholders="3600" tvc-guide-title="Kitten Academy Live Stream" tvc-guide-description="If there is nothing going on, you can rewind the stream up to 12 hours to see action. If you want to chat with us and the other viewers, there's a 24/7 Discord chat" tvc-guide-art="https://i.ytimg.com/vi/R7vrbiDi0Tc/maxresdefault.jpg?v=d780" tvg-logo="https://i.ytimg.com/vi/R7vrbiDi0Tc/maxresdefault.jpg?v=d780",Kitten Academy
https://www.youtube.com/@KittenAcademy/live

#EXTINF:-1 channel-id="yt2m3u8-gCNeDWCI0vo" channel-number="0.1001" tvc-guide-art="https://i.ytimg.com/vi/gCNeDWCI0vo/maxresdefault.jpg?v=640a78c8" tvc-guide-description="Stay Informed: Watch Al Jazeera English Live: @Al Jazeera English,  we focus on people and events that affect people's lives. We bring topics to light that often go under-reported, listening to all sides of the story and giving a 'voice to the voiceless'. -- Reaching more than 270 million households in" tvc-guide-placeholders="false" tvc-guide-title="?? Al Jazeera English | Live" tvg-logo="https://i.ytimg.com/vi/gCNeDWCI0vo/maxresdefault.jpg?v=640a78c8" tvg-name="Al Jazeera English",Al Jazeera English
https://kister.net/mpl/yt2m3u8?w=gCNeDWCI0vo

#EXTINF:-1 channel-id="AlJazeeraEnglish" channel-number="1235" tvg-name="Al Jazeera English" tvc-guide-placeholders="3600" tvc-guide-title="Al Jazeera English | Live" tvc-guide-description="Stay Informed: Watch Al Jazeera English Live" tvc-guide-art="https://i.ytimg.com/vi/gCNeDWCI0vo/maxresdefault.jpg?v=640a78c8" tvg-logo="https://i.ytimg.com/vi/gCNeDWCI0vo/maxresdefault.jpg?v=640a78c8",Al Jazeera English
https://www.youtube.com/watch?v=gCNeDWCI0vo
1 Like

What version of Channels DVR are you running?

What version of OliveTin for Channels are you running?

What is the name of the Channels source you created?

What is the name of your m3u file?

What does this mean?

What version of Channels DVR are you running? 2025.01.03.0234

What version of OliveTin for Channels are you running? 3.9

What is the name of the Channels source you created? YouTubeLive

What is the name of your m3u file? YouTubeLive.m3u

More explanation about the "non-YouTube Internet stream": I tested adding code with a stream "not hosted on YouTube" (but from another website) to the "YouTubeLive.m3u". This stream works fine with ChannelsDVR accessing it through OliveTin. The only streams not working are the ones hosted on YouTube.

You are either looking in the wrong place for it (compose?) or are running the wrong OliveTin.

What does your m3u file look like right now, after OliveTin for Channels has processed it?
For the lines that begin with this, paste only the part I'm showing and delete everything after what I'm showing when you paste it here (your Internet IP address is in there further to the right)
https://manifest.googlevideo.com/api/manifest/hls_variant/expire/1735962591/

1 Like

Sorry, I was looking at the Docker compose file Version.

OliveTin version: 2025.01.02

And your m3u file now looks like what

Just copy your Source URL


and paste it in your browser, which should prompt you to download the file YouTubeLive.m3u.
Then open that file in a text editor and copy/paste it here.

1 Like

When I run the URL updater now, I am seeing some errors. I think I am going to reinstall OliveTin. I will keep you updated. Thanks for the quick replies!

If you're running it on a Synology, make sure you're using HOST_DIR=/volume1/docker in your OliveTin for Channels Portainer stack. See this topic OliveTin for Channels - cannot access static file server - #29 by cyoungers

All 4 YouTube channels work now! Recreating OliveTin Portainer stack fixed the issue.

One tip for others using Synology NAS: Paths are case sensitive! It took me a while to figure out I had typed "docker" as "Docker". It should be exactly as chDVRuser says: HOST_DIR=/volume1/docker

Thanks @chDVRuser and @bnhf for the great tool, and for creating a way to integrate YouTube channels again!!

2 Likes

Anybody running into problems with the m3u expiring in channels? For the last couple of days I’ve been getting error 503 in channels when trying to tune. The solution appears to be to reload the m3u in channels source and it will work for awhile. Sometimes one of the streams will work and the other will get an error 503 but both will eventually stop working with a 503. Here is some info on setup.

Ubuntu desktop running docker/portainer/olivetin on one machine and channels dvr on different Ubuntu desktop machine.

Olivetin version 03Jan25_23:04
Channels dvr version 2024.12.27.0121
Channels log:


2025/01/04 20:57:24.412149 [ERR] Could not start stream for M3U-YouTubeLive ch6401 Starship Live: M3U: Could not fetch playlist from manifest.googlevideo.com: GET: https://manifest.googlevideo.com/api/manifest/hls_variant/expire/1736024699/ei/G055Z-C1HIuDy_sPmoPxwQg/ip/redacted/id/mhJRzQsLZGg.11/source/yt_live_broadcast/requiressl/yes/xpc/EgVo2aDSNQ%3D%3D/hfr/1/playlist_duration/30/manifest_duration/30/maudio/1/spc/x-caUJEb0eHPeTaK-KUlBqPPd_mAKtL-KGQ6GzaLdPUmeBDeJ3dMJUbguSq82oUm_jIedjk/vprv/1/go/1/rqh/5/pacing/0/nvgoi/1/keepalive/yes/fexp/51326932%2C51335594%2C51355912%2C51371294/dover/11/itag/0/playlist_type/DVR/sparams/expire%2Cei%2Cip%2Cid%2Csource%2Crequiressl%2Cxpc%2Chfr%2Cplaylist_duration%2Cmanifest_duration%2Cmaudio%2Cspc%2Cvprv%2Cgo%2Crqh%2Citag%2Cplaylist_type/sig/AJfQdSswRAIgX9MJo7dEVONIvgWv6fvWfFUb0bYatAbN-BQHcIFAqU8CIB5lBmqPNVHnaYSC86Xg5-Q8ucJKvXMGlJ1qX8Zd7N2k/file/index.m3u8: 403 Forbidden 
2025/01/04 20:57:37.399009 [ERR] Could not start stream for M3U-YouTubeLive ch6402 Sky News: M3U: Could not fetch playlist from manifest.googlevideo.com: GET: https://manifest.googlevideo.com/api/manifest/hls_variant/expire/1736024700/ei/HE55Z4_bC-7Cy_sPiq-p2A8/ip/redacted/id/I5d_iiiXXgk.1/source/yt_live_broadcast/requiressl/yes/xpc/EgVo2aDSNQ%3D%3D/hfr/1/playlist_duration/30/manifest_duration/30/maudio/1/gcr/us/spc/x-caUE316XbnNQQ4lLIWzt2mzd0X3iz3fwbDEa283rDznEPbZt1kqIyRAGhQPGqY2crKWf4/vprv/1/go/1/rqh/5/pacing/0/nvgoi/1/keepalive/yes/fexp/51326932%2C51335594%2C51355912%2C51371294/dover/11/itag/0/playlist_type/DVR/sparams/expire%2Cei%2Cip%2Cid%2Csource%2Crequiressl%2Cxpc%2Chfr%2Cplaylist_duration%2Cmanifest_duration%2Cmaudio%2Cgcr%2Cspc%2Cvprv%2Cgo%2Crqh%2Citag%2Cplaylist_type/sig/AJfQdSswRgIhAPxkxg5X4youUgDhNI1sIC62JfgJFr4Ify6XdD6ic-kyAiEA5sqa_vHGrDaMA2_uQbds71SlAbHjpdyxhCBRVR5gzC4%3D/file/index.m3u8: 403 Forbidden 
2025/01/04 21:01:15.238461 [M3U] Refreshed lineup for YouTubeLive with 2 channels
2025/01/04 21:01:50.545478 [M3U] stream timestamps: space6401: start_at=2025-01-04T21:01:16-06:00 end_at=2025-01-04T21:01:44-06:00 live_delay=4.539478198s
2025/01/04 21:01:50.545508 [TNR] Opened connection to M3U-YouTubeLive for ch6401 Starship Live
2025/01/04 21:01:56.263127 [SNR] Rewriter statistics for 192.168.1.149 (Upstairs Apple TV) for ch6401 Starship Live: discontinuity_detected=0 transport_errors=0 saw_pcr=false saw_pmt=true highest_pts=10.000000
2025/01/04 21:01:56.263208 [SNR] Buffer statistics for 192.168.1.149 (Upstairs Apple TV) for ch6401 Starship Live: buf=0% drop=0%
2025/01/04 21:01:56.263275 [SNR] Streaming statistics for 192.168.1.149 (Upstairs Apple TV) for ch6401 Starship Live: timeouts=0 segment_timeouts=0 playlist_timeouts=0
2025/01/04 21:01:56.270362 [TNR] Closed connection to M3U-YouTubeLive for ch6401 Starship Live
2025/01/04 21:01:57.572784 [M3U] stream timestamps: yt2m3u8-@SkyNews: start_at=2025-01-04T21:01:25-06:00 end_at=2025-01-04T21:01:50-06:00 live_delay=2.526783101s
2025/01/04 21:01:57.572834 [TNR] Opened connection to M3U-YouTubeLive for ch6402 Sky News
2025/01/04 21:02:07.239935 [SNR] Rewriter statistics for 192.168.1.149 (Upstairs Apple TV) for ch6402 Sky News: discontinuity_detected=0 transport_errors=0 saw_pcr=false saw_pmt=true highest_pts=20.000000

As you can see both started working after a simple reload m3u from within channels.

m3u file:


#EXTM3U
#EXTINF:-1 channel-id="space6401" channel-number="6401" tvc-guide-art="https://ih1.redbubble.net/image.2847364920.7154/bg,f8f8f8-flat,750x,075,f-pad,750x1000,f8f8f8.jpg" tvg-logo="https://ih1.redbubble.net/image.2980715224.0769/flat,750x,075,f-pad,750x1000,f8f8f8.jpg" tvc-guide-description="Starship is SpaceX's fully reusable launch system which is being developed at Starbase in Cameron County, Texas. Starbase LIVE provides 24/7 coverage of the exciting developments and testing progress." tvc-guide-placeholders="7200" tvc-guide-title="Starship Development from SpaceX.” tvc-guide-art="https://ih1.redbubble.net/image.2847364920.7154/bg,f8f8f8-flat,750x,075,f-pad,750x1000,f8f8f8.jpg" tvg-name="Starship Development from SpaceX’s Boca Chica Facility in Texas.",Starship Live
# yt-source=https://www.youtube.com/watch?v=mhJRzQsLZGg
https://manifest.googlevideo.com/api/manifest/hls_variant/expire/1736060703/ei/v9p5Z_-CEu200_wP2Kuq6QM/ip/redacted/id/mhJRzQsLZGg.11/source/yt_live_broadcast/requiressl/yes/xpc/EgVo2aDSNQ%3D%3D/hfr/1/playlist_duration/30/manifest_duration/30/maudio/1/spc/x-caUCf_hCrIxi706lbgZAMa4iL9YN0wrIktrvD7lXf1eEQeeyoEeoa7bSf3XM4zUduQMlM/vprv/1/go/1/rqh/5/pacing/0/nvgoi/1/keepalive/yes/fexp/51326932%2C51335594%2C51355912%2C51371294/dover/11/itag/0/playlist_type/DVR/sparams/expire%2Cei%2Cip%2Cid%2Csource%2Crequiressl%2Cxpc%2Chfr%2Cplaylist_duration%2Cmanifest_duration%2Cmaudio%2Cspc%2Cvprv%2Cgo%2Crqh%2Citag%2Cplaylist_type/sig/AJfQdSswRQIgYPQyH0CP8p8xsQ7uBIOoo4E81vSK3dWBmHCXd4dRon0CIQD6Gv8_GlZfqEcg4k-2rzGUuWhTz5_U6kndsT1gR8FJ0A%3D%3D/file/index.m3u8

#EXTINF:-1 channel-id="yt2m3u8-@SkyNews" channel-number="6402" tvc-guide-art="https://i.ytimg.com/vi/YDvsBbKfLPA/maxresdefault.jpg?v=67582ebf" tvc-guide-description="Watch Sky News live: Santa Tracker began with a child's accidental phone call to a secret US air force number ahe rest is Christmas history; The UK's oldest man has celebrated his 110th birthday with a special performance from opera singer Alfie Boe at his care home in Derbyshire; and good (and bad)" tvc-guide-placeholders="7200" tvc-guide-title="Watch Sky News" tvg-logo="https://i.ytimg.com/vi/YDvsBbKfLPA/maxresdefault.jpg?v=67582ebf" tvg-name="Sky News",Sky News
# yt-source=https://www.youtube.com/@SkyNews/live
https://manifest.googlevideo.com/api/manifest/hls_variant/expire/1736060703/ei/v9p5Z_uRO_2Fy_sP1vbq6Ak/ip/redacted/id/YDvsBbKfLPA.1/source/yt_live_broadcast/requiressl/yes/xpc/EgVo2aDSNQ%3D%3D/hfr/1/playlist_duration/30/manifest_duration/30/maudio/1/gcr/us/spc/x-caUIqQdmCpQOAaux75A9IHzJbe0O34FrQcH-BKFtMwv67OIBBbxb7XCHnlLm5813NvC60/vprv/1/go/1/rqh/5/pacing/0/nvgoi/1/keepalive/yes/fexp/51326932%2C51335594%2C51353497%2C51355912%2C51371294/dover/11/itag/0/playlist_type/DVR/sparams/expire%2Cei%2Cip%2Cid%2Csource%2Crequiressl%2Cxpc%2Chfr%2Cplaylist_duration%2Cmanifest_duration%2Cmaudio%2Cgcr%2Cspc%2Cvprv%2Cgo%2Crqh%2Citag%2Cplaylist_type/sig/AJfQdSswRQIhAKiOi-bSsNrbJpj0jYMx8S1aFJCZ6pI7MAFuwWTutshBAiB6Y-cv5woZXA5yjVeIa9cq5-6zNPunbJH4l3XvI1tk-w%3D%3D/file/index.m3u8

@chDVRuser any ideas?

It appears that Channels DVR isn't refreshing the source playlist URL.
What Manifest URL update interval frequency did you set for the background action?

Check the Channel DVR log for this
[M3U] Refreshed lineup for YouTubeLive
Should be happening every 5 hours if that's what you set.

Where can I set it to 5 hours?
This is what I’m seeing

In the OliveTin for Channels Action

Within the Olivetin action Manifest URL update interval (followed by m for minutes or h for hours). 0 to kill existing background process.
that is set to 5 hours.

What do you see in the DVR log?

OliveTin should be sending the command every 5 hours to the Channels DVR server you selected for the action to refresh the source playlist URL.

It appears it is only happening once a day at 9:00ish on the machine that runs channels on a different machine. There are others in the logs but I think those are refreshes I initiated to get the channels to work.

I also have a dvr server on the same machine as Olivetin and that dvr is showing the proper m3u refresh every 5 hours.

I was unaware it was calling the dvr to update the playlist. I’m wondering if I accidentally have 2 actions running in Olivetin for the two different servers. I’ll run kill on both dvr’s ip’s in the Olivetin action and restart the action on the dvr im having issues with. I’ll update tomorrow after it has some refresh’s.

I definitely had the action running for both dvr servers. I had to kill the action for both ip’s. It seems Olivetin can’t do two at once.

@bnhf said he only supports one of these per server.
If you have two actions running, one for each server, and it's not working, he'll have to check his code.
It's 4:30 AM bnhf time, so he should see this in a few hours.
I would think if you set the server ip:port for one server and then do the action again with the server ip:port for the other server, that it should work.

That would be the daily refresh Channels does during the morning guide refresh.