Add web HTTP-FLV playback path
This commit is contained in:
38
frontend/lib/widgets/web_stream_player_web.dart
Normal file
38
frontend/lib/widgets/web_stream_player_web.dart
Normal file
@@ -0,0 +1,38 @@
|
||||
import 'dart:html' as html;
|
||||
import 'dart:ui_web' as ui_web;
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class WebStreamPlayer extends StatefulWidget {
|
||||
final String streamUrl;
|
||||
|
||||
const WebStreamPlayer({super.key, required this.streamUrl});
|
||||
|
||||
@override
|
||||
State<WebStreamPlayer> createState() => _WebStreamPlayerState();
|
||||
}
|
||||
|
||||
class _WebStreamPlayerState extends State<WebStreamPlayer> {
|
||||
late final String _viewType;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_viewType = 'flv-player-${DateTime.now().microsecondsSinceEpoch}';
|
||||
|
||||
ui_web.platformViewRegistry.registerViewFactory(_viewType, (int viewId) {
|
||||
final iframe = html.IFrameElement()
|
||||
..src = 'flv_player.html?src=${Uri.encodeComponent(widget.streamUrl)}'
|
||||
..style.border = '0'
|
||||
..style.width = '100%'
|
||||
..style.height = '100%'
|
||||
..allow = 'autoplay; fullscreen';
|
||||
return iframe;
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return HtmlElementView(viewType: _viewType);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user