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

1 回复

更多关于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

  1. 导入必要的包
import 'package:flutter/material.dart';
import 'package:gsy_video_player/gsy_video_player.dart';
import 'package:chewie/chewie.dart'; // 这是一个视频控制层的包,可以与gsy_video_player一起使用
  1. 创建视频播放器控制器
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();
  }
  1. 构建视频播放页面
  @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,
        ),
      ),
    );
  }
}
  1. 使用Chewie作为视频控制层(可选):

如果你想要一个更美观的视频控制层,可以使用chewie包。这里是如何将chewiegsy_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为你自己的视频链接。

回到顶部