Flutter GPU加速视频播放插件gpu_video_flutter_kz的使用
Flutter GPU加速视频播放插件gpu_video_flutter_kz的使用
关于
-
什么是它,它能做什么
- 在您的视频中自定义滤镜
- 录制带有多种滤镜的视频
- 支持闪光灯、后置或前置摄像头等
- 支持横屏、竖屏或方形相机类型
-
项目状态: 已完成/原型阶段
- 完成功能: 3/3
- 下一步: 清理和重新整理代码
目录
安装
在 pubspec.yaml
文件中添加此库:
gpu_video_flutter_kz: ^0.0.4
打开项目并在 Android 中进行以下更改:
- 将
minSdkVersion
更改为 21:
defaultConfig {
minSdkVersion 21
}
- 在
build.gradle
(Project: android) 中添加以下内容:
maven {
url 'https://jitpack.io'
}
使用
视频预览
GPUMoviePreview(
videoUrl: "https://test-videos.co.uk/vids/bigbuckbunny/mp4/h264/360/Big_Buck_Bunny_360_10s_1MB.mp4",
)
要为视频应用滤镜,可以使用:
GpuVideoFlutterKz.filterVideo(FilterType.BILATERAL_BLUR);
设置滤镜的百分比:
GpuVideoFlutterKz.setFilterPercentage(int percent);
摄像头录制
初始化:
GPUCameraRecord(
cameraViewType: CameraViewType.square),
)
您可以将相机类型更改为竖屏或横屏。
为预览相机添加滤镜:
GpuVideoFlutterKz.filterCameraRecorder(filterType);
开始录制:
GpuVideoFlutterKz.recordCameraVideo();
结束录制:
String videoPath = GpuVideoFlutterKz.stopRecordCameraVideo();
// 返回录制视频的路径
切换前后摄像头:
GpuVideoFlutterKz.switchCamera();
打开或关闭闪光灯:
GpuVideoFlutterKz.turnOnOffFlash();
拍摄照片:
String imagePath = GpuVideoFlutterKz.captureImage();
// 返回拍摄照片的路径
MP4 合成
获取相册中的所有视频:
List<VideoItem> videos = await GpuVideoFlutterKz.getListVideo();
// 返回 VideoItem 的列表 (在我的库中)
启动编解码器:
GpuVideoFlutterKz.startCodec(isMute, isFlipHorizontal, isFlipVertical, videoSelectedPath, filterType);
// 应用 5 个属性到您的视频,并将其保存到您的相册
特性
- 自定义滤镜
- 多种滤镜录制视频
- 支持闪光灯、前后摄像头
- 支持横屏、竖屏或方形相机类型
需求
- 要求 Android 最低 SDK 版本为 21
资源(文档和其他链接)
许可
示例代码
以下是完整的示例代码:
// ignore_for_file: prefer_const_constructors
import 'dart:developer';
import 'package:flutter/material.dart';
import 'package:gpu_video_flutter_kz_example/demo_platform_view.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: HomeView(),
theme: ThemeData(
highlightColor: Colors.blueAccent,
),
);
}
void _onMp4ComposeButtonClick(BuildContext context) {}
void _onMoviePreviewButtonClick(BuildContext context) {
log("123123");
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => DemoPlatformView(
keyFunction: KeyFunction.moviePreview,
),
),
);
}
void _onCameraRecordButtonClick(BuildContext context) {}
}
class HomeView extends StatelessWidget {
const HomeView({Key? key}) : super(key: key);
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
TextButton(
onPressed: () => _onMp4ComposeButtonClick(context),
child: Text("MP4 合成")),
TextButton(
onPressed: () => _onCameraRecordButtonClick(context),
child: Text("摄像头录制")),
TextButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => DemoPlatformView(
keyFunction: KeyFunction.moviePreview),
),
);
},
child: Text("视频预览")),
],
),
),
);
}
_onMp4ComposeButtonClick(BuildContext context) {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) =>
DemoPlatformView(keyFunction: KeyFunction.mp4Compose),
),
);
}
void _onCameraRecordButtonClick(BuildContext context) {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) =>
DemoPlatformView(keyFunction: KeyFunction.cameraRecord),
),
);
}
}
enum KeyFunction { mp4Compose, cameraRecord, moviePreview }
更多关于Flutter GPU加速视频播放插件gpu_video_flutter_kz的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter GPU加速视频播放插件gpu_video_flutter_kz的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何使用 gpu_video_flutter_kz
插件进行 GPU 加速视频播放的示例代码。这个插件允许在 Flutter 应用中高效地播放视频,利用 GPU 加速来提升性能。
首先,确保你已经在 pubspec.yaml
文件中添加了依赖:
dependencies:
flutter:
sdk: flutter
gpu_video_flutter_kz: ^最新版本号 # 替换为最新的版本号
然后,运行 flutter pub get
来获取依赖。
接下来,在你的 Flutter 项目中,你可以按照以下步骤使用 gpu_video_flutter_kz
插件:
- 导入插件:
在你的 Dart 文件中导入插件:
import 'package:gpu_video_flutter_kz/gpu_video_flutter_kz.dart';
- 创建视频播放器控件:
使用 GpuVideoPlayerController
和 GpuVideoPlayer
控件来播放视频。下面是一个完整的示例:
import 'package:flutter/material.dart';
import 'package:gpu_video_flutter_kz/gpu_video_flutter_kz.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: VideoPlayerScreen(),
);
}
}
class VideoPlayerScreen extends StatefulWidget {
@override
_VideoPlayerScreenState createState() => _VideoPlayerScreenState();
}
class _VideoPlayerScreenState extends State<VideoPlayerScreen> {
late GpuVideoPlayerController _controller;
@override
void initState() {
super.initState();
// 初始化控制器并设置视频资产路径(或网络URL)
_controller = GpuVideoPlayerController.asset('assets/sample_video.mp4')
..initialize().then((_) {
// 视频初始化完成后,可以开始播放
setState(() {});
});
}
@override
void dispose() {
_controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('GPU 加速视频播放'),
),
body: Center(
child: _controller.value.isInitialized
? AspectRatio(
aspectRatio: _controller.value.aspectRatio,
child: GpuVideoPlayer(_controller),
)
: CircularProgressIndicator(),
),
floatingActionButton: FloatingActionButton(
onPressed: () {
setState(() {
_controller.value.isPlaying
? _controller.pause()
: _controller.play();
});
},
child: Icon(
_controller.value.isPlaying ? Icons.pause : Icons.play_arrow,
),
),
);
}
}
在这个示例中:
GpuVideoPlayerController
用于控制视频的播放。你可以通过.asset()
方法加载本地视频资产,或者通过.network()
方法加载网络视频。- 在
initState
方法中,我们初始化视频控制器,并在视频初始化完成后更新 UI。 GpuVideoPlayer
控件用于在界面上显示视频。- 一个简单的浮动操作按钮用于播放和暂停视频。
- 添加视频资产(如果使用本地视频):
如果你使用的是本地视频资产,确保在 pubspec.yaml
中声明这些资产:
flutter:
assets:
- assets/sample_video.mp4
然后,将你的视频文件放在 assets
文件夹中。
这就是一个基本的示例,展示了如何使用 gpu_video_flutter_kz
插件在 Flutter 应用中实现 GPU 加速视频播放。根据你的需求,你可以进一步自定义和扩展这个示例。