playbridge

playbridgeappMPL-2.0活跃维护

开源投屏套件,用手机浏览视频并投到 Android TV、Apple TV、桌面或 DLNA 电视上播放,局域网内使用无需账号,注重隐私。

Open-source casting suite (alpha) — browse on your phone, play on the big screen: Android TV, Apple TV, desktop or DLNA TVs. Local-network, no account. MPL-2.0.

tv-player-v0.16.0发布于 2026-11-04 15:11 UTC391star +2 / 7 天26fork同步于 2026-11-10 12:00 UTC

怎么上手

由 README 提炼,执行前请确认
curl -fsSL https://playbridge.app/install.sh | sh
硬件要求按 README 说明

README 未说明显存或 GPU 要求;接收端覆盖 Android TV/Fire TV、Apple TV、macOS/Windows/Linux 桌面,以及无需安装任何东西的 DLNA 电视。

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

开源投屏套件,手机浏览内容一键投到电视大屏,局域网内无需账号

开源投屏套件,用手机浏览视频并投到 Android TV、Apple TV、桌面或 DLNA 电视上播放,局域网内使用无需账号,注重隐私。

核心能力

  • 手机端内置浏览器或媒体库发现内容后桥接到大屏
  • 支持 Android TV、Fire TV、Apple TV、桌面接收端和 DLNA 电视
  • 纯局域网工作,无需账号和云端
  • 提供 Firefox 与 Chrome 浏览器扩展检测网页视频
  • 附带 CLI 工具可作发送端和接收端

容易踩的坑

