There's been a ton of progress in the background of the next generation of controls for Video Groups (and other Channels DVR overrides for Movies and TV Shows). You can see current progress here:
Getting very close! Here's a preview...
-
In
Add Programs, there are a number of changes, including the new "Import Playlist" button: -
When filling in the correct fields and allowed values, the Playlist is imported as a new Video Group with the correct name and some other settings to make it more YouTube-like when its in Channels:
-
Each individual video is added, as well, with all of their details like title, description, image, and duration:
At this point, you could either edit everything to your heart's content or finish up by closing out (or closing out while also generating the Stream Files).
-
Once refreshed to Channels, the playlist is available as any other Video Group with all of those details that had been exported from YouTube and imported into SLM:
Up next will be getting Search Videos to completely work!
A little preview of what's coming...
Just the same as with Movies and TV Shows, users will be able to search for and bookmark Videos and Video Channels. A prior release made this partially available through the manual component, but now these act just the same as anything else within the SLM search and select capabilities. An overview of various parts can be seen in the Wiki:
- Searching for and bookmarking Videos and Video Channels
- Importing Playlists from YouTube
- Managing subscribed Video Channels
- Managing Videos en mass (For instance, moving several Videos from one Video Group [Playlist] to another).
Beyond these core items, a number of other components have been created to support this functionality. Most notably, users will be able to override certain fields in Channels DVR, including information related to titles, descriptions, images, duration, and more. This includes the ability to import these details (metadata) for 'SLM Stream' videos directly from the source (including release dates), getting the necessary values. A more complete explanation can be found on the Wiki pages:
Beta testing is underway, so look forward to this soon!
See:
Looking forward to a resolution on this since my client is AppleTV.
Hmm. Yeah this would be awesome on my AppleTVs. Been wishing for something similar for years. Just spitballing here, if tvOS Channels can't open it, is there some way that it could punt the stream over to the Infuse app, which can?
???
Just point your media server (JF, Emby, Plex) to the Channels import directory and connect that with infuse. Thats what I did
Is there a way to capture the logs for Infuse when you are playing a SLM Stream STRM? I am 90% certain why it's working there, but I'm curious to confirm it. Specifically, there would be something like [demux] v: Trying demuxers for level=force. and some stuff from ffmpeg before and after that.
Don't know. I'll try it again tonight with something and take a look
Logs from SLM
2025-09-05 23:13:11.918769: INFO: Starting to retrieve manifest for https://www.youtube.com/watch?v=GtSYAUn2I7I.
[debug] Encodings: locale UTF-8, fs utf-8, pref UTF-8, out missing (logger) (No ANSI), error utf-8 (No ANSI), screen missing (logger) (No ANSI)
[debug] yt-dlp version [email protected] from yt-dlp/yt-dlp [5c8bcfdbc] API
[debug] params: {'verbose': True, 'no_warnings': False, 'format': 'all', 'retries': 0, 'fragment_retries': 0, 'logger': <__main__.YTDLLogger object at 0x783519c06f60>, 'extractor_args': {'youtube': {'player_client': ['web_safari'], 'formats': ['missing_pot'], 'player_skip': ['configs', 'webpage', 'js'], 'skip': ['dash', 'translated_subs']}}, 'compat_opts': set(), 'http_headers': {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Language': 'en-us,en;q=0.5', 'Sec-Fetch-Mode': 'navigate'}}
[debug] Lazy loading extractors is disabled
[debug] Python 3.12.11 (CPython x86_64 64bit) - Linux-6.14.0-27-generic-x86_64-with-glibc2.41 (OpenSSL 3.5.1 1 Jul 2025, glibc 2.41)
[debug] exe versions: none
[debug] Optional libraries: Cryptodome-3.23.0, brotli-1.1.0, certifi-2025.08.03, mutagen-1.47.0, requests-2.32.5, sqlite3-3.46.1, urllib3-2.5.0, websockets-15.0.1
[debug] Proxy map: {}
[debug] Request Handlers: urllib, requests, websockets
[debug] Plugin directories: none
[debug] Loaded 1840 extractors
2025-09-05 23:13:12.485300: INFO: Extracting info from https://www.youtube.com/watch?v=GtSYAUn2I7I...
[debug] [youtube] [pot] PO Token Providers: none
[debug] [youtube] [pot] PO Token Cache Providers: memory
[debug] [youtube] [pot] PO Token Cache Spec Providers: webpo
[youtube] Extracting URL: https://www.youtube.com/watch?v=GtSYAUn2I7I
[youtube] GtSYAUn2I7I: Downloading initial data API JSON
[youtube] GtSYAUn2I7I: Downloading web safari player API JSON
[WARNING] [youtube] GtSYAUn2I7I: Cannot decrypt nsig without player_url: Some formats may be missing
[WARNING] [youtube] GtSYAUn2I7I: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details
[youtube] GtSYAUn2I7I: Downloading m3u8 information
2025-09-05 23:13:14.226387: INFO: Extraction successful for https://www.youtube.com/watch?v=GtSYAUn2I7I.
2025-09-05 23:13:14.226496: INFO: Found 6 formats.
2025-09-05 23:13:14.226649: INFO: Best format URL found using m3u8: https://manifest.googlevideo.com/api/manifest/hls_playlist/expire/1757149993/ei/yaa7aMyuJvyE0_wPtsuQsAk/ip/172.58.134.219/id/1ad4980149f623b2/itag/94/source/youtube/requiressl/yes/ratebypass/yes/pfa/1/sgoap/clen%3D89008288%3Bdur%3D5499.762%3Bgir%3Dyes%3Bitag%3D140%3Blmt%3D1713693958668579/sgovp/clen%3D507497343%3Bdur%3D5499.701%3Bgir%3Dyes%3Bitag%3D135%3Blmt%3D1713692364031232/rqh/1/hls_chunk_host/rr5---sn-uhvcpax0n5-cvnz.googlevideo.com/xpc/EgVo2aDSNQ%3D%3D/met/1757128393,/mh/ZE/mm/31,29/mn/sn-uhvcpax0n5-cvnz,sn-hp57yns6/ms/au,rdu/mv/m/mvi/5/pcm2cms/yes/pl/23/rms/au,au/initcwndbps/865000/bui/AY1jyLPCtcjwvajMe4Jn_RYTwSo4Pnw8UjT6KRw6IkU9rWj2XS-okZtrjvp_dKB-2-ccVsYKsTgos_BD/spc/l3OVKe5G08ONJwc8n2tOXG9Jx-vV_Z7n44NQSij9L878zdIJFg96BhQkIcuwRxeLqn2HH8uQmqzEQw/vprv/1/playlist_type/CLEAN/dover/11/txp/8219224/mt/1757127960/fvip/1/keepalive/yes/fexp/51355912,51552689,51565116,51565682,51580968/sparams/expire,ei,ip,id,itag,source,requiressl,ratebypass,pfa,sgoap,sgovp,rqh,xpc,bui,spc,vprv,playlist_type/sig/AJfQdSswRAIgQkUNdiee7Xlnyu1b6Hw0MqxO1QjjNBj17BRKyZTSTA8CIGglYof4KDxIeBjfyKC4Bq3Azh5gzGGujQarJTdCSe9z/lsparams/hls_chunk_host,met,mh,mm,mn,ms,mv,mvi,pcm2cms,pl,rms,initcwndbps/lsig/APaTxxMwRgIhAM0xTsfKnsLp6OXSxCl9iJiYWSlfa5sCudPwLJGELkYXAiEA0ezncX7mWyZRg8gXOuLCppCgq0ndpUR9WeZ5NhUxEyc%3D/playlist/index.m3u8
2025-09-05 23:13:19.656500: INFO: Starting to retrieve manifest for https://www.youtube.com/watch?v=GtSYAUn2I7I.
[debug] Encodings: locale UTF-8, fs utf-8, pref UTF-8, out missing (logger) (No ANSI), error utf-8 (No ANSI), screen missing (logger) (No ANSI)
[debug] yt-dlp version [email protected] from yt-dlp/yt-dlp [5c8bcfdbc] API
[debug] params: {'verbose': True, 'no_warnings': False, 'format': 'all', 'retries': 0, 'fragment_retries': 0, 'logger': <__main__.YTDLLogger object at 0x783519c67170>, 'extractor_args': {'youtube': {'player_client': ['web_safari'], 'formats': ['missing_pot'], 'player_skip': ['configs', 'webpage', 'js'], 'skip': ['dash', 'translated_subs']}}, 'compat_opts': set(), 'http_headers': {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Language': 'en-us,en;q=0.5', 'Sec-Fetch-Mode': 'navigate'}}
Strangely enough, Infuse works with strm files AND streamlinks
Actually, I wanted to see logs from Infuse. I know what SLM is up to 
Yeah, when I did a quick search I saw the user requests for functionality there (and with Emby) and linking to Channels articles about them, such as:
I think there's some slight differences in the implementation, but otherwise a pretty good copy job.
Well...I can't get the logs from Infuse so...yeah
Ah well! Like I said, I'm 90% certain I know exactly what is happening and you are spot on with what you said in the other thread about the Channels Devs needings to update and make some changes to FFMPEG (it's what I sent them half a year ago). Was hoping there was something Infuse was showing that I could point the Devs towards so they can make the fix.
Actually, I believe I really narrowed it down to the forced use (or really, lack thereof in the Apple clients compared to the Android clients) of Libavformat, aka lavf, for demuxing.
https://ffmpeg.org/doxygen/3.4/group__libavf.html
For instance, this is what I see on the Android clients:
03-17 19:26:10.185 32497 32539 V mpv : [demux] Trying demuxers for level=force.
03-17 19:26:10.187 32497 32539 D mpv : [demux] Trying demuxer: lavf (force-level: force)
03-17 19:26:10.212 32497 32539 V mpv : [lavf] Found 'hls' at score=100 size=1337.
And this is what happens on the Apple ones:
2025-03-17 14:15:56.458 [u=231.3MB f=1866.6MB] [1.22s] [demux] v: Trying demuxers for level=force.
2025-03-17 14:15:56.466 [u=239.8MB f=1858.2MB] [1.23s] [ffmpeg] error: Not detecting m3u8/hls with non standard extension and non standard mime type
2025-03-17 14:15:56.469 [u=229.8MB f=1868.2MB] [1.23s] [ffmpeg] error: Not detecting m3u8/hls with non standard extension and non standard mime type
2025-03-17 14:15:56.470 [u=229.8MB f=1868.2MB] [1.23s] [lavf] v: No format found, try lowering probescore or forcing the format.
That lack of [demux] Trying demuxer: lavf (force-level: force) seems to be everything. Then again, I know nothing about programming in Apple, so I could be way off base. Still, that is where I'd start!
What I've loved most about Channels DVR, along with SLM, is that it provides one unified interface of new curated content to browse and watch comfortably from the couch without having to bounce around through many apps' screens or maintain multiple queues and watchlists. This has been the "holy grail" for media enthusiasts for a long while and nothing else out there provides such a customizable and personalized interface. And sure, I could use Plex Media Server along with Infuse here, but the idea was that I wanted this particular streaming YouTube content to be indexed, browsable and accessible from the current #1 app in our family, which is Channels.
That said, I understand there's a difference between the ffmpeg on tvOS and whatever is used on AndroidTV, which explains why these links aren't playing on AppleTVs but play fine on Andoid TV's. I'm not sure what it'll take to get fixed, or even if it ever will be fixed, so I'm just brainstorming for workarounds in the meantime so AppleTV users can also take advantage of this great integration and utility that SLM is bringing to the table.
The next idea I had, is inspired by how other AppleTV apps handle external links of this nature, simply as Stream Links. I use News Explorer to follow some RSS feeds. The first time I select a YouTube link, I see this alert:
I click "open" and the video plays via YouTube. When the video's complete I tap back a few times and I'm returned to News Explorer. Just like any working Stream Link.
So then this line of thinking leads to my next feature request. @babsonnexus, can we get a toggle for YouTube subscriptions that allows us to choose whether or not we want the original YouTube link passed through instead, so we AppleTV users can access it as a Stream Link, as opposed to the SLM-ified stream file, that won't play? At least in the meantime.
Because even the parsing of subscriptions and the presentation inside Channels makes it a very worthwhile addition. It helps us to stay focused on the subscriptions we've already chosen and not get distracted by all the other noise presented inside the YouTube app itself.
You can already do this. Just change the Special Action from Make SLM Stream to None and it will become a Stream Link instead of a Stream File.

Assuming a Stream Link with a YouTube address inside is allowed for deep linking, you should be all set!
Great, I’ll check it out when I get home later and will report back. Thanks!
Got it, it's working! I'm playing one MKBHD review now.
I'm curious if it's possible to import the most recent 20 from his whole channel, or if I have to select specific videos and/or specific playlists? Because I've discovered many new videos on this popular channel that aren't assigned to a playlist, but that do appear here: https://www.youtube.com/@mkbhd
For any bookmarked/subscribed Channel, you'll currently get up to the 100 most recent uploads that are public (re: not private or unlisted), with some caveats. Complete details on the Wiki:
And also here:
You'll have to select the videos you want and place them in your own Video Groups / Playlists. Future functionality on the roadmap will make it possible to eliminate these limitations, give the ability to do things like sync playlists, or create rules you like you described, but not anytime soon.
Ah, OK, thanks for that clarification. And that roadmap is exciting, but of course I'll remain patient on any movement there. Obviously the ability to "set and forget" a YouTube subscription, so that all new content is automatically presented as browsable and accessible in the Channels app (via regular old Stream Link or SLM Stream) without having to manually add the individual videos we're interested in ahead of time, would be an absolute game changer in this space.
@babsonnexus, thanks for all you do! This is incredible, inspiring work you're sharing here.





