flutterpi_gstreamer_video_player 0.1.1+1 flutterpi_gstreamer_video_player: ^0.1.1+1 copied to clipboard
video_player platform implementation for flutter-pi.
flutterpi_gstreamer_video_player #
A video player implementation for flutter-pi.
Note this only works on a Raspberry Pi with flutter-pi and gstreamer installed, not on any other platform, even though though platform tags of the pub.dev package may seem to suggest otherwise.
Example usage #
To use this package in your app, execute FlutterpiVideoPlayer.registerWith()
in main
, before the runApp
call. Ideally you only do this when you're sure the platform code is present.
Example code:
void main() {
FlutterpiVideoPlayer.registerWith()
runApp(MyApp());
}
Then you just use the widgets/classes of the official video_player package. chewie is good for more high-level playback.
Advanced features #
In addition to what the official video_player
package provides, this video player implementation has some additional features that might be interesting.
The advanced features are also used in the example.
1. Playing raw gstreamer pipelines #
You can create a VideoPlayerController
using a raw gstreamer pipeline, like here:
@override
void initState() {
_controller = _FlutterpiVideoPlayerController.withGstreamerPipeline('libcamerasrc ! queue ! appsink name="sink"');
super.initState();
}
In this case the video player will show the camera preview using libcamera.
2. Single-frame stepping #
You can step through the video playback. When stepForward
or stepBackward
is called, the video playback will pause.
I.e. you need to call _controller.play()
again to resume it.
late VideoPlayerController _controller;
@override
void initState() {
_controller = VideoPlayerController.network(
'https://flutter.github.io/assets-for-api-docs/assets/videos/bee.mp4',
);
super.initState();
}
void stepForward() {
_controller.stepForward();
}
void stepBackward() {
_controller.stepBackward();
}
3. Fast seeking #
You can seek to the nearest keyframe instead, which is way faster than seeking to an exact position.
late VideoPlayerController _controller;
@override
void initState() {
_controller = VideoPlayerController.network(
'https://flutter.github.io/assets-for-api-docs/assets/videos/bee.mp4',
);
super.initState();
}
void doFastSeek() {
_controller.fastSeek(Duration(seconds: 5));
}