VOGONS


First post, by kahuna

User metadata
Rank Member
Rank
Member

Hey VOGONS crew!

After a long journey driven by pure nostalgia and a lot of tinkering (with a little help from AI along the way!), I'm thrilled to share a project I've been working on: RetroStream
Remember the good old days of watching DivX/XviD movies, series and anime on your PC/laptop/Mac? That's the vibe I wanted to recreate, but with modern-encoded media.
I realize this is very niche, but at any rate, I wanted to share it with the retro community in case anyone else finds it useful.

What is it? RetroStream is a client-server proxy that lets your modern machine do the heavy lifting, transcoding H.264/HEVC video from a Plex Media Server into retro-friendly MPEG2 streams, which your retro machines can then play via MPlayer.

You can find the source code, installation instructions and screenshots on Codeberg: https://codeberg.org/jjmarcos/retrostream-py
I have included some down below.
Please, don't forget to take a look at the readme file as well as the build guides to know a little bit more!

For the impatient, here you can find the binary releases for different Operating Systems: https://codeberg.org/jjmarcos/retrostream-py/releases

It's been quite an adventure making this work across such a wide range of hardware and operating systems!
I've built two versions of the client to cover as much hardware as possible:
- Python 2 Client: Designed for Windows 98, Windows XP, and Mac OS X 10.4 Tiger. It runs on Python 2.5-2.7. It should also work on Windows ME, 2000 and macOS X Leopard (untested).
- Python 3 Client: For modern Windows, Linux and newer macOS.

Some features:
Plex Integration: You can browse your libraries, seasons and episodes directly from the your retro machine.
Transcoding: Uses NVENC (Nvidia) and QSV (Intel) on the server to handle the heavy lifting. If they're not available, it falls back to CPU-based transcoding.
Performance: Tested on everything from an Apple PowerMac G4 to a modern laptop as clients. On the server side, a Raspberry Pi 5 works, although a PC is faster.

I'm already thinking about expanding player support (mpv!), integrating Jellyfin, adding AMD Radeon GPU support, and of course, fixing bugs based on community feedback.
This is a hobbyist project, and I'm not a professional dev, so please use at your own discretion and expect some quirks! I'm eager to hear thoughts, bug reports, and suggestions from this amazing community.

Cheers!

Last edited by kahuna on 2025-12-20, 04:22. Edited 1 time in total.

Be free!

Reply 1 of 9, by kahuna

User metadata
Rank Member
Rank
Member

Hi everyone, I’m happy to announce a massive update to the project. v2.0 is out!

Before diving into the details, check out the new video in the README. It demonstrates the setup process, from configuring the server on a modern Mac to running the client on a PowerMac G4, finally showcasing transcoded modern media playing on Tiger: 👉 https://codeberg.org/jjmarcos/retrostream-py

What’s new in v2.0?

  • Jellyfin Support: You can now connect to Jellyfin servers as well as Plex.
  • New Server GUI: For the server side (the modern machine), there is now a proper GUI to manage settings, view logs, and start/stop the service without touching the command line.
  • Extended HW Acceleration: Transcoding now supports VAAPI (Linux), D3D11VA (Windows), and VideoToolbox (macOS), in addition to CUDA/QSV.
  • Smarter Transcoding: Better and more complex automatic fallback chains (if hardware encoding fails, it gracefully falls back to the next available engine) and hardware-accelerated scaling.
  • New Players: Added support for mpv and ffplay alongside MPlayer.

Compatibility
As always, the focus is on getting modern media onto vintage screens.

  • Clients: Mac OS X, Windows 98 SE, Windows XP, Linux.
  • Server: macOS (Intel/Silicon), Linux, Windows 10/11.

Downloads
Standalone binaries are available for several platforms (no Python installation required).
You can grab the v2.0 zip files here: https://codeberg.org/jjmarcos/retrostream-py/releases

Please have a look at the extensive documentation 😉

Let me know if you run into any issues!

Be free!

Reply 2 of 9, by kahuna

User metadata
Rank Member
Rank
Member

Just a quick update to let you know RetroStream v2.5 is available now.

The big focus for this release was optimizing for legacy hardware, audio track selection and handling large libraries better. Here are the highlights:

  • MPEG-1 & Audio Optimization: Added MPEG-1 video encoding with automatic MP2 audio selection (Stereo/44.1kHz). This prevents your retro CPU from wasting cycles on real-time resampling (48kHz to 44.1kHz) during playback.
  • Custom Resolutions: You can now manually input resolutions (e.g., 320x240 or just x240) with auto-aspect ratio calculation, great to match your display.
  • Audio Track Selection: Added support for selecting specific audio tracks (languages/commentary) directly from the UI.
  • Major Performance Boost: Re-architected the library engine to use asynchronous lazy loading. Large libraries (tested up to 10k items) load much faster now, and metadata is only fetched when you click an item.
  • Fixes: Solved a subtitle transcoding crash caused by special characters/apostrophes in filenames.

Head over to Codeberg to download the v2.5 binaries:
https://codeberg.org/jjmarcos/retrostream-py/releases

I have also updated the repository with detailed instructions:
https://codeberg.org/jjmarcos/retrostream-py

If you want to understand the general workflow, check out the demo video from v2.0 (the core usage remains the same):
https://www.youtube.com/watch?v=vR4VbrVm9Aw

Be free!

Reply 3 of 9, by myne

User metadata
Rank l33t
Rank
l33t

Sounds pretty cool.
I'm not asking you to do it, but it'd be cool if someone integrated a tool like this into a retro-proxy type thing.

eg: automatic "making it compatible with 9x" like early html only, and converting media to flash and pics to early jpg/gif

I built:
Convert old ASUS ASC boardviews to KICAD PCB!
Re: A comprehensive guide to install and play MechWarrior 2 on new versions on Windows.
Dos+Windows 3.11+tcp+vbe_svga auto-install iso template
Script to backup Win9x\ME drivers from a working install
Re: The thing no one asked for: KICAD 440bx reference schematic

Reply 4 of 9, by MarmotaArmy

User metadata
Rank Newbie
Rank
Newbie

Congrats its a very good proyect. A question regarding hardware , what's the minimun requirements? would a 233MMX or a k6-2+ be enough?
Edit : just read the readme on the website... It seems it can!

Reply 5 of 9, by kahuna

User metadata
Rank Member
Rank
Member
MarmotaArmy wrote on 2026-01-08, 14:22:

Congrats its a very good proyect. A question regarding hardware , what's the minimun requirements? would a 233MMX or a k6-2+ be enough?
Edit : just read the readme on the website... It seems it can!

Yes, indeed! The v2.5 update was actually designed specifically to target that hardware tier (Pentium MMX / K6) by adding MPEG-1 support.
While I haven't personally tested a 233MMX yet, it meets the theoretical baseline I calculated. One tip: on that class of hardware, having a video card that supports Hardware YUV-to-RGB Overlay (like an ATI Rage II) could make a big difference.
I'd be very interested to see how it performs on your setup, please let me know how it goes!

myne wrote on 2026-01-08, 13:10:

Sounds pretty cool.
I'm not asking you to do it, but it'd be cool if someone integrated a tool like this into a retro-proxy type thing.
eg: automatic "making it compatible with 9x" like early html only, and converting media to flash and pics to early jpg/gif

It’s definitely a cool concept, but way outside the scope of what I'm trying to do here. My goal is strictly to bridge modern self-hosted libraries (Plex/Jellyfin) to native desktop apps.
I think projects like WebOne or Protoweb are closer to that "universal proxy" goal.

Be free!

Reply 6 of 9, by myne

User metadata
Rank l33t
Rank
l33t

Yeah, of course. It would be a huge amount of extra work.

However, if you make your bit architected well, I'm sure one or both of those might adopt it as a plugin

I built:
Convert old ASUS ASC boardviews to KICAD PCB!
Re: A comprehensive guide to install and play MechWarrior 2 on new versions on Windows.
Dos+Windows 3.11+tcp+vbe_svga auto-install iso template
Script to backup Win9x\ME drivers from a working install
Re: The thing no one asked for: KICAD 440bx reference schematic

Reply 7 of 9, by MarmotaArmy

User metadata
Rank Newbie
Rank
Newbie

I downloaded the server and after reading the readme i realized it requires quite a few steps to install , i just don't have the time right now.
The file client-py3_win_v2-5.zip is flagged by windows defender with Win32/Wacatac.B!ml malware, probably a false positive.-

Reply 8 of 9, by kahuna

User metadata
Rank Member
Rank
Member
MarmotaArmy wrote on 2026-01-09, 13:41:

I downloaded the server and after reading the readme i realized it requires quite a few steps to install , i just don't have the time right now.
The file client-py3_win_v2-5.zip is flagged by windows defender with Win32/Wacatac.B!ml malware, probably a false positive.-

Thanks for the heads-up! I've checked into this, and it is definitely a false positive (common with Python apps compiled with PyInstaller, unfortunately).

Interestingly, my own Windows Defender flags the exact same file as "Win32/Sabsik.EN.A!ml", while yours sees "Win32/Wacatac.B!ml".
The !ml tag stands for "Machine Learning", meaning the heuristics are just guessing based on structure, not a specific virus signature.

I have already submitted the file to Microsoft for analysis to get the detection cleared. Hopefully it won't take long!

Be free!

Reply 9 of 9, by kahuna

User metadata
Rank Member
Rank
Member

@MarmotaArmy I recompiled the client code with Nuitka this time to address the false positive. It is testing clean on two different Windows 11 machines now. I have updated the zip file on the releases page, could you please re-download and test it? Thx!

Be free!