feat: subtitles while streaming, and fetched when a download lacks them
YouTube's HLS manifest carries a dozen audio renditions and no subtitles whatsoever — checked against a live master playlist: 16 EXT-X-MEDIA entries, all TYPE=AUDIO, zero SUBTITLES. So the track menu could only ever list audio while streaming, which is what it did. Subtitles are now fetched separately with yt-dlp, tidied through the existing VTT cleanup, and cached per video and language. They reach the player as blob URLs, which share the document's origin — a file:// or 127.0.0.1 track would be cross-origin to the page and need CORS the media pipeline cannot supply. The same path fills in a download saved before subtitles were switched on, without fetching the video again. YouTube serves identical auto-generated captions under both "en" and "en-orig", so byte-identical texts collapse to one entry rather than offering the same track twice, and tracks are labelled "English" rather than "en". The subtitle preference now defaults to English. "None" is a poor default for a setting whose whole purpose is captions: it silently means no subtitles are downloaded, fetched, or offered anywhere, and the Settings text now says so.
This commit is contained in:
@@ -276,9 +276,12 @@ export default function Settings({
|
||||
</select>
|
||||
</label>
|
||||
<p className={`mt-2 ${HELP}`}>
|
||||
Shown automatically when a video has subtitles in this language, including
|
||||
YouTube's auto-generated ones, and saved alongside anything you download so
|
||||
they work offline. You can still switch tracks from the player.
|
||||
Shown whenever a video has subtitles in this language, including YouTube's
|
||||
auto-generated ones — on most videos those are the only ones there are.
|
||||
Downloads keep them beside the file for offline use; streams fetch them
|
||||
separately, because YouTube's live manifest carries no subtitles at all.
|
||||
<b> None means no subtitles anywhere.</b> You can still switch tracks from
|
||||
the player.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user