Skip to content

Latest commit

 

History

20 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Azeroth Plex

A native Plex client for the WarcraftXL 3.3.5a build-12340 client. Its Plex browser and playback controls render in the in-game Azeroth Plex panel. A hidden Win32 worker handles libmpv playback and mirrors the current video onto a client-local, movable world-space screen.

Install

  1. Use a WarcraftXL-enabled 32-bit build-12340 client.
  2. Install the release containing wxl-azeroth-plex.dll, wxl-video-host.exe, libmpv-2.dll, wxl.json, and this documentation.
  3. Restart the client when WarcraftXL requests it.
  4. Press Insert, open Video Cinema, and choose Open Plex player inside WoW.

No Microsoft Edge WebView2 runtime is required.

First login and playback

  1. Choose Open Plex sign-in in the in-game Azeroth Plex panel.
  2. Complete Plex PIN authorization in the system browser.
  3. Select a reachable Plex server and library.
  4. Choose a movie, show, season, or episode and press Play.
  5. Use the in-game panel for browsing, search, playback, tracks, and subtitles. Hiding the panel leaves playback and audio running.

Plex navigation

  • Watchlist appears above the Plex library list on the Home screen;
  • selecting a show opens its seasons, and selecting a season opens its episodes;
  • large movie, show, and child-item lists expose Previous page and Next page;
  • movies, episodes, tracks, playlists, and other media leaves open their metadata view before playback when supported.

Poster paths are retained from Plex while navigating. WarcraftXL ABI 1.1 does not expose an in-game image control, so live poster rendering requires a future core UI image service; playback remains visible on the placed world-space screen.

The pinned x86 libmpv build includes the normal FFmpeg audio/video decoders; separate codec DLLs are not required. If a direct stream ends early, the worker reports the mpv error and retries through Plex transcoding when possible.

Watch Together

AzerothPlex includes a state-only Watch Together relay. Every viewer streams the media directly from their own Plex server; Plex credentials, authenticated media URLs, decoded frames, and media files are never sent through the relay.

For local development, start the relay from relay/ and leave the default ws://127.0.0.1:17777/ws endpoint in place. In the in-game Plex panel, open Watch Together, create a private room, then share its short AZ-.... code. Guests resolve the host's media against their own Plex library and follow the relay's authoritative playback state.

Watch Together currently includes host/shared/request-control modes, optional semantic audio/subtitle matching, a shared queue with independent Host managed and Everyone may add policies, all-ready synchronized starts, host migration, reconnect grace, disconnect policies, shared cinema layout, relay RTT/drift diagnostics, and a compact mini-player. The mini-player includes 10-second seek controls and its enabled state is saved locally.

Public room discovery is implemented but intentionally disabled by default. The roadmap requires authentication plus abuse/moderation controls before public rooms are considered production-ready. See relay/README.md for the explicit development opt-in.

The Plex token is protected with Windows DPAPI under %LOCALAPPDATA%\WarcraftXL\plex-player. The account password is never entered into AzerothPlex and tokens are not sent through WarcraftXL shared memory.

World-space screen

The screen is client-local and is not a server GameObject or multiplayer object. In the in-game Video Cinema panel:

  • choose Place / move screen in front of me;
  • change Screen width to resize the 16:9 screen;
  • rotate, raise, lower, hide, or show the screen;
  • enable character/world depth occlusion and adjust depth offset;
  • enable distance-based audio and tune its range.
  • enable Pin Plex screen to display to keep the video fixed in the top-right of the game viewport while the character moves; use Pinned size, Pinned X, and Pinned Y to reposition or resize it. Dragging the video and its lower-right corner is also supported when the game cursor is available.

Placement is saved to Extensions/wxl-azeroth-plex/world-screen.tsv and restored per client.

Requirements and limits

  • WarcraftXL ABI 1.1 and the 32-bit build-12340 client;
  • internet access for Plex authorization and server metadata;
  • a Plex account with access to at least one reachable server;
  • server-side Plex transcoding may be used when direct play is unavailable.

Media is played from Plex. AzerothPlex does not download, cache, locally transcode, or redistribute media. The world-space screen is client-local.

For Plex *.plex.direct connections, login and metadata remain HTTPS, but the native media stream uses the server's standard HTTP port to avoid a known 32-bit libmpv/OpenSSL crash while opening HTTPS media. This fallback is limited to Plex direct-host names.

Build

The hidden playback worker is a Win32 C++20 target. The pinned x86 libmpv development package must be supplied through MPV_ROOT; the build dynamically loads libmpv-2.dll and does not require an MSVC import library.

cmake -S host -B host/build -A Win32 `
  -DMPV_ROOT='C:/path/to/mpv-dev-i686-20260608-git-6444c05'
cmake --build host/build --config Release
ctest --test-dir host/build -C Release --output-on-failure

The current verified x86 runtime is mpv v0.41.0-734-g6444c0505, built from the 20260608 Windows package. Newer i686 packages must be tested before replacement because one newer package reproduced an upstream 32-bit OpenSSL assertion during libmpv initialization.

About

Watch Plex inside WoW using WXL

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages