flash_webrtc 0.1.1
flash_webrtc: ^0.1.1 copied to clipboard
P2P video/audio streaming using the Meridian overlay over WebRTC.
flash_webrtc #
Flutter library for FLASH — peer-to-peer video/audio streaming built on the Meridian overlay over WebRTC. No media servers: peers organize into latency-ordered multi-resolution rings, discover each other by gossip, and route closest-peer / central-leader / multi-constraint queries by direct latency measurement. Runs on Android, iOS, web, macOS, Windows, and Linux from one codebase, via flutter_webrtc.
A JavaScript twin (flash-webrtc on npm) speaks the same wire protocol, so Flutter and browser peers interoperate through one signaling server.
Install #
dependencies:
flash_webrtc:
Usage #
import 'package:flash_webrtc/flash_webrtc.dart';
final node = MeridianNode(peerId: uuidV4());
await node.initialize('wss://your-signaling-server', mediaStream: stream);
// Closest peer to a target, in O(log N) hops
final result = await node.findClosestNode('some-peer-id');
if (result.closestPeerId != null) {
await node.establishMediaStream(result.closestPeerId!);
}
// Central leader for a group (minimizes average latency)
final leader = await node.findCentralLeader(['peer-a', 'peer-b']);
// Nodes satisfying multiple latency constraints
final nodes = await node.findNodesSatisfyingConstraints([
const Constraint(target: 'edge-1', maxLatencyMs: 50),
]);
A signaling server (peer list bootstrap + SDP/ICE relay only — never media) is required; a minimal one ships in the monorepo's src/signaling-server.
example/ in the repository is a minimal Flutter app wiring up camera capture, discovery, closest-node queries, and remote video rendering.
License #
MIT — see the repository root.