惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Microsoft Azure Blog
Microsoft Azure Blog
WordPress大学
WordPress大学
小众软件
小众软件
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
V2EX
Hugging Face - Blog
Hugging Face - Blog
美团技术团队
博客园 - 三生石上(FineUI控件)
Last Week in AI
Last Week in AI
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - Franky
Microsoft Security Blog
Microsoft Security Blog
Y
Y Combinator Blog
A
About on SuperTechFans
The GitHub Blog
The GitHub Blog
U
Unit 42
H
Hackread – Cybersecurity News, Data Breaches, AI and More
云风的 BLOG
云风的 BLOG
IT之家
IT之家
MyScale Blog
MyScale Blog
V
Visual Studio Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
I
InfoQ
博客园 - 司徒正美

Show HN

GitHub - astefanutti/shaderbang: Shebang for Shaders Show HN: AI agents for UK GDAD PCF roles and their skills The Two Pillars: Mixer Mode and Meta-Software in the Reorganization of Software Work After AI GitHub - JaiCode08/teleport-env What 1,000+ Harness Experiments Taught Me About Self-Improving Agents Show HN: Liiists, a Markdown-first, iOS and CLI list app SwiperTab – Get this Extension for 🦊 Firefox (en-US) GitHub - kouhxp/fftext: Summarize, explain, fact-check, or translate any text, URL, or file. No GPU. No cloud. One command GitHub - sweetpad-dev/sweetpad: Develop Swift/iOS projects using VSCode GitHub - dogmaticdev/IRON: IRON a.k.a. Intermediate Representation Object Notation is a Interpreter/Database that is used to create Programming Languages. GitHub - sjhalani7/vaen: Package your AI coding harness into a portable .agent file, and share it across repos, teams, & the community without ever having to copy-paste instructions, skills, MCP config, or secrets. Show HN: Gandalf the Grader Show HN: Citadeld – replay any CI failure locally from a single file GitHub - tdortman/cuSBF: High-Performance GPU Super Bloom Filter coral-ai/claude-code-token-xray at main · Coral-Bricks-AI/coral-ai GitHub - ulyssestenn/funes: Funes is a Git-based framework for LLM-managed knowledge work: an AI Librarian ingests raw sources, builds an interlinked Markdown knowledge base, and uses it to produce cited reports, analyses, and other outputs. GitHub - ThatXliner/gah: Git Add Hunk, built for agents to use GitHub - harmont-dev/harmont-cli: Command-line client for the Harmont CI platform GitHub - brooksmcmillin/mcp-authflow: OAuth 2.0 Authorization Server framework for MCP servers GitHub - javaid-codes/audit-supply-chain-agents GitHub - amorey/gochan: A small library of common channel architectures for Go, inspired by Rust GitHub - arifozgun/OpenGem: Free, Open-Source AI API Gateway with Gemini, OpenAI & Anthropic Compatibility in 1 file GitHub - Pranesh950/BioPetals: 🌸 Run BIOxAI models at home, BitTorrent-style. Fine-tuning and inference up to 10x faster than offloading GitHub - cnguyen14/bounty-doctor: Diagnose a GitHub bounty issue before you waste hours: detects honeypot scam repos, AI-bot attempt swarms, and stale contests. Show HN: CoreMCP – MCP Server for On-Prem DBs Show HN: KittyHTML – Render HTML/CSS as an inline image in your terminal GitHub - bingud/filemat: Web-based file manager Show HN: TruthLens – Free multi-signal deepfake image detector GitHub - apexlocal-jz/claude-usage-tray: Windows system-tray app showing your Claude Code rate-limit usage at a glance. Zero deps, ~300 lines of PowerShell. Cross-IDE (works regardless of VS Code, Cursor, plain terminal). Release v0.1.2.1 · kouhxp/yapsnap
GitHub - muxshed/shed: One stream in, or many. Every dest...
paulgardiner · 2026-04-16 · via Show HN

Muxshed Studio

Self-hosted multistream studio. Ingest from any source -- OBS, hardware encoders, mobile, browser -- over RTMP, SRT, or WebRTC (WHIP coming soon). Switch between inputs live in a browser-based production switcher. Fan-out to every platform at once: YouTube, Twitch, Kick, Facebook, or any custom RTMP/RTMPS endpoint.

One stream in, or many. Every destination, simultaneously. No cloud middleman, no per-channel fees, no limits.

The open source, self-hosted alternative to Restream, StreamYard, and vMix.

Muxshed Studio

Inspiration

This started years ago as a passion project to understand the complexities of muxing live video automatically. It was recently brought back to life earlier 2026 using Rust for a lot of the application compontents.

Features

  • RTMP and SRT ingest from OBS, encoders, or any streaming software
  • Fan-out to YouTube, Twitch, Kick, and any custom RTMP/RTMPS endpoint
  • Scene management with multi-layer compositor
  • Stinger transitions with frame-accurate marker editing
  • Image overlays and lower thirds
  • Broadcast delay with manual bleep
  • Local recording
  • WebRTC guest links
  • API key authentication
  • Real-time WebSocket state feed

Coming Soon

  • Whip Support
  • Stream Deck and Bitfocus Companion support

Architecture

crates/
  api/         Axum REST + WebSocket API server
  processor/   GStreamer pipeline management
  common/      Shared types, config, errors
