finds.dev← search

// the find

bililive-go/bililive-go

★ 5,586 · Go · GPL-3.0 · updated Jun 2026

一个直播录制工具

A Go daemon for recording live streams from 18+ platforms, primarily Chinese ones (Bilibili, Douyu, Huya, Douyin) but also Twitch. It wraps ffmpeg for the actual capture, exposes a REST API and a React web UI for managing rooms, and ships with a post-processing pipeline for MP4 conversion, subtitle burning, and custom commands. Aimed at fans and archivists who want unattended, always-on recording.

Each platform lives in its own package under src/live/ with a shared base_live.go interface — adding a new platform is mechanical, not invasive. The post-processing pipeline (src/pipeline/) is genuinely useful: stages are composable, you can chain MP4 conversion, cover extraction, FLV repair, and arbitrary shell commands per recording. First-class observability for a self-hosted hobby tool: Prometheus metrics baked in, pre-built Grafana dashboard ships in contrib/, docker-compose enables it in one config change. Notification breadth is unusually good — Telegram, ntfy, Bark, WxPusher, email — not just a single hardcoded webhook.

Cookie authentication is entirely manual and stays stale: you have to reverse-engineer which cookies each platform requires, copy them in by hand, and refresh them yourself when sessions expire — no OAuth, no auto-renewal. The platform parsers are reverse-engineered API calls and DOM scraping; when Bilibili or Douyin rotates their endpoints (which they do), the recorder silently fails until someone submits a fix. Almost all documentation, the FAQ, and most issue discussions are in Chinese, so non-Chinese readers will be mostly flying blind. The auto-updater downloads and replaces the running binary without user confirmation by default, which is fine until a bad release ships.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →