libre-tube / LibreTube

An alternative frontend for YouTube, for Android.
https://libretube.dev
GNU General Public License v3.0
8.57k stars 441 forks source link

auto-generated captions not working if HLS enabled #5511

Open clicky6 opened 8 months ago

clicky6 commented 8 months ago

Steps to reproduce

  1. Disable piped proxy (Enabled)
  2. Fallback to piped proxy (Disabled)
  3. Use HLS (Enabled)
  4. Play any video with English (auto-generated) captions, the captions aren't visible.

Expected behavior

The English (auto-generated) captions should be visible and should show normally as when we play using piped proxy.

Actual behavior

The English (auto-generated) captions weren't visible.

LibreTube version

0.21.1

Android version

Android 13

Other details

https://send.internxt.com/download/7fa7d69b-222f-42df-a37a-2e5e275cb3ce?code=d90a34709d742dc1618504f7dfaa07f3c883ab40ee8519d040a572466e727f07

In the demonstration video above

When the YouTube video is played for the first time in Libretube with the settings Disable piped proxy is (Disabled) Use HLS is (Disabled) the English (auto-generated) captions are showing.

And When I play it for the 2nd time with Disable piped proxy (Enabled) Use HLS (Enabled) The English (auto-generated) captions are not showing.

Acknowledgements

marnix commented 8 months ago

This seems purely related to HLS: for me, keeping the piped proxy enabled, enabling HLS stops auto-generated subtitles from showing. (All other subtitles still work.)

clicky6 commented 8 months ago

This seems purely related to HLS: for me, keeping the piped proxy enabled, enabling HLS stops auto-generated subtitles from showing. (All other subtitles still work.)

Absolutely

Taratect commented 5 months ago

I have hls disabled. Still no auto captions for me. Though I have disabled piped proxy.

Edit: I wanted to see how the app reacts when I enable hls. The video loads however it buffers somewhat

clicky6 commented 5 months ago

I have hls disabled. Still no auto captions for me. Though I have disabled piped proxy

For me videos don't play without HLS in disabled piped proxy

Taratect commented 5 months ago

I have hls disabled. Still no auto captions for me. Though I have disabled piped proxy

For me videos don't play without HLS in disabled piped proxy

Lol for me, Videos don't play when I use DASH (hls disabled) using the piped proxy. And I have to use his if I want to view vids via piped proxy. Looks like we're having different issues for some reason.

Piped had this bug before. Now it has been fixed. The auto generated cc loads

strangersdangers commented 3 months ago

What I've noticed in the Piped API is that when there's two subtitles with the same code (for example, two en subtitles, one is auto generated and one isn't), the one with the "false" autoGenerated will get picked over the auto generated one

RaptaG commented 3 months ago

I can reproduce on my end, what is the status of this issue?

strangersdangers commented 3 months ago

No idea.

But just to add to my previous message, even when there's only one caption on a video, if its "autoGenerated" is true, it's not going to get displayed.

Why is this app picking "false" autoGenerated captions to be displayed over the "true" ones?

TechD123 commented 2 months ago

Can confirm what @Taratect reports: I can only use Piped proxies with HLS enabled, otherwise an error toast appears. When deactivating Piped proxies, I can use both HLS and DASH. The issue tracking that appears to be #5855, so I'd recommend to take further discussions of that issue there.

I wasn't even able to display English auto generated subs when I disabled Piped proxies and set it to DASH (HLS disabled), as the heading of this ticket suggests. Happy to provide logs if needed.

clarfonthey commented 1 month ago

I don't seem to get automatic subtitles regardless of proxy/HLS settings. Works fine with non-automatic subtitles, though.

My guess would be that it's because the auto-generated captions have a different format (going one word at a time) but I wouldn't know without going through the code.