项目处于 alpha 阶段,可能存在 bug、功能不完整和版本间破坏性变更;Linux 桌面端需要 libmpv2,macOS 构建未签名需右键打开;Android TV 首次启动需授予「显示在其他应用上层」权限,否则投屏时接收端无法切到前台

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本tv-player-v0.16.0
  1. tv-geckoview-plugin-v0.16.0PlayBridge TV GeckoView Plugin v0.16.02026-11-04 · 2026-11-04 15:26 UTC
    查看更新说明

    TV GeckoView Plugin: v0.16.0

    📋 Changelog

    Download the .apk for your device's architecture (arm64-v8a for most modern devices) and sideload it.

  2. phone-v0.16.0PlayBridge Phone v0.16.02026-11-04 · 2026-11-04 15:18 UTC
    查看更新说明

    Phone: v0.16.0

    📋 Changelog

    ⚠️ Upgrading removes the Library. The Library, Stremio add-ons, debrid providers and Nuvio scrapers are gone, and their data is deleted on upgrade: installed add-ons, watchlist, resume positions, scrapers, debrid and TMDB/OMDB/TVDB keys, and their caches. Collections, IPTV, bridged apps, browser casting, Phone Files, downloads and the remote stay. Old backups still import; the removed sections are ignored.

    Download the .apk for your device's architecture (arm64-v8a for most modern devices) and sideload it.

  3. tv-player-v0.16.0PlayBridge TV Player v0.16.0最新正式版2026-11-04 · 2026-11-04 15:11 UTC

    TV Player: v0.16.0

    📋 Changelog

    💡 Easy Install on TV: Open the Downloader app on your Android TV / Fire TV and enter code 9557748 to download and install this release directly.

    Or download the .apk below (universal APK is recommended) and sideload it manually.

  4. desktop-v0.16.0PlayBridge Desktop v0.16.02026-11-03 · 2026-11-03 23:55 UTC
    查看更新说明

    Desktop Receiver: v0.16.0

    📋 Changelog

    PlatformFile
    Windows 10+playbridge-desktop-windows-0.16.0.zip — extract and run playbridge_desktop.exe
    Linuxplaybridge-desktop-linux-0.16.0.tar.gz — extract and run bundle/playbridge_desktop
    macOS 12+playbridge-desktop-macos-0.16.0.zip — extract, move playbridge_desktop.app to Applications and open it

    Linux: requires libmpv2 (sudo apt install libmpv2 or sudo dnf install mpv-libs).

    macOS: signed with Developer ID and notarized by Apple.

  5. extension-v0.16.0PlayBridge Extension v0.16.02026-11-01 · 2026-11-01 01:34 UTC
    查看更新说明

    PlayBridge Extension: v0.16.0

    📋 Changelog

    Install from the stores to get automatic updates. This version was submitted to both stores and appears there once review finishes.

    BrowserInstall
    FirefoxFirefox Add-ons
    Chrome / Edge / BraveChrome Web Store

    The attached zips are the exact packages submitted to the stores, plus the source archive provided to Mozilla and SHA256SUMS.txt. The Firefox zip is unsigned (for about:debugging only); the Chrome zip can be loaded unpacked from chrome://extensions in Developer mode.

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    PlayBridge

    PlayBridge is an open-source casting suite: browse on your phone, play on the big screen. Find your content on your phone — in the built-in browser or your media library — and bridge it to Android TV / Fire TV, Apple TV, a desktop receiver (macOS, Windows, Linux), or any DLNA-capable TV with nothing installed on it. Local-network only, no account, no cloud.

    [!WARNING] PlayBridge is in alpha. It's under active early development — expect bugs, incomplete features, and breaking changes between releases. Feedback and issue reports are very welcome.

    Table of Contents

    Installation & Store Listings

    Official Store Listings

    The PlayBridge senders and extensions are available on official store registries:

    • Android Phone (Sender):
    • iPhone / iPad (Sender) — TestFlight beta:
    • Browser Extension (Sender — Firefox & Chrome):
      • Firefox Add-ons:
      • Chrome Web Store:
    • Android TV (Player) — Open Testing:
    • Apple TV (Player) — TestFlight beta:

    Receiver & Manual Installation

    • Android TV / Fire TV (receiver):
      • Open the Downloader app on your TV and enter code 9557748 to install the TV Player directly, or
      • download the latest tv-player APK from GitHub Releases and sideload it.
      • Note: on first launch the TV app asks for "Display over other apps" — required for the receiver to come to the foreground when a cast arrives.
      • Optional: the ad-blocked TV Browser APK (GeckoView + uBlock Origin) extends the player with web browsing (download from TV Browser Releases).
    • Apple TV (receiver): install the TestFlight app on your Apple TV, then open the TestFlight beta link on an iPhone, iPad or Mac signed in to the same Apple Account; the app then appears in TestFlight on the Apple TV. Or build and deploy from Xcode; see the TV README.
      • Only have an Apple TV? The public link can't be opened on the TV itself. Email [email protected] for an email invite: it comes with a code you enter under Redeem in TestFlight on the Apple TV.
    • Desktop (receiver): download the build for your OS from GitHub Releases (playbridge-desktop-windows-*.zip, -linux-*.tar.gz, -macos-*.zip). Linux needs libmpv2; the macOS build is unsigned (right-click → Open on first launch).
    • CLI (sender & receiver): on macOS or Linux, run curl -fsSL https://playbridge.app/install.sh | sh; on Windows PowerShell, run irm https://playbridge.app/install.ps1 | iex. Manual archives remain on GitHub Releases.
    • DLNA TVs: nothing to install — the phone discovers renderers on your network automatically.
    • Staying up to date: the phone and TV apps can check for new releases and install updates from within the app, so sideloaded builds don't go stale.

    How to connect & cast

    PlayBridge provides multiple ways to discover receivers and cast media — using your phone, browser extension, Desktop app, or command-line CLI.

    1. Connect on the same Wi-Fi

    Ensure your sender device (Phone, Desktop app, Browser Extension, or Rust CLI) and target receiver (Android TV, Apple TV, Desktop app, or DLNA Smart TV) are connected to the same local Wi-Fi network.

    2. Discover & Pair Receivers

    • Automatic Discovery: Open PlayBridge on your phone or Desktop app. Tap the device chip to see automatically discovered receivers on your network (via mDNS & UPnP).
    • Manual IP Connect: If a receiver isn't listed automatically, enter the receiver's IP address (displayed on its home screen).
    • Secure 6-Digit Pairing: On your first connection to a PlayBridge receiver (Android TV, Apple TV, Desktop), a 6-digit pairing PIN appears on the receiver screen. Enter it on your sender to establish a secure, encrypted connection (wss://). Paired devices auto-reconnect on future sessions.
    • DLNA / UPnP Smart TVs: Discovered automatically on your local network without requiring a pairing PIN.

    3. Choose your Sender

    • 📱 Android Phone App: Browse video sites in the built-in ad-blocked browser, load IPTV playlists, or stream local phone files.
    • 📱 iPhone / iPad App: Browse video sites in the built-in ad-blocked browser, load your own M3U playlists, or cast local phone files.
    • 🖥️ Desktop App (Receiver & Sender): Plays incoming casts from phone and extension senders. Also acts as a sender to cast local video files (with drag-and-drop) or stream URLs to TVs.
    • 🧩 Browser Extension (Firefox & Chrome): Detects streams in active browser tabs and casts them to your TV via the Desktop app.
    • 💻 Rust CLI (playbridge): Use a full-screen terminal dashboard to discover receivers, cast local files or URLs, host a browser receiver, or receive casts through mpv:
      playbridge                         # Open the dashboard
      playbridge discover                # Open dashboard discovery
      playbridge send video.mp4          # Open Cast with media preselected
      playbridge browser video.mp4       # Host and pair a browser receiver
      playbridge receiver                # Start the mpv receiver in the dashboard
      

    Screenshots

    Browse & cast from your phone

    Console hubBuilt-in browser

    Your phone is the remote

    Context-aware remoteTouchpad remoteD-Pad remoteKeyboard remote

    Android TV receiver

    Pairing screenPlayer & detailsSettings
    FavoritesHistory

    Apple TV receiver

    Pairing screenPlayer & detailsSettings
    FavoritesHistory

    Desktop receiver

    Pairing screenPlayer & detailsSettings
    FavoritesHistory

    Browser extension

    ConnectedStreams detectedSubtitles detectedOpen URL options

    Features

    • Browse & detect: a full phone browser (GeckoView, with built-in ad-blocking) that detects videos on the page — direct files, HLS, DASH, and MSE/blob players — and casts them with one tap.
    • Cast anywhere: native receivers for Android TV / Fire TV, Apple TV, and desktop — or cast to any DLNA/UPnP renderer without installing anything on it.
    • Playlists: queue detected browser media and local phone files for playback on a receiver.
    • Phone as remote: touchpad, D-pad, keyboard, and transport controls, context-aware for the browser and player.
    • Local files & IPTV: cast videos from your phone's storage to any receiver, and load M3U/IPTV playlists.
    • Downloads: save streams to your phone with a WorkManager-backed queue, on-the-fly HLS→MP4 transmuxing, and publishing to your gallery.
    • Dual player engines: ExoPlayer and MPV on the TV, with automatic fallback when a stream misbehaves.
    • Secure pairing: connections are verified with a short 6-digit code and encrypted over wss:// with certificate pinning.
    • Private by design: everything stays on your local network — no account, no cloud, MPL-2.0.

    Sender feature matrix

    FeatureAndroid phoneiPhone / iPadDesktop appBrowser extension
    Supported platformsAndroidiOS, iPadOSmacOS, Windows, LinuxFirefox and Chromium browsers
    Receiver targetsPlayBridge receivers and DLNA / UPnP renderersPlayBridge receiversPlayBridge receiversReceiver selected in Desktop, or Desktop itself
    Secure receiver pairing✓✓✓Handled by Desktop
    Built-in browser and stream detectionGeckoView; direct files, HLS, DASH, and MSE / blob playersWKWebView; direct files, HLS, and DASHVia the browser extensionDetects direct files, HLS, DASH, and MSE-backed players in browser tabs
    Stream quality selection✓✓Via the browser extensionHLS quality selection
    Subtitle detection and attachment✓✓—Detection only; attachment is not relayed to Desktop yet
    Local file casting✓✓✓, including drag-and-drop and multi-file playlists—
    IPTV and custom collections✓✓——
    Downloads✓———
    Ad blockinguBlock OriginWebKit content blocker with EasyList and custom rules——
    Queue support✓, including website and local-file playlists✓Multi-file playlistsSingle detected item
    Remote controlsFull remote: transport, seek, volume, D-pad, touchpad, keyboard, and track selectionTransport, seek, D-pad, touchpad, and track selectionTransport, seek, and playlist navigationUse Desktop or a phone remote
    Play on the sender device✓, native phone player✓, native phone player✓Plays through Desktop when no receiver is selected
    Companion app requiredNoNoNoPlayBridge Desktop

    Browser detection depends on what each browser exposes. Protected streams may require captured request headers, and some MSE / blob players cannot be replayed outside their original page.

    Receiver feature matrix

    FeatureAndroid TV / Fire TVApple TVDesktopDLNA / UPnP TV
    Supported platformsAndroid TV, Fire TVtvOSmacOS, Windows, LinuxCompatible smart TVs and renderers
    Receiver installationPlayBridge TV appPlayBridge TV app (TestFlight)PlayBridge Desktop appNone
    Playback enginesMedia3 / ExoPlayer + MPVAVPlayer + MPVMPVTV's built-in player
    Direct streams, HLS, DASH, and local files✓✓✓Renderer-dependent; the phone proxies local files and header-protected HLS
    Verified, encrypted pairing✓✓✓N/A — standard local-network DLNA
    Phone playback controlsFull controls, including seek, volume, and track selectionTransport, seek, and track selectionFull controls, including seek, system volume, and track selectionPlay, pause, stop, and seek; no volume or track selection
    Episode queue and auto-advance✓✓✓Phone-managed; the phone must remain active
    Resume and watch-progress tracking✓✓✓✓, when the renderer reports usable playback status
    External subtitles and audio/subtitle selection✓✓✓Not exposed through PlayBridge
    Receiver history and favorites✓✓✓No receiver UI; progress remains on the phone
    Web playback on the receiverOptional GeckoView plugin or system WebView—Browser-extension bridge—
    In-app updates✓—✓N/A

    Media and codec support ultimately depends on the selected playback engine, operating system, and device hardware. DLNA behavior varies the most between TV manufacturers and models.

    Components

    PlayBridge is a monorepo; each component has its own documentation:

    1. Phone App (mobile/) — The sender: browser, local files, video detection, remote. Changelog
    2. TV Apps (tv/) — Receivers for Android TV (player + browser APKs) and Apple TV. Changelog · tvOS changelog
    3. Desktop App (desktop/) — A Flutter desktop receiver that plays casts via libmpv. Changelog
    4. Browser Extension (extension/) — A Firefox and Chromium extension that casts media from desktop browser tabs.
    5. Rust Cast (cast/core/, cast/receiver/, cast/ffi/) — Portable discovery/casting core, secure reusable receiver runtime, and UniFFI/C/JNI/Dart bindings.
    6. Rust Stream Proxy (stream-proxy-rust/) — High-performance Rust streaming proxy and MediaFlow AES-256 encryption.
    7. Rust CLI (cli/) — Command-line client binary (playbridge) for Rust Core.
    8. Shared Module (shared/) — Shared Kotlin module currently targeting Android only (configured via Kotlin Multiplatform plugin), shared by the phone and TV builds; player engines and protocol bindings.
    9. Protocol (protocol/) — AsyncAPI WSS contract, detailed connection flow, and retained protobuf bindings.

    Documentation

    Comprehensive project documentation is available:

    • Design System: Visual language, color tokens, typography, and component specifications.
    • Contributing: Setup instructions and contribution guidelines.
    • Security Policy: Security considerations and vulnerability reporting.
    • WSS Protocol Flow: Discovery, TLS pinning, SAS pairing, authentication, commands, status events, and compatibility rules. See also the machine-readable AsyncAPI contract.
    • Feature Gap Matrix: Code-backed sender/receiver parity (shipped / partial / stub / absent). Product matrices above stay marketing-facing.

    Cast demo page

    Sites can cast directly via window.playbridge.cast() or open a page-lifetime, website-managed lazy queue via window.playbridge.linkCast(). Linked sessions can replace, append, and jump within the TV playlist and answer bounded needitems events; playback controls remain in the PlayBridge Remote. The user approves each exact website origin and can revoke that permission under Settings → Browser → Website casting permissions. Websites that intentionally reference LAN media servers declare up to 16 exact privateNetworkOrigins (scheme, host, and port; no wildcards or subnets). PlayBridge asks for separate website-to-media-origin grants, keeps webpage headers on each resource's exact origin, and revalidates manifest children and redirects on native receivers. Private-origin grants can be reset without removing the site's basic casting permission. The unified play() API also supports phone-local playback and selected external destinations, subject to their capabilities; see Bridged Apps.

    A live demo that exercises direct payloads, linked lazy queueing, and browser detection is hosted at playbridge.app/cast-demo — open it in the PlayBridge phone browser. Source: web/site/static/cast-demo/.

    Build Instructions

    Prerequisites

    • Android apps: Android Studio, JDK 17+ (the phone Gradle toolchain resolves JDK 21), Android SDK 37
    • Desktop: Flutter SDK (Dart ^3.6) and libmpv
    • Apple TV: Xcode; dependencies resolve through Swift Package Manager (see tv/)
    • Browser Extension: Node.js and pnpm
    • Rust Core & Proxy: Rust 1.91+ (cargo; required by current workspace Cargo.lock)

    Building

    # Phone app
    (cd mobile/android && ./gradlew :app:assembleFossDebug)
    
    # TV player & browser
    (cd tv/android && ./gradlew :player:app:assembleFossDebug :geckoview-plugin:app:assembleDebug)
    
    # Desktop
    (cd desktop && flutter pub get && flutter run)    # -d macos | windows | linux
    
    # Browser extension
    (cd extension && pnpm install && pnpm build)
    
    # Rust core & stream proxy
    cargo build --workspace
    cargo test --workspace
    

    Contributing

    Contributions are welcome — see CONTRIBUTING.md for setup and guidelines.

    AI Policy

    Building a casting suite from scratch across phones, TVs, desktops, and browsers is a large engineering effort. PlayBridge uses AI-assisted tools to help deliver and maintain that cross-platform scope while keeping the project open source and free.

    AI is a development aid, not a substitute for engineering judgment. All contributions—AI-assisted or otherwise—must meet the same standards:

    • Ownership: Understand, test, and take responsibility for every change you submit.
    • Reviewability: Keep changes focused, readable, and reviewable.
    • Maintainability: Do not submit generated code you cannot explain or maintain.
    • Quality: Meet the project's security, compatibility, and testing requirements.

    Acknowledgments

    PlayBridge was inspired by — and learned from — these excellent open-source projects. Huge thanks to their authors and communities:

    All trademarks and copyrights belong to their respective owners.

    License

    PlayBridge's own code is licensed under the Mozilla Public License 2.0 (MPL-2.0). See LICENSE. Third-party components keep their own licences; see THIRD_PARTY_LICENSES.md for notices and distribution obligations.

    This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.

    The Android TV player APK bundles GPL-3.0 components (mpv-android and nextlib), so that distributed APK as a whole is subject to GPL-3.0 terms. This does not change the MPL-2.0 licence of PlayBridge's own source. The TV browser bundles uBlock Origin (GPL-3.0) as a separate component with its own notices and source obligations. Other native media builds also require release-specific licence verification.

    The PlayBridge name and logos identify the official apps; see TRADEMARKS.md for the fork and redistribution policy. Contributors must read and sign CLA.md; see CONTRIBUTING.md. docs/licensing.md explains why PlayBridge uses MPL-2.0 and a CLA.

    Contact

    For questions, feedback, or support, please reach out to us at [email protected].

    If you'd like to support development, you can buy us a coffee on Ko-fi (kofi).

    For security-related issues, please refer to our Security Policy.