50 lines
1.2 KiB
Dart
50 lines
1.2 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_vlc_player/flutter_vlc_player.dart';
|
|
|
|
class RtmpStreamScreen extends StatefulWidget {
|
|
final String rtmpUrl;
|
|
|
|
RtmpStreamScreen({required this.rtmpUrl});
|
|
|
|
@override
|
|
_RtmpStreamScreenState createState() => _RtmpStreamScreenState();
|
|
}
|
|
|
|
class _RtmpStreamScreenState extends State<RtmpStreamScreen> {
|
|
late VlcPlayerController _videoPlayerController;
|
|
|
|
@override
|
|
void initState() {
|
|
super.initState();
|
|
_videoPlayerController = VlcPlayerController.network(
|
|
widget.rtmpUrl,
|
|
options: VlcPlayerOptions(),
|
|
);
|
|
}
|
|
|
|
@override
|
|
void dispose() {
|
|
_videoPlayerController.dispose();
|
|
super.dispose();
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Scaffold(
|
|
appBar: AppBar(title: Text('RTMP Live Stream')),
|
|
body: Center(
|
|
child: VlcPlayer(
|
|
controller: _videoPlayerController,
|
|
aspectRatio: 16 / 9,
|
|
placeholder: Center(child: CircularProgressIndicator()),
|
|
),
|
|
),
|
|
floatingActionButton: FloatingActionButton(
|
|
onPressed: () {
|
|
_videoPlayerController.play();
|
|
},
|
|
child: Icon(Icons.play_arrow),
|
|
),
|
|
);
|
|
}
|
|
} |