Pluto Closed Captions

When I stream live from Pluto.tv, I get closed captions without any problem, but when I use Channels/Docker, I get no CC.

Can this be fixed?

Not all content there has CC. If it never aired on TV in the USA with CC, it won't when they stream it.

Are you comparing the same program airing while watching from their website and from Channels DVR at the same time?

What clients are you using?

I tried several channels on Pluto.tv, all had CC. None on Channels have CC.

Just did a controlled test on a James Bond movie on the "007" channel. Captions worked on Pluto.tv, no captions going through Channels.

Windows 10 server with the current Windows updates, and latest Channels beta.

I used both Windows and FireStick as viewers.

I also just checked another source.

The Pluto app on the FireStick has closed captions on the same channel/program.

The Devs will have to confirm but if they work on the Pluto site but not within Channels Iā€™m guessing they are not the embedded captions that Channels requires.

I thought that only applied to ATSC 3.0.

I don't remember if the Stats for nerds displays if there's closed captions.
If you have a recording that's not displaying them, you can try playing it with VLC or load it into Mediainfo to see if they're in the recording.

Just did a quick check w/007 channel checking A View to a Kill
Pluto TV website displays CC.
Channels doesn't.get them for some reason.

If they're showing on the website, they may be using TTML for the captions. That is a W3C/web standard for subtitles/closed captions. Coincidentally, that is also the format that ATSC3 requires.

However, I don't believe TTML subtitles are currently supported in Ffmpeg, and therefore are unsupported in Channels. (ATSC3 broadcasts that additionally are using CEA-608 closed captions like ATSC1 will still display in Channels, but their use is optional in ATSC3.)

Is there any way to find out for sure?

I don't use Pluto, but I imagine you can inspect the page and the media elements on it, and capture a stream from there and see what the individual streams are that they are serving.

I think that is beyond my technical abilities. Since there are a lot of Pluto users here, I'm hoping the Devs know (or be able to quickly find out) the answer.

I browsed over to the Pluto site and looked at what they're using for closed captions. On the website they are being separately served as WebVTT files, and their web player then syncs them and displays them over the video. It looks like since they are coming from a separate source/location, and not part of the container holding the video and audio data, closed captions served that way are not making their way to Channels.

In short it looks like Channels can read the closed captions in WebVTT format; but it doesn't look like they are being sent. Or rather, the pluto-for-channels container does not present the subtitles in the playlist it generates.

1 Like

Thank you for your efforts in explaining this.

The playlist for the subtitles is actually in the m3u8 that pluto-for-channels generates:

#EXTM3U
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="English",DEFAULT=NO,FORCED=NO,URI="subtitle/en/playlist.m3u8?terminate=false&embedPartner=&serverSideAds=true&paln=&includeExtendedEvents=false&architecture=&deviceId=8580488c-bb80-11ec-bcc3-f14d56112a64&deviceVersion=unknown&appVersion=unknown&deviceType=web&deviceMake=Chrome&sid=7ea3203e-b643-4741-b1e9-6b9e44563e14&advertisingId=&deviceLat=0&deviceLon=0&deviceDNT=0&deviceModel=web&userId=&appName=web",LANGUAGE="en"
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=997452,SUBTITLES="subs"
997452/playlist.m3u8?terminate=false&embedPartner=&serverSideAds=true&paln=&includeExtendedEvents=false&architecture=&deviceId=8580488c-bb80-11ec-bcc3-f14d56112a64&deviceVersion=unknown&appVersion=unknown&deviceType=web&deviceMake=Chrome&sid=7ea3203e-b643-4741-b1e9-6b9e44563e14&advertisingId=&deviceLat=0&deviceLon=0&deviceDNT=0&deviceModel=web&userId=&appName=web
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1539795,SUBTITLES="subs"
1539795/playlist.m3u8?terminate=false&embedPartner=&serverSideAds=true&paln=&includeExtendedEvents=false&architecture=&deviceId=8580488c-bb80-11ec-bcc3-f14d56112a64&deviceVersion=unknown&appVersion=unknown&deviceType=web&deviceMake=Chrome&sid=7ea3203e-b643-4741-b1e9-6b9e44563e14&advertisingId=&deviceLat=0&deviceLon=0&deviceDNT=0&deviceModel=web&userId=&appName=web
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2142297,SUBTITLES="subs"
2142297/playlist.m3u8?terminate=false&embedPartner=&serverSideAds=true&paln=&includeExtendedEvents=false&architecture=&deviceId=8580488c-bb80-11ec-bcc3-f14d56112a64&deviceVersion=unknown&appVersion=unknown&deviceType=web&deviceMake=Chrome&sid=7ea3203e-b643-4741-b1e9-6b9e44563e14&advertisingId=&deviceLat=0&deviceLon=0&deviceDNT=0&deviceModel=web&userId=&appName=web
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=3063648,SUBTITLES="subs"
3063648/playlist.m3u8?terminate=false&embedPartner=&serverSideAds=true&paln=&includeExtendedEvents=false&architecture=&deviceId=8580488c-bb80-11ec-bcc3-f14d56112a64&deviceVersion=unknown&appVersion=unknown&deviceType=web&deviceMake=Chrome&sid=7ea3203e-b643-4741-b1e9-6b9e44563e14&advertisingId=&deviceLat=0&deviceLon=0&deviceDNT=0&deviceModel=web&userId=&appName=web
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=572723,SUBTITLES="subs"
572723/playlist.m3u8?terminate=false&embedPartner=&serverSideAds=true&paln=&includeExtendedEvents=false&architecture=&deviceId=8580488c-bb80-11ec-bcc3-f14d56112a64&deviceVersion=unknown&appVersion=unknown&deviceType=web&deviceMake=Chrome&sid=7ea3203e-b643-4741-b1e9-6b9e44563e14&advertisingId=&deviceLat=0&deviceLon=0&deviceDNT=0&deviceModel=web&userId=&appName=web

This probably is an issue with how Channels parses the m3u8 playlists. Maybe it can't parse vtt files that are referenced in another playlist? @tmm1, do you think that is the correct assessment?

I can confirm that the issue is on the Channels side.

Here is the output of the Pluto TV "Showtime Selects" channel from the m3u8 generated by pluto-for-channels in the latest VLC nightly, which recognizes and outputs the VTT track:

Here is the same channel from the m3u8 output by Channels, which does not include the VTT track (http://X.X.X.X:8089/devices/ANY/channels/127/hls/master.m3u8?)

1 Like

Just bumping this because someone mentioned this issue today: Docker Hub not working, trying to add Pluto TV - #3 by TheFaizyJamalz

I know addressing this is probably a low priority, but could the devs acknowledge the issue? This isn't only a Pluto problem if the software cannot parse VTT playlists.

VTT captions are not currently supported.

I'm thinking of developing some middleware to transform the VTT captions into a format that Channels can parse. I don't know if it's possible, but I'd like to try. What live caption formats are supported by Channels?

Live streams only support embedded a53/cc

2 Likes