npaw_forge_media_kit 9.6.1
npaw_forge_media_kit: ^9.6.1 copied to clipboard
NPAW Forge adapter for the media_kit Flutter player: reports typed playback lifecycle plus mpv-level QoS (bitrate, fps, dropped frames) to the Forge core.
npaw_forge_media_kit #
NPAW Forge analytics adapter for the media_kit
Flutter player. Reports the typed playback lifecycle and the richest
Dart-level QoS available in the Flutter ecosystem to the Forge core.
Usage #
import 'package:media_kit/media_kit.dart';
import 'package:npaw_forge/npaw_forge.dart';
import 'package:npaw_forge_media_kit/npaw_forge_media_kit.dart';
final forge = await NpawForge.start(
const ForgeConfig(accountCode: 'yourAccount', appName: 'yourApp'),
);
final player = Player();
final attachment = await attachMediaKitPlayer(
forge,
player,
metadata: const ContentMetadata(title: 'Big Buck Bunny'),
);
await player.open(Media('https://example.com/stream.m3u8'));
// when playback ends for good:
await attachment.dispose();
QoS scope #
| Fact | Native (libmpv) | Web backend |
|---|---|---|
| Playhead, duration, live flag, playrate | yes | yes |
| Rendition (display WxH) | yes | yes |
| Bitrate (video track + audio) | yes | track-dependent |
| Video/audio codec, language | yes | track-dependent |
| Frames per second | yes | track-dependent |
Dropped frames (frame-drop-count + decoder) |
yes | no (null) |
Throughput (cache-speed) |
yes | no (null) |
Engine version (mpv-version) |
yes | no (null) |
Engine facts come from a polled mpv property probe (2 s period). Polling is
used instead of observeProperty because media_kit allows a single observer
per property and throws on collisions with its internal observers.
Errors before the first join are reported fatal (startup failure); errors after join are non-fatal and deduplicated by message.