web/           SvelteKit frontend (TypeScript, Tailwind)
docker/        Dockerfile, compose files, Unraid template
migrations/    SQLite migrations

The API server uses a PipelineController trait with two implementations:

  • StubPipelineController for development without GStreamer (simulates state transitions)
  • GstPipelineController for production with full GStreamer pipeline (feature-gated)

Requirements

Source (local development)

  • Rust 1.84+ and Cargo
  • Node.js 20+ and npm
  • GStreamer is not required for dev mode (stub controller simulates the pipeline)
  • GStreamer 1.20+ is required if you want to run the real pipeline locally (see below)

Docker / Podman

  • Docker 24+ or Podman 4+
  • docker compose or podman-compose

Installing Dependencies from Source

Rust

# Install via rustup (https://rustup.rs)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Node.js

# Install via nvm (https://github.com/nvm-sh/nvm)
nvm install 20
nvm use 20

GStreamer (optional, only needed for real pipeline)

Dev mode uses the stub controller and does not need GStreamer. Install GStreamer only if you want to test RTMP ingest, fan-out, and recording locally.

macOS

brew install gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gst-libav

Ubuntu / Debian

sudo apt-get update
sudo apt-get install -y \
    gstreamer1.0-tools \
    gstreamer1.0-plugins-base \
    gstreamer1.0-plugins-good \
    gstreamer1.0-plugins-bad \
    gstreamer1.0-plugins-ugly \
    gstreamer1.0-libav \
    gstreamer1.0-gl \
    libgstreamer1.0-dev \
    libgstreamer-plugins-base1.0-dev \
    libgstreamer-plugins-bad1.0-dev \
    pkg-config

Fedora / RHEL

sudo dnf install -y \
    gstreamer1 \
    gstreamer1-plugins-base \
    gstreamer1-plugins-good \
    gstreamer1-plugins-bad-free \
    gstreamer1-plugins-ugly-free \
    gstreamer1-libav \
    gstreamer1-devel \
    gstreamer1-plugins-base-devel

Arch Linux

sudo pacman -S gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gst-libav

Windows

Download the MSVC development and runtime installers from gstreamer.freedesktop.org. Install both, then set PKG_CONFIG_PATH to the GStreamer lib/pkgconfig directory.

Verifying the installation

Building with GStreamer enabled

cargo build --features muxshed-processor/gstreamer

Without the gstreamer feature flag, the API uses the stub controller (default for development).

Quick Start

Source

This builds and runs the API on http://localhost:8080 and the frontend dev server on http://localhost:5173. The frontend proxies API requests to the backend automatically.

On first run, a default API key is printed to the console. Copy it and enter it in the frontend when prompted.

Docker

cd system
./dev-docker.sh

Builds a dev image (no GStreamer, stub controller, debug logging) and starts on http://localhost:8080. The frontend is served directly by the API.

Podman

cd system
./dev-podman.sh

Same as Docker but uses podman compose.

Production Docker

cd system/docker
docker compose up --build

Builds the full production image with GStreamer and all plugins. Ports:

Port Protocol Purpose
8080 TCP Web UI + API
1935 TCP RTMP ingest
9000 UDP SRT ingest
8443 TCP WebRTC signalling

Configuration

All configuration is via environment variables. See .env.example for the full list.

Variable Default Description
MUXSHED_LISTEN_ADDR 0.0.0.0:8080 API server bind address
MUXSHED_RTMP_PORT 1935 RTMP ingest port
MUXSHED_DB_PATH muxshed.db SQLite database file path
MUXSHED_DATA_DIR data Directory for recordings, stingers, etc.
MUXSHED_WEB_DIR (none) Path to built frontend assets (set automatically in Docker)
MUXSHED_LOG_LEVEL info Log level: trace, debug, info, warn, error
RUST_LOG info Rust log filter (overrides MUXSHED_LOG_LEVEL for fine-grained control)

Running Tests

cd system

# Rust tests (API integration tests, all 15 pass)
cargo test --workspace

# Frontend type checking
cd web && npx svelte-check

# Frontend build
cd web && npm run build

API

All endpoints are under /api/v1/. Authentication is via X-API-Key header or ?key= query parameter.

Key endpoints:

POST   /api/v1/stream/start          Start streaming to all enabled destinations
POST   /api/v1/stream/stop           Stop streaming
GET    /api/v1/status                Pipeline state

GET    /api/v1/sources               List sources
POST   /api/v1/sources               Create source (auto-generates RTMP stream key)

GET    /api/v1/scenes                List scenes
POST   /api/v1/scenes/:id/activate   Switch to scene

GET    /api/v1/destinations          List destinations
POST   /api/v1/destinations          Create destination

POST   /api/v1/transition/stinger    Trigger stinger transition
POST   /api/v1/delay/bleep           Trigger manual bleep

POST   /api/v1/record/start          Start recording
POST   /api/v1/record/stop           Stop recording

GET    /api/v1/ws?key=API_KEY        WebSocket for real-time state updates

Docker Volumes

Container Path Purpose
/config Database and configuration
/config/recordings Local recordings
/config/stingers Stinger transition files

Unraid

An Unraid community app template is included at docker/unraid-template.xml.

License

Business Source License 1.1

Converts to Apache License 2.0 on 2030-04-17. Self-hosting for personal or internal business use is always permitted. See LICENSE for full terms.