Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Local API: Use IOS HLS manifest for livestreams #5705

Merged
merged 1 commit into from
Sep 16, 2024

Conversation

absidue
Copy link
Member

@absidue absidue commented Sep 15, 2024

Local API: Use IOS HLS manifest for livestreams

Pull Request Type

  • Bugfix
  • Feature Implementation

Related issue

Description

While investigating why qualities were disappearing from the quality selector when you changed the quality on live streams, I also looked into why the IOS HLS manifests were failing to play (which is why we haven't been using them). I finally figured out how to get the iOS ones to play, which come with various benefits, such as:

  • The quality selector works properly, qualities no longer disappear when you change the quality on a live stream
  • We can get audio-only playback on live streams, as the IOS HLS manifests contain audio-only streams unlike the WEB ones
  • We get up to 1 hour of DVR/seeking, yes it isn't as much as we would have had with the live DASH manifests (4 hours) or as much as you get on YouTube itself (12 hours) but it's a lot better than not being able to seek at all.

The benefits only apply to the local API though, as we have no control over what HLS manifest Invidious sends us, so the qualities disappearing issue is likely still an issue for people using the Invidious API.

Testing

Local API with local streaming

  1. Set your preferred API backend to the local API
  2. Open a live stream such as this Lofi Girl one: https://youtu.be/jfKfPfyJRdk
  3. Try changing the quality, the qualities should stay in the selector when you change.
  4. Test both the audio and DASH formats (yes I know in this case DASH is the wrong name but that's what we call it in FreeTube)
  5. Test seeking around in the live stream

Local API with Proxy Videos Through Invidious turned on

  1. Set your preferred API backend to the local API
  2. Turn on the Proxy Videos Through Invidious setting
  3. Open a live stream such as this Lofi Girl one: https://youtu.be/jfKfPfyJRdk
  4. Try changing the quality, the qualities should stay in the selector when you change.
  5. Test both the audio and DASH formats (yes I know in this case DASH is the wrong name but that's what we call it in FreeTube)
  6. Test seeking around in the live stream

Desktop

  • OS: Windows
  • OS Version: 10
  • FreeTube version: ad320ac

@github-actions github-actions bot added the PR: waiting for review For PRs that are complete, tested, and ready for review label Sep 15, 2024
@FreeTubeBot FreeTubeBot enabled auto-merge (squash) September 15, 2024 21:10
@FreeTubeBot FreeTubeBot merged commit 18f8741 into FreeTubeApp:development Sep 16, 2024
5 checks passed
@github-actions github-actions bot removed the PR: waiting for review For PRs that are complete, tested, and ready for review label Sep 16, 2024
@absidue absidue deleted the live-ios-hls branch September 16, 2024 12:02
PikachuEXE added a commit to PikachuEXE/FreeTube that referenced this pull request Sep 16, 2024
* development: (29 commits)
  Translated using Weblate (Flemish (West))
  Added translation using Weblate (Flemish (West))
  Translated using Weblate (Slovak)
  Improve history import performance and fix some bugs (FreeTubeApp#5666)
  Bump electron from 32.0.2 to 32.1.0 (FreeTubeApp#5710)
  Local API: Use IOS HLS manifest for livestreams (FreeTubeApp#5705)
  Translated using Weblate (Slovak)
  Translated using Weblate (Japanese)
  Bump the stylelint group with 2 updates (FreeTubeApp#5706)
  Bump swiper from 11.1.12 to 11.1.14 (FreeTubeApp#5709)
  Fix a few memory leaks while tearing down the player (FreeTubeApp#5698)
  Fix audio track selection (FreeTubeApp#5697)
  Bump shaka-player from 4.10.12 to 4.11.1 (FreeTubeApp#5677)
  Translated using Weblate (Czech)
  Translated using Weblate (Serbian)
  Translated using Weblate (Polish)
  Translated using Weblate (German)
  Translated using Weblate (Chinese (Simplified Han script))
  Bump express from 4.19.2 to 4.20.0 (FreeTubeApp#5687)
  Translated using Weblate (Turkish)
  ...
PikachuEXE added a commit to PikachuEXE/FreeTube that referenced this pull request Sep 16, 2024
* development: (74 commits)
  Translated using Weblate (Flemish (West))
  Added translation using Weblate (Flemish (West))
  Translated using Weblate (Slovak)
  Improve history import performance and fix some bugs (FreeTubeApp#5666)
  Bump electron from 32.0.2 to 32.1.0 (FreeTubeApp#5710)
  Local API: Use IOS HLS manifest for livestreams (FreeTubeApp#5705)
  Translated using Weblate (Slovak)
  Translated using Weblate (Japanese)
  Bump the stylelint group with 2 updates (FreeTubeApp#5706)
  Bump swiper from 11.1.12 to 11.1.14 (FreeTubeApp#5709)
  Fix a few memory leaks while tearing down the player (FreeTubeApp#5698)
  Fix audio track selection (FreeTubeApp#5697)
  Bump shaka-player from 4.10.12 to 4.11.1 (FreeTubeApp#5677)
  Translated using Weblate (Czech)
  Translated using Weblate (Serbian)
  Translated using Weblate (Polish)
  Translated using Weblate (German)
  Translated using Weblate (Chinese (Simplified Han script))
  Bump express from 4.19.2 to 4.20.0 (FreeTubeApp#5687)
  Translated using Weblate (Turkish)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Feature Request]: Audio-only format for live streams
5 participants