A native Cocoa YouTube client for Mac OS X 10.4 Tiger on PowerPC, paired with a transcoding proxy that runs on a modern host.
TigerTube is split across two machines:
TigerTube.app(on a PowerPC Mac) bundles its own openssl so it can reach modern HTTPS, and talks directly to YouTube's Data API for search, metadata, and thumbnails.tigertube-proxy.py(on a modern laptop) usesyt-dlpto resolve a video andffmpegto transcode it in real-time to MPEG-1 video + PCM audio — formats which even a G3 can keep up with.
When you click a search result, the client opens two HTTP streams to the proxy (one video, one audio) and decodes them live.
Grab TigerTube-0.3.zip from the Releases page. It contains:
TigerTube.app— PowerPC Release build, targets 10.4+proxy/tigertube-proxy.py— transcoding proxy (Python 3,yt-dlp,ffmpeg,zeroconf)
Requires Python 3, ffmpeg, yt-dlp, and python-zeroconf:
pip install yt-dlp zeroconf
python3 proxy/tigertube-proxy.pyThe proxy listens on port 5002 and advertises itself via mDNS.
TigerTube will auto-discover the proxy on a healthy LAN — no configuration needed.
The window title shows which proxy it found (e.g. uranium.local:5002).
| Key | Action |
|---|---|
| Space | Pause / resume |
f |
Toggle fullscreen |
ESC |
Exit fullscreen / close |
q |
Quit player |
← / → |
Seek ±15 s |
↓ / ↑ |
Seek ±60 s |
See the v0.3 release notes for the full list. Highlights:
- Transport bar under the video — play/pause button, draggable scrub slider, and live time/duration label. Spacebar also pauses.
- Skip-decode under A/V drift — on CPU-bound playback libmpeg2 drops to I-frames-only when it falls more than 0.5 s behind the audio clock, then resumes full decode once caught up. Keeps A/V tight on 640x480+ instead of accumulating drift.
- Dropped-frames counter above the search field reflects source-timeline frames the viewer never saw, derived from the audio clock (not just internal queue overflow).
- Bring-your-own API key via
~/.tigertube/youtube-api-key.txtto bypass the shared default quota. - Leaner proxy —
yt-dlpused as a library, Flask dependency dropped, fail-fast install hints whenffmpegorzeroconfis missing.
See the v0.2 release notes for the full list. Highlights:
- Bonjour proxy discovery — the client auto-finds the proxy on the
LAN via
_tigertube-proxy._tcp(mDNS). No hardcoded IPs. - mplayer-style keyboard seeking —
←/→= ±15 s,↓/↑= ±60 s. - Resolution + quality dropdowns under the search field (192x144 through 1344x1008; MPEG-1 qscale 2–8).
- Quality-mode (VBR) transcode in the proxy —
q=Nfor constant-quality VBR instead of CBR, avoiding pixelation spikes on high-motion frames.
- 600 MHz iMac G3 (PowerPC G3, no AltiVec, ATI Rage 128 Pro, 10.4)
320x240 is rock solid. 400x300 will drop some frames but is watchable. Video is drawn using OpenGL, so fullscreen scaling is free (press "f"), even on a Rage 128 Pro.
Should work on any PowerPC Mac running 10.4 or later. This release is intended for G3 processors (MPEG-1 video at small resolutions, uncompressed audio). Later releases will include better codecs for Altivec-class Macs.
TigerTube ships with a built-in YouTube Data API v3 key so it works
out of the box, but the key's daily quota (~100 searches) is shared
across everyone running the app. If you start seeing search errors
about usage limits, create your own key and drop it in a plain text
file at ~/.tigertube/youtube-api-key.txt — TigerTube reads that
path on startup and uses it in place of the built-in key, no rebuild
required.
Create a key at the Google Cloud Console (enable "YouTube Data API v3" under APIs & Services). The free quota for a personal key is 10,000 units/day, enough for ~100 searches per day on your own.
You'll need a PowerPC Mac running 10.4 with Xcode 2.5 installed.
Before the first build, create src/Secrets.h containing your own
YouTube Data API v3 key:
#define YOUTUBE_API_KEY "abc123..."See the YouTube API key section above for how to obtain a key.
At runtime the compiled-in key is used as a
default but is overridden by ~/.tigertube/youtube-api-key.txt if
that file exists.
Then from the repo root on the Tiger Mac:
xcodebuild -configuration Debug # or ReleaseAll native dependencies (libcurl, OpenSSL, libmpeg2) are vendored under
libs/ as PowerPC static builds. SBJson (backported to Objective-C 1.0)
is vendored under SBJson-2.2.3/.
