OBS Studio is a cross-platform live streaming and recording application. Its architecture is modular: a core library (`libobs`) provides the runtime for sources, encoders, outputs, services, and filters, all registered via a plugin system. The frontend is a Qt-based desktop GUI (`frontend/`) that manages scenes, sources, audio mixing, and output controls. Graphics rendering is abstracted across Direct3D 11, Metal, and OpenGL backends. The system ingests video/audio from capture sources (screen, window, game, camera, hardware I/O like DeckLink), processes them through filters and encoders (x264, NVENC, QSV, AMF, FFmpeg), and outputs to streaming protocols (RTMP, WHIP, SRT) or local files (FLV, MP4, MOV). External dependencies include FFmpeg, Qt, libcurl, and various hardware SDKs. The codebase demonstrates strong engineering with reusable utility libraries (dynamic arrays, strings, config files, profilers) and a well-defined plugin API, though platform-specific code and bundled third-party SDKs introduce some technical drift.
SRS (Simple Realtime Server) is a high-performance, multi-protocol media streaming server primarily written in C++ with a newer Go-based proxy component (SRSX). It ingests, processes, and delivers live audio/video streams via RTMP, WebRTC (WHIP/WHEP), HLS, HTTP-FLV, SRT, and GB28181. The core C++ engine uses a coroutine model built on state-threads, implements stream forwarding, transcoding via FFmpeg, and provides a full HTTP API for management. The Go proxy component (cmd/proxy, internal/) adds load balancing, Redis integration, and protocol proxying for RTMP/HTTP/WebRTC, designed to scale origin/edge deployments. The repository also includes extensive research code, blackbox integration tests, and vendored third-party libraries (FFmpeg 4, OpenSSL 1.1, gperftools, SRT, libsrtp) that have been customized with a '-fit' suffix. This hybrid architecture is actively developed with multiple CI workflows and a large test suite, though some vendored dependencies are older and may require security updates.
AngelLive is a cross-platform (iOS, macOS, tvOS) live streaming viewer that aggregates content from multiple Chinese streaming platforms (Bilibili, etc.) via a dynamic plugin system. The application is built entirely in Swift, using SwiftUI for the UI layer with UIKit bridging where needed. Its core architecture revolves around a shared library, AngelLiveCore, which provides a plugin runtime for loading JavaScript-based platform adapters, a custom danmaku (bullet-chat) rendering engine, unified playback recovery with a state machine, and iCloud-based favorite and credential synchronization. The macOS and tvOS targets share the same core but have platform-specific UI components and input handling (e.g., tvOS focus-driven navigation, macOS menu bar and window management). The system is characterized by a high degree of modularity and concurrency: plugins are isolated sandboxed JavaScript runtimes, the danmaku engine uses asynchronous layer rendering and a dedicated shoot scheduler to handle burst traffic, and the playback recovery coordinator implements a tunable ladder of fallback actions (reload, switch CDN, refresh play args) to handle stream stalls. The favorite syncing engine uses `CKSyncEngine` with actor-based concurrency and circuit breakers to avoid retry storms. The codebase also includes a comprehensive test suite covering plugin operation, playback recovery, danmaku connection reconnection, and favorite refresh policies. Key entry points for the iOS app are `AngelLiveApp.swift` and `ContentView.swift`, which manage navigation and deep link handling. The macOS app uses `TabView` with sidebar navigation, and the tvOS app uses a SwiftUI-based sidebar and focusable grid. The developer console (`PluginConsoleView`) provides real-time logging and filtering of plugin calls, which is useful for debugging and extending the platform support. The app supports DLNA casting via SSDP discovery and a local HTTP proxy, and it integrates with AirPlay and Picture-in-Picture. Overall, AngelLive is a well-engineered, production-quality application with a clear separation of concerns, strong test coverage, and a plugin architecture that allows it to adapt to new platforms without modifying the core app. Its design patterns—such as the actor-based credential manager, the state machine for playback recovery, and the modular danmaku engine—are candidates for extraction into other projects.
This repository is an OBS Studio plugin that enables simultaneous streaming to multiple RTMP (and SRT/RIST, WHIP) destinations from a single OBS session. It provides a dockable Qt-based user interface where users can configure an arbitrary number of streaming targets, each with independent encoder settings (video and audio) or the option to reuse the current OBS streaming/recording encoder. The plugin manages per-target start/stop, bulk start/stop, and can synchronize with OBS's built-in streaming start/stop events. The architecture is a standard OBS plugin: it registers a dock via the obs-frontend-api, creates a main widget (MultiOutputWidget) that hosts a scrollable list of target cards (PushWidgetImpl), and provides an editor dialog (EditOutputWidgetImpl) for adding/modifying targets. Configurations are persisted in a JSON file (obs-multi-rtmp.json) within the OBS profile directory, with support for export/import. The build system uses CMake with platform-specific presets and GitHub Actions for CI/CD across Windows, macOS, and Linux, including Flatpak packaging. Key strengths include a reusable JSON utility (json-util.hpp), a generic OBS properties widget (obs-properties-widget) that can render any obs_properties tree with two-way data binding, and an RAII scope guard (Finally) in helpers.h. The code demonstrates solid C++ practices, cross-platform awareness, and careful handling of encoder sharing to avoid resource conflicts. However, the plugin is tightly coupled to OBS internals, has no automated tests, and some source files exceed 500 lines mixing UI and business logic.
This repository implements a live streaming solution on AWS using AWS Elemental MediaLive for transcoding, MediaPackage for packaging, and Amazon CloudFront for content delivery. It is deployed via AWS CloudFormation using the AWS CDK (v2) and includes Lambda-backed custom resources to manage MediaLive inputs, channels, and MediaPackage endpoints. A demo React-based video player is optionally deployed to an S3 bucket behind CloudFront. The solution supports multiple input types (RTP, RTMP, URL pull, MediaConnect) and three encoding profiles (1080p, 720p, 540p). The codebase is well-structured with unit tests, CDK nag suppressions, and a build pipeline for AWS Solutions publishing. It is actively maintained and uses current AWS SDK v3 and Node.js 22 runtimes.
Streamlabs Desktop (formerly Streamlabs OBS) is a production-grade live-streaming desktop application for Windows and macOS built on Electron and the OBS Studio native library (obs-studio-node). In production it lets streamers compose multi-scene/source setups, manage audio, go live simultaneously to Twitch, YouTube, TikTok, Kick, Facebook and other platforms, run alert/widget overlays, record and replay, generate AI highlight clips, and control the app programmatically through an external JSON-RPC API (used by Stream Deck devices, mobile remotes, and third-party platform apps). The product layer also includes Ultra subscription gating, an overlay/widget store, onboarding flows, game-capture source management, and a managed updater with incremental rollout and A/B testing. Architecturally, the app spans multiple Electron processes (worker services layer, main UI, child windows) with a custom dependency-injection framework (@Inject, Service/StatefulService/PersistentStatefulService) and IPC proxies that let any window invoke services as if local. State is persisted through layered mechanisms: Vuex-backed mutations, localStorage-backed persistent services, and RealmObject documents for real-time data. The UI is a hybrid: a large legacy Vue 2 surface is being progressively replaced by React 17 with antd 4, bridged through component wrappers. Undo/redo is a genuine Command pattern (EditorCommandsService with combinable commands and a 500-entry history), and scene collections serialize through a versioned node/array-node tree with overlay import/export and migrations. Core data flows: OBS native events (stream/record status, scenes, sources, audio meters) flow from obs-studio-node into stateful services that reactively drive the UI; scene collections persist as JSON via the node serializer; widget settings are fetched and patched against the Streamlabs REST API; real-time alerts, safe-mode state, and user state for AI features arrive over WebSocket; platform auth uses OAuth/PKCE flows. The highlighter subsystem contains a notably crafted media pipeline (FFmpeg frame reading, WebGL transitions, audio crossfading, vertical export, companion-app installation) for automated clip generation. The codebase is large (~5000 files) and shows its age in places: Vue 2 (EOL), React 17, and antd 4 are several major versions behind; at least four state-management approaches coexist (Vuex, Zustand, Realm, localStorage); a global Services locator couples many modules; and scattered @ts-ignore comments and skipped tests indicate debt. Despite this, the DI/service layer, command pattern, node serialization framework, JSON-RPC protocol, metadata-driven form system, and several DSP/geometry utilities are cleanly designed and genuinely reusable, and the project is actively maintained with CI workflows, dependency automation via Renovate, and an extensive test suite spanning unit, integration, screenshot, and performance tests.
NOALBS is a Rust application that automatically manages OBS stream quality by monitoring real-time stream health (bitrate, RTT, offline detection) from various stream servers (Nginx-RTMP, SLS, Xiu, Mediamtx, etc.) and switching scenes in OBS accordingly. It also functions as a Twitch/Kick chat bot, allowing streamers to control streaming behavior via commands. The architecture is a single async binary using Tokio, with modular traits for stream servers (StreamServersCommands), broadcasting software (BroadcastingSoftwareLogic), chat platforms, and configuration. Key data flows: config loading → state initialization → polling stream server stats via HTTP → receiving OBS WebSocket events → switching logic updates OBS scenes. External dependencies include OBS WebSocket, Twitch IRC/PubSub, and various streaming server APIs. The codebase demonstrates non-obvious Rust patterns such as using `typetag::serde` for serializable trait objects and a localization system with YAML files. However, some commented-out code, hardcoded delays, and a warning about an OBS source feature being broken indicate areas of incomplete refactoring.
Yasea is an Android live-streaming library and demo application that captures camera video and microphone audio, applies real-time GPU image filters, hardware-encodes to H.264/AAC via MediaCodec, muxes into FLV, and publishes over RTMP to servers such as SRS. The main entry point is SrsPublisher, which orchestrates SrsCameraView (an OpenGL ES preview surface), SrsEncoder (MediaCodec lifecycle and format negotiation), SrsFlvMuxer (FLV-over-RTMP publishing), and SrsMp4Muxer (simultaneous MP4 recording). The demo app (MainActivity) provides a working UI for URL entry, publish/pause, camera switching, recording, and filter selection. Architecturally, the repo is a Gradle project with two modules: a reusable Android library (library/) and a demo app (app/). The library is a monolith that bundles large vendored third-party codebases as source: Google's libyuv (native YUV/RGB conversion and scaling), mp4parser (ISO BMFF/MP4 parsing and authoring), simple-rtmp (RTMP client protocol), and MagicCamera (40+ GPU image filters with GLSL shaders). The repo's own code is the net.ossrs.yasea package, which integrates these pieces: camera frames flow through the GLSurfaceView filter chain as RGBA, are converted to I420/NV12 by the libenc JNI bridge (libenc.cc wrapping libyuv), encoded by MediaCodec, and muxed to FLV/MP4. Audio is captured via AudioRecord and encoded to AAC. Despite a recent commit, the codebase is frozen in the 2017-2020 Android era: compileSdk/targetSdk 26, Android support library 26.1.0, the deprecated Camera API, Gradle 6.5 with AGP 4.1.1, and a mips ABI that modern NDKs no longer support. The native build is commented out in library/build.gradle, and 285 open issues remain. Technical drift is high. This is purely an application/library repo - no data pipelines, notebooks, or research components.
WebViewTvLive is an Android TV live streaming application that uses the Tencent X5 WebView to display official TV channel web pages. It loads channel playlists from remote JSON sources, caches them locally, and provides a TV-optimized UI with remote control and touch input support. The app employs a per-site adapter pattern (WebpageAdapter) to inject JavaScript and trigger fullscreen playback for different streaming websites (e.g., CCTV, YouTube, MGTV). It features a channel bar, waiting indicator, settings for aspect ratio and source selection, and automatic playlist updates. The codebase is well-structured with separation of playlist management, settings, and UI, but the project is officially paused as open source, with the last released version being 1.6. Dependencies are reasonably up-to-date, though some deprecated Android APIs are used.
LiveAutoRecord is a multi-platform live stream recording application built on a TypeScript monorepo architecture. It supports three distinct deployment modes: a desktop client (Electron), a headless HTTP server (Express), and a CLI tool. The core functionality revolves around automatically detecting live streams from platforms like Bilibili, Douyu, Huya, and Douyin, resolving stream URLs, and capturing video via FFmpeg while simultaneously collecting metadata such as danmu and gift messages. The system uses a provider pattern to allow extensibility for new platforms. The architecture relies heavily on Node.js 22+ and Electron 40, indicating a commitment to bleeding-edge runtime versions. Data persistence is handled via LowDB with JSON file adapters, which serves the application's needs but introduces scalability limitations for large datasets. The codebase demonstrates solid engineering practices in its separation of concerns, with distinct packages for core logic, platform-specific adapters, and shared utilities. However, the reliance on platform-specific anti-crawl logic (e.g., VM execution for Huya, signature generation for Douyu) creates inherent fragility. A critical technical debt issue is the use of the `vm2` library in the Douyu recorder, which carries known critical security vulnerabilities (CVE-2023-37466). While a replacement plan exists in the documentation, the current state poses a significant security risk. Additionally, the high number of open issues (89) relative to the star count suggests accumulating technical debt and feature requests that may impact long-term stability.
This repository is an automated IPTV channel source scraper and validator, primarily targeting Chinese hotel and groupcast (组播) streams. The system uses Selenium with headless Chrome to scrape search engines like FOFA and ZoomEye for IPTV-related URLs, then brute-force scans IP ranges to discover accessible streaming servers. It downloads sample TS segments from discovered m3u8 streams to measure download speed and optionally validate resolution using OpenCV. The output is a curated playlist in both CSV and M3U formats (itvlist.txt, itvlist.m3u) organized into categories like 央视频道, 卫视频道, and 其他频道. The project includes multiple execution scripts (itv.py, new.py, itv_all.py, ZHGXTV.py) and a GitHub Actions workflow for daily automated runs. While functional, the codebase suffers from hardcoded IP lists, fragile error handling, tight coupling, and reliance on external services that may change. It is a pragmatic tool rather than a polished application.
JKVideo is a cross-platform (Android/iOS/Web) Expo React Native application that acts as an unofficial Bilibili client. It browses Bilibili recommendation feeds, searches videos, plays DASH video via a locally generated MPD consumed by react-native-video/ExoPlayer, streams live rooms over HLS, displays video and live danmaku, loads comments, supports QR-code login, downloads videos, and shares them over a LAN HTTP server. The code is organized into expo-router screens, React hooks, Zustand stores, a single API service module, and utility modules; it uses signed WBI requests and maintains Bilibili cookies/CSRF state. The implementation quality is above average for a community project: the service layer includes request deduplication and network-only retries; the video player uses Animated-driven seek bars with video-shot preview thumbnails and quality fallback chains; DASH MPD generation handles Dolby Vision and segment ranges; the download hook pauses on background and resumes on foreground. However, there are no automated tests, some dead/default code remains (App.tsx is not the real entry), a hardcoded Sentry DSN and an exposed EAS Sentry auth token are present, and the LAN-share QR code relies on an external QR API. Live 'real-time' danmaku is actually 1.5-second REST polling of Bilibili's history endpoint, despite README claims of WebSocket. The repository is explicitly deprecated: the Chinese README states Bilibili sent a legal letter and maintenance/Issues/PRs have ceased, even though the last commit is recent. This code is useful as a reference for Bilibili API integration, DASH MPD construction, danmaku rendering, and React Native video-player architecture, but it should not be selected for new production use.
This repository aggregates and periodically syncs M3U playlists for Chinese live-streaming platforms (YY, Bilibili, Douyu, Huya) from a third-party proxy service (live.ottiptv.cc). The sole automation is a GitHub Actions workflow that downloads the playlists every 2 hours and commits any changes. There is no application code, data transformation, or analysis; the provided files are directly consumable by IPTV players. The repository includes placeholder test streams and many duplicate entries, indicating mechanical collection. Legal disclaimers in the README warn against commercial use and access from China, suggesting copyright risks. The content is entirely dependent on the external proxy service and platform availability, which introduces high fragility. The last commit date is implausibly far in the future (2026), likely a placeholder, implying the repository is not actively maintained despite the workflow definition.