https://github.com/arcticfox1919/vlc-flutter
Flutter plugin for vlc player
https://github.com/arcticfox1919/vlc-flutter
flutterplayer libvlc vlc
Last synced: 11 months ago
JSON representation
Flutter plugin for vlc player
- Host: GitHub
- URL: https://github.com/arcticfox1919/vlc-flutter
- Owner: arcticfox1919
- License: mit
- Created: 2021-01-26T10:47:06.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2023-10-12T08:21:37.000Z (over 2 years ago)
- Last Synced: 2025-06-23T05:02:21.754Z (12 months ago)
- Topics: flutterplayer, libvlc, vlc
- Language: Java
- Homepage:
- Size: 152 KB
- Stars: 22
- Watchers: 2
- Forks: 7
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# vlc-flutter
This is a Flutter wrapper plugin for libvlc.See their [website](https://www.videolan.org/).
Todo:
- [x] Android
- [x] iOS
## Usage
```yaml
dependencies:
vlc_flutter: ^0.0.2
```
```dart
import 'package:vlc_flutter/vlcplayer.dart';
```
Create `VLCController`:
```dart
// "-vvv" option
// print as detailed a log as possible for debugging purposes
VLCController _controller = VLCController(args:["-vvv"]);
```
Create a view for playback:
```dart
AspectRatio(
aspectRatio: 16/9,
child: VLCVideoWidget(
controller: _controller,
),
)
```
Play video according to `uri`:
```dart
ElevatedButton(
child: Text("play"),
onPressed: () async {
await _controller.setDataSource(uri:"rtmp://58.200.131.2:1935/livetv/natlgeo");
_controller.play();
}),
```
Or just use the `play`:
```dart
_controller.play(uri:"rtmp://58.200.131.2:1935/livetv/natlgeo");
```
Play local resources:
```dart
_controller.play(path:"/sdcard/test/test.mp4");
```
Listening to the status of the player:
```dart
_controller.onPlayerState.listen((event) {
debugPrint("=*= $event =*=");
});
```
Listening to player events:
```dart
_controller.onEvent.listen((event) {
if(event.type == EventType.PositionChanged){
debugPrint("==[${event.positionChanged}]==");
}
});
```
Add subtitles:
```dart
// Loading local subtitles
await _controller.addSlave(path: "/sdcard/test/Test.srt");
// Set the position of the subtitles
_controller.setVideoTitleDisplay(Position.Bottom, 1000);
```
Recorded video:
```dart
// Specify a directory and start recording
_controller.startRecord("/sdcard/test/");
// Stop Recording
_controller.stopRecord();
```
Don't forget to add network permissions to the `AndroidManifest.xml` to play network resources:
```xml
```
If you need to record video, you may also need the following permissions:(These are dangerous permissions on Android 6.0 and above, so you may also need the [flutter_easy_permission](https://pub.dev/packages/flutter_easy_permission) plugin)
```xml
```
## Example
```dart
class _MyAppState extends State {
VLCController _controller = VLCController();
@override
void initState() {
super.initState();
_controller.onEvent.listen((event) {
if(event.type == EventType.PositionChanged){
debugPrint("==[${event.positionChanged}]==");
}
});
}
@override
void dispose() {
_controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('VLCPlayer Plugin example'),
),
body: Column(
mainAxisSize: MainAxisSize.min,
children: [
AspectRatio(
aspectRatio: 16/9,
child: VLCVideoWidget(
controller: _controller,
),
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
ElevatedButton(
child: Text("play"),
onPressed: () async {
await _controller.setDataSource(
uri: "rtmp://58.200.131.2:1935/livetv/natlgeo");
_controller.play();
}),
ElevatedButton(
child: Text("pause"),
onPressed: () {
_controller.pause();
}),
ElevatedButton(
child: Text("stop"),
onPressed: () {
_controller.stop();
}),
ElevatedButton(
child: Text("startRecord"),
onPressed: () {
_controller.startRecord("/sdcard/test/");
}),
ElevatedButton(
child: Text("stopRecord"),
onPressed: () {
_controller.stopRecord();
})
],
)
],
),
),
);
}
}
```