ScreenCaster.

Android screen mirroring · Open source

Your screen.
Now streaming.

From a phone in your hand to a screen everyone can see. Capture, encode, and stream Android video—with code you can open up.

v0.2.0 · Example debug APK · Android 5.0+

See it in motion01 / Demo

The demo that started it.
Recorded with an earlier version.

YouTube
Java Open, readable sourceH.264 + VP8 MediaCodec encodingTCP + UDP FFmpeg playbackWebRTC Browser companion

Two projects. One stream.

The phone does the capturing.
The rest is up to you.

Watch with FFplay, record with FFmpeg, or send the same H.264 stream through our small browser server.

01 / Android senderJava
Actual ScreenCaster app with TCP/H.264 settings and Start and Stop controls

Your screen.
Your settings.
Your consent.

MediaProjection
↓
MediaCodec

AndroidScreenCaster

A native Android example that captures your screen, encodes it as H.264 or VP8, and sends video over TCP or UDP. Every session starts with fresh sharing consent.

  • Android 5.0+ with a suitable Surface encoder
  • Stop from the app, notification, or system
  • Raw H.264 or VP8 in an IVF container
Explore the Android project
02 / Browser companionDocker Compose
localhost:8080
Actual browser viewer displaying the Android moving test screen during physical-device validation

AndroidScreenCasterWeb

A small companion that takes TCP/H.264 from the phone and delivers WebRTC video to a browser. FFmpeg copies the video; MediaMTX handles playback.

  • Start with Docker Compose
  • Reconnect, full screen, and connection status
  • One phone, up to four browser viewers
Explore the browser project

Real project screens: Android API 37 emulator and the API 36 physical-device browser test.

A small, understandable path

Capture. Encode.
Pass it on.

On the phoneMediaProjectioncaptures the screen
In the encoderMediaCodecmakes H.264 or VP8
On your computerFFplay / WebRTCbrings it to a screen

Make your first stream

A phone.
A receiver.
A little motion.

Put both devices on a trusted network. Start the receiver, then tell the Android app where to send the video.

  1. 01
    Install the Android APK

    Use the example debug APK from the release. The download includes SHA-256 checksums.

  2. 02
    Start your receiver

    Choose FFplay for desktop playback or the companion for browser viewing.

  3. 03
    Press Start on the phone

    Enter the receiver’s LAN IP. Choose TCP / H264, try 640×360 at 1 Mbps, and approve sharing.

On your receiver computer

Start listening.

Install FFmpeg, then run this command before starting capture.

Terminal
ffplay -f h264 \
  'tcp://0.0.0.0:49152?listen=1'

Tap Stop on the phone to finish. Start FFplay again before the next TCP session.

Full Android setup

Video only, for trusted networks. The sender has no authentication or encryption. Keep the receiver off the public internet.

Checked, then documented

The evidence is open, too.

Build checks are one thing. Seeing changing frames arrive and watching a capture stop cleanly are another. We record both.

Android / device test4 modes

TCP and UDP × H.264 and VP8 decoded during 125-second physical-device checks.

Browser / device test160 seconds

Continuous physical-device streaming, with late joining and reconnect checked.

Source / automated checksBuild + CI

Android build, unit tests and lint. Browser decoding and lifecycle checks in Chromium.

Device support depends on the encoder. Direct Wi-Fi TCP, remote LAN browser viewing, Safari and Firefox remain unverified. The browser device check used optional ADB forwarding; no particular latency is promised.

Before you press Start

A few good
questions.

Can I watch directly in a browser?

The Android app sends raw TCP/UDP video. Use AndroidScreenCasterWeb to turn its TCP/H.264 stream into WebRTC. You run that server yourself; this page introduces the projects and plays the original demo.

Do I need USB or a custom server?

USB is not required for normal Wi-Fi/LAN use. FFplay or FFmpeg can receive the stream without a custom server. USB/ADB is optional for installation and development; browser playback uses the companion server.

Does it include sound or remote control?

No. Both projects stream video only. They do not capture audio or let the viewer control the phone.

Can I use it as a public streaming service?

These are developer examples for trusted networks. The sender stream and companion’s HTTP page lack authentication and encryption. Public hosting needs a separately designed access and transport setup.

Open source. Ready to explore.

See the screen.
Understand the stream.

Open the project