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.
import 'package:flutter/material.dart';
import 'package:flutter_ass_player/flutter_ass_player.dart';
void main() => runApp(const ExampleApp());
class ExampleApp extends StatelessWidget {
const ExampleApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
theme: ThemeData(colorSchemeSeed: Colors.teal, useMaterial3: true),
home: const PlayerExample(),
);
}
}
class PlayerExample extends StatefulWidget {
const PlayerExample({super.key});
@override
State<PlayerExample> createState() => _PlayerExampleState();
}
class _PlayerExampleState extends State<PlayerExample> {
final _controller = AssPlayerController();
@override
void dispose() {
_controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('ASS player')),
body: Center(
child: ConstrainedBox(
constraints: const BoxConstraints(maxWidth: 960),
child: AspectRatio(
aspectRatio: 16 / 9,
child: AssVideoPlayer(
source:
'https://flutter.github.io/assets-for-api-docs/assets/videos/bee.mp4',
assContent: _exampleAss,
controller: _controller,
),
),
),
),
);
}
}
const _exampleAss = '''
[Script Info]
ScriptType: v4.00+
PlayResX: 1280
PlayResY: 720
[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,48,&H00FFFFFF,&H000000FF,&H00111111,&H80000000,0,0,0,0,100,100,0,0,1,3,1,2,40,40,40,1
[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:00.50,0:00:05.00,Default,,0,0,0,,Rendered with flutter_ass_player
''';