flutter_ass_player 0.1.0
flutter_ass_player: ^0.1.0 copied to clipboard
Cross-platform Flutter video player with native libass and JASSUB WebAssembly rendering.
flutter_ass_player #
Cross-platform Flutter video player with native libass rendering and a bundled
JASSUB WebAssembly renderer for Advanced SubStation Alpha (.ass) subtitles.
| Platform | Video | ASS renderer |
|---|---|---|
| Android, iOS, Linux, macOS, Windows | media_kit |
Native libass |
| Web | media_kit |
JASSUB/libass WebAssembly |
Installation #
Add the package to your application:
dependencies:
flutter_ass_player: ^0.1.0
The package depends on media_kit and includes its video libraries. Follow the
platform setup in the
media_kit installation guide
when your target requires additional configuration.
Basic usage #
import 'package:flutter_ass_player/flutter_ass_player.dart';
final controller = AssPlayerController();
AssVideoPlayer(
source: 'https://example.com/video.mp4',
assContent: assDocument,
controller: controller,
configuration: const AssPlayerConfiguration(
autoPlay: true,
webFontAssets: <String>[
'assets/fonts/NotoSans-Regular.ttf',
],
),
);
The assContent value must be a complete ASS document, not a file path. It can
be replaced while the player is active:
await controller.setAssContent(updatedAssDocument);
await controller.seek(const Duration(seconds: 5));
await controller.playRange(
const Duration(seconds: 5),
const Duration(seconds: 10),
);
Dispose a controller created by your application when it is no longer needed.
Controllers created internally by AssVideoPlayer are disposed automatically.
Fonts #
Declare every custom font used by an ASS document in the host application's
pubspec.yaml:
flutter:
assets:
- assets/fonts/NotoSans-Regular.ttf
Pass those paths through webFontAssets for web rendering. On Android, libass
cannot discover system fonts, so also set the TTF asset and its actual family
name:
const AssPlayerConfiguration(
nativeFontAsset: 'assets/fonts/NotoSans-Regular.ttf',
nativeFontFamily: 'Noto Sans',
webFontAssets: <String>['assets/fonts/NotoSans-Regular.ttf'],
);
nativeFontAsset and nativeFontFamily must either both be set or both be
omitted.
Web deployment #
The bundled renderer works without cross-origin isolation. To enable browser features that use shared memory and multiple threads, send these response headers for the application and its assets:
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corp
Remote videos and fonts must permit access from the application's origin.
Licensing #
Original package code is available under the MIT License. The web runtime redistributes JASSUB 1.7.17 and its dependencies under their respective licenses. See third-party notices before distributing an application containing the web assets.