maxrave-dev / maxrave-dev/SimpMusic

Linux desktop playback fails with timeout – YouTube streams return HTTP 403

Open
#2,381 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Kotlin
Stars
11.4k
Forks
599
Avg merge
3d 18h
Merged PRs (30d)
7

Description

Duplicate Check
  • I confirm I searched for existing reports and found no duplicates.
Describe the Bug

On Linux desktop, SimpMusic is unable to play any song. The app displays a timeout error when attempting playback.

The catalog, search, and YouTube Music content load correctly, but every song fails when playback starts.

Debug logs show that playback initialization succeeds, but MpvPlayerAdapter is already in the ERROR state when play() is called.

Testing outside SimpMusic shows that the YouTube stream URL extracted through the default android_vr client returns HTTP 403.

The same video plays successfully with MPV when using yt-dlp with the web_embedded player client, Deno, and the EJS challenge solver.

This suggests the issue may be related to the YouTube stream extraction/player client used by the desktop version.

Steps to Reproduce
  1. Install and open SimpMusic Desktop on Linux Fedora 44.
  2. Log in to a YouTube Music account using string cookies from extension.
  3. Select any song from the catalog or search results.
  4. Press Play.
  5. Wait for playback to initialize.

The same timeout error occurs for every song I tested.

Expected Behavior

The selected song should start playing normally.

App Version

v1.7.0

Android Version

N/A – Linux Desktop

Device Model

Fedora Linux 44 (KDE Plasma Desktop Edition) x86-64 Lenovo IdeaPad 1 15ALC7

Custom ROM
  • I am using a custom ROM
Custom ROM Name (if applicable)

No response

Screenshots (optional)

No response

Log / Error Details

Debug: (YouTubeScraper) watchtime done
Debug: (Check initPlayback) Success
Debug: (MpvPlayerAdapter) play() called (current state: ERROR)
Warn: (MpvPlayerAdapter) Play: Called in invalid state: ERROR
Warn: (saveRecentSong) v1pqTBlNsyY 0

Additional testing:

Default MPV/yt-dlp playback of the same video fails with:

[youtube] v1pqTBlNsyY: Downloading android vr player API JSON
[info] v1pqTBlNsyY: Downloading 1 format(s): 251
ERROR: unable to download video data: HTTP Error 403: Forbidden

However, playback works successfully when using:

yt-dlp \
  --js-runtimes deno \
  --remote-components ejs:github \
  --extractor-args "youtube:player_client=web_embedded" \
  -f bestaudio \
  --no-playlist \
  "https://www.youtube.com/watch?v=v1pqTBlNsyY"

MPV also successfully plays the same video with this configuration.

Environment:

OS: Fedora Linux 44
MPV: 0.41.0
yt-dlp: 2026.06.09
Deno: 2.9.5 (stable, release, x86_64-unknown-linux-gnu)
v8 15.0.245.2-rusty
typescript 6.0.3

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start at MpvPlayerAdapter playback initialization and the desktop YouTube stream-extraction path; compare the failing android_vr client with the working web_embedded configuration, including the supplied Deno and EJS solver setup. Reproduce with the provided video and environment, then verify that songs play without HTTP 403 errors or timeout failures.

Written by the indexing model from the issue text.

Assessment

Tech stack
deno, kotlin
Domain
audio-video-rtc, desktop
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.