https://github.com/alexballas/go2tv
Cast media files to UPnP/DLNA Media Renderers and Smart TVs.
https://github.com/alexballas/go2tv
audio cast dlna dlna-mediarenderer golang media samsumg-tvs streaming-video upnp video videos
Last synced: 4 months ago
JSON representation
Cast media files to UPnP/DLNA Media Renderers and Smart TVs.
- Host: GitHub
- URL: https://github.com/alexballas/go2tv
- Owner: alexballas
- License: mit
- Created: 2021-02-08T23:30:26.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2025-03-08T20:50:21.000Z (over 1 year ago)
- Last Synced: 2025-03-08T21:36:46.535Z (over 1 year ago)
- Topics: audio, cast, dlna, dlna-mediarenderer, golang, media, samsumg-tvs, streaming-video, upnp, video, videos
- Language: Go
- Homepage:
- Size: 25.6 MB
- Stars: 565
- Watchers: 13
- Forks: 54
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README

[](https://goreportcard.com/report/github.com/alexballas/Go2TV)
[](https://github.com/alexballas/Go2TV/releases/latest)
[](https://github.com/alexballas/go2tv/actions/workflows/go.yml)
[](https://github.com/alexballas/go2tv/actions/workflows/build-arm.yml)
[](https://github.com/alexballas/go2tv/actions/workflows/build-arm64.yml)
[](https://github.com/alexballas/go2tv/actions/workflows/build-android.yml)
[](https://github.com/alexballas/go2tv/actions/workflows/build-linux.yml)
[](https://github.com/alexballas/go2tv/actions/workflows/build-mac-intel.yml)
[](https://github.com/alexballas/go2tv/actions/workflows/build-mac.yml)
[](https://github.com/alexballas/go2tv/actions/workflows/build-windows.yml)
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
No need to copy files to a USB drive or set up a media server. Just select your file, pick your device, and play.
---
## Installation
**Download the latest release** from the [releases page](https://github.com/alexballas/Go2TV/releases/latest).
- **Windows**: Download `go2tv_vX.Y.Z_windows_amd64.zip`, extract, and run `go2tv.exe`
- **macOS**: Download `go2tv_vX.Y.Z_macOS_amd64.zip` (Intel) or `go2tv_vX.Y.Z_macOS_arm64.zip` (Apple Silicon), extract, and run the app
- **Linux**: Download `go2tv_vX.Y.Z_linux_amd64.zip` (or appropriate arch), extract, and run `go2tv`
- **Android**: Download the APK (`go2tv_vX.Y.Z.apk`) or zip (`go2tv_vX.Y.Z_android.zip`)
Go2TV is a single executable with no installation required. Just download and run.
### Optional: FFmpeg for Transcoding
For maximum compatibility with all devices and file formats, install [FFmpeg](https://ffmpeg.org/download.html). Go2TV will automatically use it when needed.
- **Linux**: `sudo apt install ffmpeg` or equivalent for your distro
- **macOS**: `brew install ffmpeg`
- **Windows**: Download from [ffmpeg.org](https://ffmpeg.org/download.html) and add to PATH
- **Flatpak**: FFmpeg is bundled automatically
---
## Screenshots
**GUI Mode**



**CLI Mode**

---
## 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
- **Loop and auto-play** - Loop a single file or auto-play the next file in folder
- **Gapless playback** - Supported for DLNA devices
- **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.
---
## Notes
**Firewall Configuration**
Go2TV uses ports 3339-3438 for device discovery. If you're behind a firewall, allow inbound UDP traffic on these ports.
**macOS Security**
If you see "cannot be opened because the developer cannot be verified":
1. Control-click the app, then choose Open from the menu
2. Click Open
If you see "go2tv is damaged and can't be opened":
- Run: `xattr -cr /path/to/go2tv.app`
---
## Building from Source
**Requirements**: Go 1.25
``` console
git clone https://github.com/alexballas/go2tv
cd go2tv
make build
```
**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