Flutter视频播放插件gsy_video_player的使用
Flutter视频播放插件gsy_video_player的使用
gsy_video_player
gsy_video_player 是一个功能丰富的视频播放插件,支持多种视频播放器(如 IJKplayer、ExoPlayer 和 MediaPlayer),HTTPS 协议,支持弹幕、外挂字幕,支持滤镜、水印、GIF 截图,片头广告、中间广告,多个同时播放,支持基本的拖动、声音和亮度调节,支持边播边缓存,支持视频自带的旋转(90 度或 270 度),重力旋转与手动旋转的同步支持,支持列表播放,列表全屏动画,视频加载速度,列表小窗口支持拖动,动画效果,调整比例,多分辨率切换,支持切换播放器,进度条小窗口预览,列表切换详情页面无缝播放,RTSP、CONCAT、MPEG 等。
开始使用
要在你的项目中使用 gsy_video_player
,首先在 pubspec.yaml
文件中添加依赖项:
dependencies:
gsy_video_player: ^0.0.6
然后运行 flutter pub get
来获取依赖项。
示例代码
以下是一个完整的示例代码,演示了如何使用 gsy_video_player
插件来播放视频:
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:gsy_video_player/gsy_video_player.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
[@override](/user/override)
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
GsyVideoPlayerController gsyVideoPlayerController = GsyVideoPlayerController(player: GsyVideoPlayerType.ijk);
late ChewieController chewieController;
[@override](/user/override)
void initState() {
super.initState();
initPlayer();
}
[@override](/user/override)
void dispose() {
chewieController.dispose();
gsyVideoPlayerController.dispose();
super.dispose();
}
// 初始化播放器
Future<void> initPlayer() async {
chewieController = ChewieController(
videoPlayerController: gsyVideoPlayerController,
looping: false,
rotateWithSystem: true,
);
gsyVideoPlayerController.setLogLevel(LogLevel.logError);
gsyVideoPlayerController.setNetWorkBuilder(
'https://cloud.video.taobao.com//play/u/27349687/p/1/e/6/t/1/239880949246.mp4',
autoPlay: true,
cacheWithPlay: true,
releaseWhenLossAudio: false,
);
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('插件示例应用'),
),
body: ListView(
physics: const NeverScrollableScrollPhysics(),
children: [
// 视频播放区域
Container(
color: Colors.black,
width: double.infinity,
height: 300,
child: Chewie(
controller: chewieController,
),
),
// 按钮区域
Wrap(
children: [
ElevatedButton(
onPressed: () {
gsyVideoPlayerController.startPlayLogic();
},
child: const Text('播放'),
),
ElevatedButton(
onPressed: () {
gsyVideoPlayerController.resume();
},
child: const Text('恢复'),
),
ElevatedButton(
onPressed: () {
gsyVideoPlayerController.pause();
},
child: const Text('暂停'),
),
ElevatedButton(
onPressed: () {
gsyVideoPlayerController.setLogLevel(LogLevel.logSilent);
},
child: const Text('设置日志级别'),
),
ElevatedButton(
onPressed: () {
gsyVideoPlayerController.seekTo(const Duration(seconds: 11));
},
child: const Text('跳转到 11 秒'),
),
ElevatedButton(
onPressed: () async {
gsyVideoPlayerController.setBoxFit(BoxFit.fitWidth);
// await gsyVideoPlayerController.setIfCurrentIsFullscreen(true);
},
child: const Text('适应宽度'),
),
ElevatedButton(
onPressed: () async {
chewieController.disableRotation();
// await gsyVideoPlayerController.setIfCurrentIsFullscreen(false);
},
child: const Text('禁用旋转'),
),
ElevatedButton(
onPressed: () {
gsyVideoPlayerController.setBoxFit(BoxFit.fill);
},
child: const Text('填充模式'),
),
],
),
],
),
),
);
}
}
更多关于Flutter视频播放插件gsy_video_player的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter视频播放插件gsy_video_player的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何在Flutter中使用gsy_video_player
插件来播放视频的示例代码。这个插件支持多种视频格式和网络视频流,并提供了丰富的自定义选项。
首先,确保你已经在pubspec.yaml
文件中添加了gsy_video_player
依赖:
dependencies:
flutter:
sdk: flutter
gsy_video_player: ^x.y.z # 请替换为最新版本号
然后,运行flutter pub get
来安装依赖。
接下来,在你的Flutter项目中,你可以按照以下步骤使用gsy_video_player
:
- 导入必要的包:
import 'package:flutter/material.dart';
import 'package:gsy_video_player/gsy_video_player.dart';
import 'package:chewie/chewie.dart'; // 这是一个视频控制层的包,可以与gsy_video_player一起使用
- 创建视频播放器控制器:
class _MyHomePageState extends State<MyHomePage> {
GsyVideoController _controller;
@override
void initState() {
super.initState();
// 初始化视频控制器
_controller = GsyVideoController(
videoSource: 'https://www.example.com/your-video-file.mp4', // 视频源URL
autoPlay: false, // 是否自动播放
looping: false, // 是否循环播放
);
}
@override
void dispose() {
_controller.dispose();
super.dispose();
}
- 构建视频播放页面:
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Video Player Demo'),
),
body: Center(
child: _controller.value.initialized
? AspectRatio(
aspectRatio: _controller.value.aspectRatio,
child: GsyVideoPlayWidget(
controller: _controller,
),
)
: Container(
child: CircularProgressIndicator(),
),
),
floatingActionButton: FloatingActionButton(
onPressed: () {
setState(() {
// 控制播放/暂停
_controller.value.isPlaying
? _controller.pause()
: _controller.play();
});
},
tooltip: _controller.value.isPlaying ? 'Pause' : 'Play',
child: Icon(
_controller.value.isPlaying ? Icons.pause : Icons.play_arrow,
),
),
);
}
}
- 使用Chewie作为视频控制层(可选):
如果你想要一个更美观的视频控制层,可以使用chewie
包。这里是如何将chewie
与gsy_video_player
结合使用的示例:
ChewieController _chewieController;
@override
void initState() {
super.initState();
_controller = GsyVideoController(
videoSource: 'https://www.example.com/your-video-file.mp4',
autoPlay: false,
looping: false,
)..initialize().then((_) {
// 初始化完成后设置Chewie控制器
_chewieController = ChewieController(
videoPlayerController: _controller,
aspectRatio: _controller.value.aspectRatio,
autoPlay: false,
looping: false,
);
setState(() {});
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Video Player Demo with Chewie'),
),
body: Center(
child: _chewieController != null
? Chewie(
controller: _chewieController,
)
: Container(
child: CircularProgressIndicator(),
),
),
);
}
@override
void dispose() {
_chewieController?.dispose();
_controller.dispose();
super.dispose();
}
这个示例展示了如何在Flutter中使用gsy_video_player
插件来播放视频,并可选择性地添加chewie
包以提供视频控制层。确保你已经替换了视频源URL为你自己的视频链接。