DEV Community

FuriousOfNight
FuriousOfNight

Posted on

Building Furious Mirror — My Journey Learning Realtime Android Streaming Architecture

Building Furious Mirror — My Personal Realtime Android Mirroring Project Inspired by scrcpy

Hi everyone 👋

Over the last months I’ve been studying realtime multimedia pipelines, desktop rendering, low latency streaming and Android screen transmission systems.

During this journey I started building a personal project called Furious Mirror, heavily inspired by the amazing work behind scrcpy.

The goal was never to “replace” scrcpy or compete against it.
Actually, scrcpy was one of the biggest reasons I became interested in understanding how realtime streaming architectures work internally.

So I decided to challenge myself and build my own implementation focused on experimentation, learning and architecture exploration.


What Furious Mirror currently does

The project currently supports:

  • Android screen mirroring
  • Low latency streaming
  • USB connection
  • Experimental Wi-Fi/IP mode
  • FFmpeg decoding pipeline
  • SDL2 GPU rendering
  • Hybrid connection switching
  • Realtime rendering architecture
  • Input forwarding experiments

Tech Stack

The current pipeline is based on:

Android MediaCodec
↓
Raw H264 AnnexB stream
↓
FFmpeg decoding
↓
SDL2 GPU rendering
Enter fullscreen mode Exit fullscreen mode

Main technologies used:

  • Python
  • FFmpeg / PyAV
  • SDL2
  • ADB
  • MediaCodec
  • Multithreaded rendering pipeline

About AI-assisted development

I also want to be honest about something:

A large part of the project was developed using AI-assisted orchestration.

I’m still learning low-level multimedia engineering and advanced software architecture, so AI became part of my workflow for:

  • prototyping,
  • refactoring,
  • experimentation,
  • debugging ideas,
  • and accelerating iteration.

But I also learned that AI alone does not magically build stable realtime software.

A LOT of manual testing, architectural decisions, debugging and experimentation were necessary to make the project actually work in practice.

Especially when dealing with:

  • threading,
  • rendering pipelines,
  • synchronization,
  • buffering,
  • transport stability,
  • and realtime decoding.

Current state of the project

The project is still evolving and there are many things I want to improve:

  • better Wi-Fi stability
  • audio support improvements
  • bitrate adaptation
  • better reconnect logic
  • more optimized rendering paths
  • broader Android compatibility

Some devices work perfectly.
Some older Android devices still present challenges.

And honestly, this has been one of the most interesting learning experiences I’ve had so far.


Why I’m sharing this

Mostly to:

  • learn from more experienced developers,
  • receive feedback,
  • improve the architecture,
  • and connect with people interested in multimedia systems and realtime streaming.

If anyone has experience with:

  • FFmpeg,
  • SDL2,
  • Android MediaCodec,
  • low latency streaming,
  • transport pipelines,
  • or realtime rendering,

I would genuinely love to hear your thoughts.


Repository

GitHub Repository:

https://github.com/furiousofnightt/furious-mirror

Thanks for reading 🙌

Top comments (1)

Collapse
 
furiousofnightt_ profile image
FuriousOfNight

leave your support for the project, I thank you in advance