Flutter视频播放插件appinio_video_player的使用

发布于 1周前 作者 ionicwang 来自 Flutter

Flutter视频播放插件appinio_video_player的使用

appinio_video_player 是一个基于官方 video_player 包进行封装和扩展的Flutter插件,它提供了一个高度可定制的控制栏、全屏模式以及可调的视频设置。对于这个视频播放器中的每一个控件,你都可以决定是否显示它以及它的外观样式。

主要特性

  • [ 新 ] 通过在屏幕右侧滑动来改变音量
  • [ 新 ] 静音/取消静音
  • [ 新 ] Web上隐藏画中画模式
  • [ 新 ] 缓存网络视频
  • 前后跳转
  • 全屏模式
  • Web应用程序的原生控件和全屏支持
  • 更改视频质量
  • 缩略图 / 海报
  • 调整播放速度
  • 完全自定义的控件
  • 流畅的进度条
  • 防止在进度条中寻求
  • 防止视频被多次播放

预览

screenshot_1 screenshot_2

全屏

screenshot_3

开始使用

为了开始使用,只需创建一个 VideoPlayerController,就像为普通的 video_player 创建一样,并定义一个要使用的来源。 然后创建一个 CustomVideoPlayerController 来访问全屏和控制栏可见性的切换。将控制器传递给 CustomVideoPlayer 小部件以使用其所有功能和自定义机会。

使用示例

下面是一个完整的示例代码,展示了如何使用 appinio_video_player 插件来构建一个简单的视频播放应用。

import 'package:appinio_video_player/appinio_video_player.dart';
import 'package:flutter/cupertino.dart';

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

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return const CupertinoApp(
      debugShowCheckedModeBanner: false,
      theme: CupertinoThemeData(
        brightness: Brightness.light,
      ),
      title: 'Appinio Video Player Demo',
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({Key? key}) : super(key: key);

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

class _MyHomePageState extends State<MyHomePage> {
  late CachedVideoPlayerController _videoPlayerController;

  late CustomVideoPlayerController _customVideoPlayerController;

  final String longVideo =
      "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4";

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

    _videoPlayerController = CachedVideoPlayerController.network(
      longVideo,
    )..initialize().then((value) => setState(() {}));
    
    _customVideoPlayerController = CustomVideoPlayerController(
      context: context,
      videoPlayerController: _videoPlayerController,
    );
  }

  @override
  void dispose() {
    _customVideoPlayerController.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return CupertinoPageScaffold(
      navigationBar: const CupertinoNavigationBar(
        middle: Text("Appinio Video Player"),
      ),
      child: SafeArea(
        child: Column(
          children: [
            Expanded(
              child: CustomVideoPlayer(
                customVideoPlayerController: _customVideoPlayerController,
              ),
            ),
            CupertinoButton(
              child: const Text("Play Fullscreen"),
              onPressed: () {
                _customVideoPlayerController.setFullscreen(true);
                _customVideoPlayerController.videoPlayerController.play();
              },
            ),
          ],
        ),
      ),
    );
  }
}

这段代码创建了一个简单的视频播放界面,其中包含一个用于播放视频的小部件以及一个按钮,点击该按钮可以进入全屏模式并开始播放视频。

以上就是关于 appinio_video_player 插件的基本介绍及使用方法,希望对您有所帮助!如果您有任何问题或需要进一步的帮助,请随时提问。


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

1 回复

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


当然,以下是一个关于如何在Flutter应用中使用appinio_video_player插件播放视频的示例代码。这个示例将展示如何集成和使用该插件来播放视频。

首先,确保你已经在pubspec.yaml文件中添加了appinio_video_player依赖:

dependencies:
  flutter:
    sdk: flutter
  appinio_video_player: ^最新版本号 # 请替换为实际可用的最新版本号

然后,运行flutter pub get来安装依赖。

接下来,在你的Flutter项目中,创建一个新的Dart文件(例如video_player_screen.dart),并在其中编写以下代码:

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

class VideoPlayerScreen extends StatefulWidget {
  @override
  _VideoPlayerScreenState createState() => _VideoPlayerScreenState();
}

class _VideoPlayerScreenState extends State<VideoPlayerScreen> {
  AppinioVideoPlayerController? _controller;

  @override
  void initState() {
    super.initState();
    // 初始化视频控制器
    _controller = AppinioVideoPlayerController.network(
      'https://www.example.com/path/to/your/video.mp4', // 替换为你的视频URL
    )
      ..initialize().then((_) {
        // 设置视频开始播放时的状态
        setState(() {});
      });
  }

  @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.isInitialized == true
            ? AspectRatio(
                aspectRatio: _controller!.value.aspectRatio,
                child: AppinioVideoPlayer(_controller!),
              )
            : Container(
                child: CircularProgressIndicator(),
              ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          setState(() {
            _controller?.value.isPlaying
                ? _controller!.pause()
                : _controller!.play();
          });
        },
        child: Icon(
          _controller?.value.isPlaying ?? false
              ? Icons.pause
              : Icons.play_arrow,
        ),
      ),
    );
  }
}

在这个示例中,我们创建了一个VideoPlayerScreen小部件,它包含了一个AppinioVideoPlayer组件。以下是代码的主要部分:

  1. 初始化视频控制器:在initState方法中,我们创建了一个AppinioVideoPlayerController实例,并传递了视频的URL。然后,我们调用initialize()方法来准备视频播放器。

  2. 构建UI:在build方法中,我们检查视频控制器是否已经初始化。如果已初始化,我们显示视频播放器;否则,我们显示一个进度指示器。

  3. 播放/暂停控制:我们使用一个浮动操作按钮(FloatingActionButton)来控制视频的播放和暂停。按钮的图标根据视频的播放状态动态变化。

  4. 释放资源:在dispose方法中,我们调用_controller?.dispose()来释放视频控制器占用的资源。

最后,在你的主应用文件(例如main.dart)中,导航到这个视频播放器屏幕:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Video Player Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: VideoPlayerScreen(),
    );
  }
}

这样,你就完成了一个简单的Flutter应用,它使用appinio_video_player插件来播放网络视频。请确保将视频URL替换为你自己的视频链接,并根据需要调整代码。

回到顶部