mirror of https://github.com/synctv-org/synctv
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
## Dependency updates (exact pins) - tokio 1.53.2, tokio-util 0.7.20, hyper 1.12.0, serde_json 1.0.154, uuid 1.28.0, toml 1.1.8, opendal 0.59.4, ammonia 4.2.3, config 0.15.27, http-acl 0.13.1, tokio-rustls 0.26.6, retina 0.4.21, zstd 0.14.2, ffmpeg-sys-next 9.0.1, oxc 0.154.0, webrtc/rtc 0.21.1 - **rusty_aac 0.5.0 → 1.1.0**: 1.x is the stabilized release with a security-hardening pass (crafted fill-element panic on overflow-checked builds, stale decoder state after failed blocks; output bit-identical otherwise). Usage in this repo is test-only, no API changes needed - **html-escape 0.2.15 → 0.3.0**: fixes multi-codepoint HTML entity decoding and speeds up common named entities; `decode_html_entities` is used by provider title extraction Deliberately kept (documented/intentional pins): bincode 2.0.1 (3.0.0 placeholder), dashmap 7.0.0-rc2, opaque-ke 4.1.0-pre.2, webauthn-rs 0.6.1-dev, serde_yaml, testcontainers 0.27 (testcontainers-modules 0.15 requires ^0.27). ## Toolchain and CI - nightly-2026-09-27 → **nightly-2026-10-13** (rust-toolchain.toml + all workflows) - removed the `cargo-features = ["trim-paths"]` gate (stabilized in 1.101) - actions: checkout v7, cache v6, setup-node v7, dependency-review v5, setup-helm v5, create-pull-request v8 ## Code changes required by new clippy lints (2026-10-13) - `try_from_instead_of_from_str`: `RoomResourceKind` now implements `FromStr` (call site uses `.parse()`) - `items_after_test_module`: moved 7 `#[cfg(test)]` modules to end of file ## Dependency cleanup (new cargo `unused_dependencies` lint) - removed 13 unused crate-level deps, including `tonic-web` which is now unused workspace-wide - moved test-only `tempfile` (synctv-proxy) and `anyhow` (synctv-media-providers) to dev-dependencies - kept `synctv-cluster` in synctv-livestream: referenced only by TLS feature forwarding (`synctv-cluster/tls-*`), which the lint does not account for — a known false positive ## Validation - `make check`, `make check-all-targets`, `make clippy-check`, `make fmt-check` all clean - `cargo nextest run --workspace --run-ignored all`: **6969/6969 passed** (incl. docker-backed e2e) |
2 weeks ago | |
|---|---|---|
| .cargo | 4 weeks ago | |
| .config | ||
| .github | 2 weeks ago | |
| .sqlx | 2 months ago | |
| docs | 2 months ago | |
| helm/synctv | 2 months ago | |
| migrations | 2 months ago | |
| scripts | 2 months ago | |
| synctv | 2 months ago | |
| synctv-adapter | 4 weeks ago | |
| synctv-api | 2 months ago | |
| synctv-api-common | 2 weeks ago | |
| synctv-api-grpc | 2 weeks ago | |
| synctv-api-http | 2 weeks ago | |
| synctv-cluster | 2 weeks ago | |
| synctv-common | 2 months ago | |
| synctv-core | 2 weeks ago | |
| synctv-livestream | 2 weeks ago | |
| synctv-management | 2 weeks ago | |
| synctv-media-providers | 2 weeks ago | |
| synctv-proto | 4 weeks ago | |
| synctv-proto-build | 2 months ago | |
| synctv-proto-main | 2 months ago | |
| synctv-proto-playback-provider | 2 months ago | |
| synctv-proto-providers | 2 months ago | |
| synctv-proxy | 2 weeks ago | |
| synctv-realtime | 4 weeks ago | |
| synctv-web-ui | 4 weeks ago | |
| synctv-xiu | 2 weeks ago | |
| .dockerignore | 2 months ago | |
| .env.postgres.example | ||
| .env.redis.example | ||
| .env.synctv.example | 2 months ago | |
| .gitattributes | ||
| .gitignore | 4 weeks ago | |
| CONTRIBUTING.md | 4 weeks ago | |
| Cargo.lock | 2 weeks ago | |
| Cargo.toml | 2 weeks ago | |
| Dockerfile | 4 weeks ago | |
| LICENSE | ||
| Makefile | 2 months ago | |
| README.md | 2 months ago | |
| README.zh-CN.md | 2 months ago | |
| SECURITY.md | ||
| deny.toml | 2 weeks ago | |
| docker-compose.dev.yml | ||
| docker-compose.yml | 2 months ago | |
| rust-toolchain.toml | 2 weeks ago | |
| synctv.example.yaml | 2 months ago | |
README.md
SyncTV
SyncTV is a Rust implementation of a real-time synchronized video watching platform with media provider integration, livestreaming, HTTP/gRPC APIs, and Kubernetes-ready horizontal scaling.
Highlights
- Synchronized room playback with real-time state updates.
- Media providers for Bilibili, Twitch, YouTube, Douyin, TikTok, Huya, Douyu, AcFun, CCTV, Alist, Cloudreve, Emby/Jellyfin, FNOS, QNAP, Synology, Nextcloud, Seafile, TrueNAS, direct URLs, and livestream sources.
- WHIP and RTMP publishing with WHEP, HLS, and HTTP-FLV playback.
- External WHEP, RTSP, RTMP, and HTTP-FLV pull with cross-node live relay.
- HTTP REST, public gRPC, WebSocket, management gRPC, metrics, RTMP, and STUN runtime surfaces.
- PostgreSQL-backed durable storage with optional Redis shared state, cache, rate limiting, and cluster coordination.
- Docker Compose and Helm deployment templates.
- Built-in management CLI and optional OpenAPI/Swagger UI.
- Astro Starlight documentation site with English and Simplified Chinese content.
Discussion and Contributors
Join the SyncTV Telegram discussion to talk with users and contributors about deployment, operations, media providers, client development, and the product roadmap.
Documentation
Read the complete documentation at docs.syncs.tv.
Download the native client from the client downloads guide or SyncTV App releases. Store builds are distributed through the supported app stores.
License
MIT. See LICENSE.