Cast media files to Smart TVs and Chromecast devices.
What is Go2TV?
Go2TV lets you play video, audio, and image files on your Smart TV or Chromecast device directly from your computer or phone. It works with:
- Smart TVs - Samsung, LG, Sony, and others that support DLNA/UPnP
- Chromecast - Google Chromecast, Chromecast with Google TV, and compatible devices
- Apps - BubbleUPnP, GMediaRender, and other media receiver apps
Installation
macOS: Install with Homebrew:
brew install --cask go2tv
Or download the latest release from the releases page.
- Windows: Download
go2tvvX.Y.Zwindows_amd64.zip, extract, and rungo2tv.exe - macOS: Download
go2tvvX.Y.ZmacOSamd64.zip(Intel) orgo2tvvX.Y.ZmacOSarm64.zip(Apple Silicon), extract, and run the app - Linux: Download
go2tvvX.Y.Zlinux_amd64.zip(or appropriate arch), extract, and rungo2tv - Android: Download
go2tv_vX.Y.Z.apkfor the arm64 build with bundled FFmpeg transcoding
Optional: FFmpeg for Transcoding
For maximum compatibility with all devices and file formats, install FFmpeg. Go2TV will automatically use it when needed. When transcoding is enabled, Go2TV probes available GPU H.264 encoders first and falls back to libx264 if hardware encoding is unavailable or fails at startup.
- Linux:
sudo apt install ffmpegor equivalent for your distro - macOS:
brew install ffmpeg - Windows: Download from ffmpeg.org and add to PATH
- Flatpak: FFmpeg is bundled automatically
- Android: FFmpeg is bundled in the default APK. It is arm64-only and requires Android 9.0+.
Screenshots
GUI Mode

CLI Mode

Playlist (GUI)
Go2TV GUI keeps the current selection in a Playlist, even for a single file.
- Selecting or dropping a single local file creates a 1-item playlist
- Selecting or dropping multiple files creates a multi-item playlist
- The Playlist window lets you add, remove, reorder, and select items
- Drag and drop on the main window replaces the current playlist
- Drag and drop on the Playlist window appends files when a playlist already exists
- Next, Previous, and Auto-Play Next File follow the playlist order
- Auto-Play Next File wraps to the start of the playlist when it reaches the end
- Same File Types Only is still respected for auto-play traversal
RTMP Streaming (Chromecast only)
Go2TV can act as an RTMP server, allowing you to stream from OBS or other software directly to your Chromecast. This feature requires FFmpeg.
- Select a Chromecast device.
- Check the RTMP Server box.
- Click Play in Go2TV (the app will wait for the stream).
- Use the provided URL in your streaming software (e.g., OBS Settings > Stream).
- Start streaming in your software.
Cast Desktop (Experimental, Chromecast only)
Go2TV can cast your desktop as a live stream to Chromecast devices. This feature is experimental and requires FFmpeg.
- Select a Chromecast device.
- Check Cast Desktop (experimental).
- Click Cast.
- Experimental: behavior/performance may vary by system.
- Chromecast only (not DLNA/UPnP TVs).
- Not supported on audio-only Chromecast devices.
CLI Usage
console
$ go2tv -h
Usage of go2tv:
-l List available devices (Smart TVs and Chromecasts).
-s string
Path to subtitles file (.srt or .vtt).
-t string
Device URL to cast to (from -l output).
-tc
Force transcoding with ffmpeg.
-u string
URL to media file (triggers CLI mode).
-v string
Path to video/audio file (triggers CLI mode).
-version
Print version.
Examples
console
List available devices
go2tv -l
Play a video on your TV
go2tv -v movie.mp4 -t http://192.168.1.100:8060/
Play with subtitles
go2tv -v movie.mp4 -s movie.srt -t http://192.168.1.100:8060/
Force transcoding for incompatible formats
go2tv -v video.avi -tc -t http://192.168.1.100:8060/
Cast to Chromecast
go2tv -v movie.mp4 -t http://192.168.1.50:8009
Stream from stdin
cat video.mp4 | go2tv -t http://192.168.1.50:8009
Stream from command output
yt-dlp -o - "https://youtu.be/..." | go2tv -t http://192.168.1.50:8009
Stream from stdin with transcoding
cat video.mkv | go2tv -tc -t http://192.168.1.50:8009
Stream from command output with transcoding
yt-dlp -o - "https://youtu.be/..." | go2tv -tc -t http://192.168.1.50:8009
Features
- Auto-discovery - Automatically finds Smart TVs and Chromecast devices on your network
- Transcoding - Converts incompatible video formats on-the-fly (requires FFmpeg)
- Subtitles - Supports external SRT/VTT files and embedded MKV subtitles
- Seek support - Jump to any position in the video
- Playlist playback - Single-file and multi-file playlists with add/remove/reorder/select support
- Loop and auto-play - Loop the current file or auto-play through the playlist
- Gapless playback - Supported for DLNA devices
- RTMP Server - Cast live streams from OBS directly to Chromecast (requires FFmpeg)
- Cast Desktop (experimental) - Cast desktop as live stream to Chromecast (requires FFmpeg)
- GUI and CLI - Use the graphical interface or command line
Supported File Types (GUI)
mp4, avi, mkv, mpeg, mov, webm, m4v, mpv, mp3, flac, wav, jpg, jpeg, png
The CLI accepts any file type.
Companion Project: mcp-beam MCP Server (Powered by Go2TV)
mcp-beam is a companion MCP server (stdio transport) built on top of Go2TV core packages.
Use it when you want MCP clients/agents to:
- Discover Chromecast and DLNA/UPnP devices on your LAN
- Cast local media files
- Cast remote media URLs
- Stop active playback sessions
Notes
Chromecast receiver
Go2TV uses a custom Chromecast receiver hosted at https://cast-receiver.go2tv.app/. It is not part of this open-source repository and is not currently published. Functionality matches the default receiver, with minor branding differences.
Firewall Configuration
If you're behind a firewall, allow inbound traffic from devices on your local network:
3339-3438/udpfor DLNA/UPnP device discovery3500-4499/tcpfor the local HTTP media server used by DLNA and Chromecast playback
Building from Source
Requirements: Go 1.25
console
git clone https://github.com/alexballas/go2tv
cd go2tv
make build
AppImage build (Linux)
console
make appimage
v2.1 style build. No bundled ffmpeg/ffprobe.
AppImage build (with ffmpeg, Linux)
console
make appimage-ffmpeg
APPIMAGEFFMPEGMODE=auto(default): use hostffmpeg/ffprobeif static; else download prebuilt bundleAPPIMAGEFFMPEGMODE=system: require hostffmpeg/ffprobeAPPIMAGEFFMPEGMODE=download: always download prebuilt bundleAPPIMAGEFFMPEGMODE=none: build AppImage without ffmpeg binaries- Optional explicit paths:
APPIMAGEFFMPEGBIN=/path/ffmpeg APPIMAGEFFPROBEBIN=/path/ffprobe
console
make android
make android builds the arm64 APK and bundles Android ffmpeg/ffprobe executables as native libraries. Set ANDROIDNDKHOME and ANDROID_HOME.
Using Docker
Build the image:
console docker build --force-rm -t go2tv .
Run the container (Linux with X11):
console xhost +local:docker docker run -it --network host -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix go2tv go2tv
Author
Alexandros Ballas
License
MIT
Artifacts that bundle FFmpeg inherit the bundled FFmpeg build's license obligations. The Android FFmpeg APK uses an Android NDK-built LGPL FFmpeg package by default; AppImages built with the default bundled FFmpeg use GPL builds.