Skip to content

Replace Windows Media Player with VLC#147

Draft
KeinNiemand wants to merge 15 commits into
rstewa:mainfrom
KeinNiemand:pr/vlc-player
Draft

Replace Windows Media Player with VLC#147
KeinNiemand wants to merge 15 commits into
rstewa:mainfrom
KeinNiemand:pr/vlc-player

Conversation

@KeinNiemand

@KeinNiemand KeinNiemand commented Apr 4, 2026

Copy link
Copy Markdown
Contributor

Fixes #145

My newPlayer branch is at the point where as far as I can tell everythin works at least as well as, in the windows media palyer version, there are probably still bugs that need further testing but I'm ready to make this a PR.

I will mark this PR as draft for now since currently the LibVLC nuget package does not include ARM64, there is an upstream PR on the libvlc nuget package build that would add arm64 which is one option the other option is to either include the arm64 dlls manually or to make our own package that includes arm64 (or rely on a prexisting unoffical package if there are any)
Either way the ARM64 problem has to be resolved before this can be merged, note that libvlc and vlc themselves do support arm64 windows which makes this purely a problem with the package.

My pr/vlc-player branch for this PR has been rebased to remove by other dependency replacement changes, and incorporate the merge of my other PR, I have not tested whether everything works after the rebase since I can't build without those changes.

Please let me know if this works or not and if there anything else besides the arm64 problem I should fix before this can be merged.

KeinNiemand and others added 14 commits April 4, 2026 21:14
Windows Media Foundation causes 30-second freezes when opening or
seeking large .m4b files — the same freeze reproduces in Windows Media
Player itself. VLC opens the same files instantly.

Replace the audio backend with LibVLCSharp + VideoLAN.LibVLC.Windows:
- LibVLC runs its own threaded demuxer/decoder, bypassing WMF entirely
- Remove hidden MediaPlayerElement from PlayerControlGrid and LegacyPlayerPage
- Add public Play(), Pause(), NaturalDuration on PlayerViewModel so
  external callers no longer reference the player backend directly
- EndReached dispatches to UI thread to avoid LibVLC deadlock

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ut all on OnTimeChanged on the main thread via dispatcher queue.
Ignore stale time updates while a new VLC media is opening, and keep chapter/seek UI updates explicit without
bringing back the broad SyncPlaybackState refactor.
… use samplerate resampler to fix stutter caused by speex
@KeinNiemand KeinNiemand marked this pull request as draft April 4, 2026 19:24
@KeinNiemand

Copy link
Copy Markdown
Contributor Author

Not sure the Arm64 support is even needed, I think LibVLCSharp currently already works on arm64 windows using the x64 emulation arm windows has, unfortunately I do not have a windows arm device to test if this branch already works on arm.

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.

Windows Media Player slow to load large m4b files (~30s+ for 400MB)

1 participant