Flutter视频播放插件alpha_player_plugin的使用

Flutter视频播放插件alpha_player_plugin的使用

alpha_player_plugin

对字节跳动官方原生组件AlphaPlayer的一个Flutter插件封装。

具体实现功能参见字节跳动官方GitHub: https://github.com/bytedance/AlphaPlayer

运行效果

特点

  • 支持Android和iOS双端。
  • 支持播放手机本地MP4文件。
  • 简单易用,直接传入路径地址。

快速接入

添加依赖

dependencies:
  alpha_player_plugin: ^0.0.1

用法

AlphaPlayerView

// 创建控制器
AlphaPlayerController controller = AlphaPlayerController();

// 使用AlphaPlayerView
AlphaPlayerView(
  controller: controller,
  width: xxx,
  height: xxx,
);

// 开始播放
controller.start(videoPath);

AlphaPlayerSimpleView (对AlphaPlayerView的简单封装)

// 使用AlphaPlayerSimpleView
AlphaPlayerSimpleView(
  path: videoPath,
  width: xxx,
  height: xxx,
);

AlphaPlayerSimpleView(
  path: filePath,
  width: xxx,
  height: xxx,
  isLooping: false,
  onStarted: (ct) {
    // 可以拿到controller,进行其他操作
    controller = ct;
  },
  onCompleted: (videoPath) {
    // isLooping为false 才能拿到播放结束的回调
  },
);

AlphaPlayerSimpleView说明

属性 描述
path 视频文件路径
width 宽度
height 高度
align 视频裁剪对齐方式,详见AlphaPlayerScaleType
isLooping 是否循环播放
onStarted 视频开始播放,可拿到controller
onCompleted 视频播放结束(仅在isLooping为false时生效)

小提示

项目目录下的test_video文件夹提供了测试视频,可以传到手机上运行example进行测试。

视频横向分辨率最好不要超过1920,实际视频最好不超过960,因为部分低端Android手机不支持太高分辨率的播放。详情参见: https://github.com/google/ExoPlayer/issues/4966

其他

如果对你有帮助,动动小手给一个star,谢谢。

目前该库支持的就是上述这些功能,如果有其他需求问题或者bug,欢迎提issue,会尽力帮助大家解决。

示例代码

以下是main.dart的示例代码:

import 'package:alpha_player_plugin_example/dem_simple_page.dart';
import 'package:flutter/material.dart';

import 'demo_page.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(
      home: Builder(
        builder: (context) {
          return Scaffold(
            body: Center(
              child: Column(
                mainAxisSize: MainAxisSize.min,
                children: [
                  ElevatedButton(
                    onPressed: () {
                      Navigator.push(context, MaterialPageRoute(builder: (context) {
                        return const DemoPage();
                      }));
                    },
                    child: const Text("AlphaPlayerView demo"),
                  ),
                  ElevatedButton(
                    onPressed: () {
                      Navigator.push(context, MaterialPageRoute(builder: (context) {
                        return const DemoSimplePage();
                      }));
                    },
                    child: const Text("AlphaPlayerSimpleView demo"),
                  ),
                ],
              ),
            ),
          );
        },
      ),
    );
  }
}

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

1 回复

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


当然,以下是一个关于如何在Flutter项目中使用alpha_player_plugin进行视频播放的代码示例。这个示例将展示如何集成和使用该插件来播放本地或网络视频。

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

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

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

接下来,在你的Flutter项目中创建一个新的页面或组件来使用alpha_player_plugin。以下是一个完整的示例代码:

import 'package:flutter/material.dart';
import 'package:alpha_player_plugin/alpha_player_plugin.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 AlphaPlayerController _controller;

  @override
  void initState() {
    super.initState();
    // 初始化控制器
    _controller = AlphaPlayerController.init();

    // 设置视频源(可以是本地路径或网络URL)
    String videoUrl = "https://www.example.com/path/to/your/video.mp4";
    // 本地视频示例: String videoUrl = "assets/videos/sample.mp4"; // 确保在pubspec.yaml中声明了assets
    _controller.setDataSource(videoUrl);

    // 监听视频准备完成事件
    _controller.addListener(() {
      if (_controller.value.isInitialized) {
        // 视频已初始化,可以开始播放
        _controller.play();
      }
    });
  }

  @override
  void dispose() {
    // 释放控制器资源
    _controller.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Alpha Player Plugin Demo'),
      ),
      body: Center(
        child: AlphaPlayerView(
          controller: _controller,
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          // 切换播放/暂停
          if (_controller.value.isPlaying) {
            _controller.pause();
          } else {
            _controller.play();
          }
        },
        child: Icon(
          _controller.value.isPlaying ? Icons.pause : Icons.play_arrow,
        ),
      ),
    );
  }
}

注意事项:

  1. 视频URL:确保提供的视频URL是有效的,或者如果使用的是本地视频,确保视频文件已经添加到assets目录下,并在pubspec.yaml中正确声明。
  2. 权限:如果是从网络加载视频,请确保你的应用有适当的网络访问权限。对于Android,你可能需要在AndroidManifest.xml中添加<uses-permission android:name="android.permission.INTERNET" />
  3. 错误处理:在实际应用中,你应该添加更多的错误处理逻辑,比如处理视频加载失败、网络错误等情况。

这个示例展示了如何使用alpha_player_plugin来播放视频,并提供了基本的播放/暂停功能。你可以根据需求进一步自定义和扩展这个示例。

回到顶部