Flutter视频播放插件gwp_alpha_player的使用

Flutter视频播放插件gwp_alpha_player的使用

添加依赖

pubspec.yaml文件中添加以下依赖:

dependencies:
  gwp_alpha_player: ^0.0.1

在使用播放器的Dart文件中导入:

import 'package:gwp_alpha_player/gwp_alpha_player.dart';

获取开始

gwp_alpha_player 是一个用于播放透明视频的插件,适用于刷礼物等场景。它支持播放本地视频和HTTPS远程视频。

完整示例Demo

以下是完整的示例代码,展示了如何使用gwp_alpha_player插件来播放视频。

示例代码

import 'package:flutter/material.dart';
import 'package:gwp_alpha_player/gwp_alpha_player.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  // 这个widget是你的应用的根组件。
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});
  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  final _gwpAlphaPlayerPlugin = GwpAlphaPlayer();

  @override
  void initState() {
    super.initState();
  }

  void _incrementCounter() {
    // 调用播放方法
    setState(() {
      _gwpAlphaPlayerPlugin.play(
          "https://oss.xingyaozhibo.com/xyapp/svga/v2/taikong.mp4", (url) {
        print("播放完成:${url}");
      });
    });
  }

  @override
  Widget build(BuildContext context) {
    // 获取屏幕高度
    double height = MediaQuery.of(context).size.height * 0.8;

    return Scaffold(
      appBar: AppBar(
        // 设置AppBar标题
        title: Text(widget.title),
      ),
      body: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          // 包含背景图像的容器
          Container(
            height: height,
            width: MediaQuery.of(context).size.width,
            decoration: BoxDecoration(
                image: DecorationImage(
                    image: AssetImage("lib/back.png"), fit: BoxFit.fitHeight)),
            child: _gwpAlphaPlayerPlugin.getVideoWidget(top: 10, height: height),
          ),
        ],
      ),
      // 增加按钮触发播放
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: const Icon(Icons.add),
      ),
    );
  }
}

代码解释

  • 导入依赖

    import 'package:gwp_alpha_player/gwp_alpha_player.dart';
    
  • 初始化播放器

    final _gwpAlphaPlayerPlugin = GwpAlphaPlayer();
    
  • 播放视频

    void _incrementCounter() {
      setState(() {
        _gwpAlphaPlayerPlugin.play(
            "https://oss.xingyaozhibo.com/xyapp/svga/v2/taikong.mp4", (url) {
          print("播放完成:${url}");
        });
      });
    }
    
  • 布局

    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          Container(
            height: height,
            width: MediaQuery.of(context).size.width,
            decoration: BoxDecoration(
                image: DecorationImage(
                    image: AssetImage("lib/back.png"), fit: BoxFit.fitHeight)),
            child: _gwpAlphaPlayerPlugin.getVideoWidget(top: 10, height: height),
          ),
        ],
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: const Icon(Icons.add),
      ),
    );
    

更多关于Flutter视频播放插件gwp_alpha_player的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter视频播放插件gwp_alpha_player的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


gwp_alpha_player 是一个用于在 Flutter 应用中播放带有透明通道的视频的插件。它基于 AlphaPlayer,支持播放带有 Alpha 通道的视频,适用于需要显示视频中透明部分的场景。

1. 安装插件

首先,你需要在 pubspec.yaml 文件中添加 gwp_alpha_player 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  gwp_alpha_player: ^1.0.0  # 请查看最新版本

然后运行 flutter pub get 来安装插件。

2. 基本使用

2.1 导入插件

在你的 Dart 文件中导入 gwp_alpha_player 插件:

import 'package:gwp_alpha_player/gwp_alpha_player.dart';

2.2 创建 AlphaPlayer 实例

你可以通过 AlphaPlayer 类来创建播放器实例:

AlphaPlayer alphaPlayer = AlphaPlayer();

2.3 设置视频源

你可以通过 setVideoSource 方法来设置视频源。视频源可以是本地文件或网络 URL:

alphaPlayer.setVideoSource(
  'https://example.com/video.mp4',  // 视频 URL
  AlphaPlayerSourceType.network,    // 视频源类型
);

或者使用本地文件:

alphaPlayer.setVideoSource(
  'assets/video.mp4',               // 视频路径
  AlphaPlayerSourceType.asset,      // 视频源类型
);

2.4 播放视频

你可以通过 play 方法来开始播放视频:

alphaPlayer.play();

2.5 控制播放

你可以使用以下方法来控制视频的播放:

  • pause(): 暂停视频播放。
  • resume(): 恢复视频播放。
  • stop(): 停止视频播放。
  • seekTo(Duration position): 跳转到指定时间点。
alphaPlayer.pause();
alphaPlayer.resume();
alphaPlayer.stop();
alphaPlayer.seekTo(Duration(seconds: 10));

2.6 监听播放状态

你可以监听播放器的状态变化,例如播放完成、播放错误等:

alphaPlayer.onPlayerStateChanged.listen((state) {
  if (state == AlphaPlayerState.completed) {
    print('Video playback completed');
  } else if (state == AlphaPlayerState.error) {
    print('Error occurred during playback');
  }
});

2.7 销毁播放器

在不需要播放器时,记得销毁它以释放资源:

alphaPlayer.dispose();

3. 完整示例

以下是一个完整的示例,展示了如何使用 gwp_alpha_player 插件来播放带有透明通道的视频:

import 'package:flutter/material.dart';
import 'package:gwp_alpha_player/gwp_alpha_player.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: VideoPlayerScreen(),
    );
  }
}

class VideoPlayerScreen extends StatefulWidget {
  [@override](/user/override)
  _VideoPlayerScreenState createState() => _VideoPlayerScreenState();
}

class _VideoPlayerScreenState extends State<VideoPlayerScreen> {
  late AlphaPlayer alphaPlayer;

  [@override](/user/override)
  void initState() {
    super.initState();
    alphaPlayer = AlphaPlayer();
    alphaPlayer.setVideoSource(
      'https://example.com/video.mp4',
      AlphaPlayerSourceType.network,
    );
    alphaPlayer.onPlayerStateChanged.listen((state) {
      if (state == AlphaPlayerState.completed) {
        print('Video playback completed');
      } else if (state == AlphaPlayerState.error) {
        print('Error occurred during playback');
      }
    });
  }

  [@override](/user/override)
  void dispose() {
    alphaPlayer.dispose();
    super.dispose();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Alpha Player Example'),
      ),
      body: Center(
        child: AlphaPlayerWidget(
          alphaPlayer: alphaPlayer,
          width: 300,
          height: 300,
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          alphaPlayer.play();
        },
        child: Icon(Icons.play_arrow),
      ),
    );
  }
}
回到顶部