Flutter视频播放插件better_player的使用

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

Flutter视频播放插件better_player的使用

Better Player #

pub package pub package pub package

这是一个高级视频播放器插件。它解决了许多常见的用例,并且易于运行。

介绍 #

此插件基于Chewie。Chewie是一个非常棒的插件,在许多情况下表现良好。Better Player是Chewie想法的延续。Better Player修复了常见问题,增加了更多的配置选项,并解决了典型用例。

特性:
✔️ 修复了常见问题
✔️ 增加了高级配置选项
✔️ 重构了播放器控制
✔️ 支持播放列表
✔️ 支持在ListView中播放视频
✔️ 支持字幕:(格式:SRT, WEBVTT,支持HTML标签;来自HLS的字幕;视频的多个字幕)
✔️ 支持HTTP头
✔️ 支持BoxFit视频
✔️ 支持播放速度
✔️ 支持HLS(轨道,字幕(也包括分段),音频轨道选择)
✔️ 支持DASH(轨道,字幕,音频轨道选择)
✔️ 支持替代分辨率
✔️ 支持缓存
✔️ 支持通知
✔️ 支持画中画
✔️ 支持DRM(令牌,Widevine,FairPlay EZDRM)
✔️ 更多功能...

文档 #

重要信息 #

该插件仍在开发中。每个版本都可能有破坏性更改。该插件是免费的部分时间开发。如果您需要其他可用在pub dev上的播放器支持的功能,可以自由创建PR。所有有价值的贡献都是受欢迎的!

完整示例代码

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

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Better Player Demo',
      theme: ThemeData(
        primarySwatch: Colors.green,
      ),
      home: MyHomePage(),
    );
  }
}

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

class _MyHomePageState extends State<MyHomePage> {
  // 初始化BetterPlayerController
  BetterPlayerController _betterPlayerController;

  [@override](/user/override)
  void initState() {
    super.initState();

    // 配置BetterPlayerController
    _betterPlayerController = BetterPlayerController(
      BetterPlayerConfiguration(
        aspectRatio: 16 / 9,
        autoPlay: true,
        looping: false,
      ),
    );

    // 设置视频源
    _betterPlayerController.setupDataSource(BetterPlayerDataSource(
      BetterPlayerDataSourceType.network,
      "https://www.sample-videos.com/video123/mp4/720/big_buck_bunny_720p_20mb.mp4",
    ));
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Better Player Demo"),
      ),
      body: Center(
        child: BetterPlayer(
          controller: _betterPlayerController,
        ),
      ),
    );
  }
}

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

1 回复

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


当然,以下是一个关于如何在Flutter项目中使用better_player插件来播放视频的示例代码。better_player是一个功能强大的Flutter视频播放插件,支持多种视频格式和网络视频播放。

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

dependencies:
  flutter:
    sdk: flutter
  better_player: ^0.0.x  # 请替换为最新版本号

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

接下来,是一个简单的示例代码,展示如何使用better_player来播放本地和网络视频:

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

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

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

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

class _VideoPlayerScreenState extends State<VideoPlayerScreen> {
  BetterPlayerController? _betterPlayerController;

  @override
  void initState() {
    super.initState();
    // 本地视频示例
    String localVideoUrl = 'assets/sample_video.mp4'; // 确保在pubspec.yaml中声明了assets

    // 网络视频示例
    String networkVideoUrl = 'https://www.example.com/sample_video.mp4';

    // 初始化BetterPlayerController
    _betterPlayerController = BetterPlayerController(
      BetterPlayerConfiguration(
        aspectRatio: 16 / 9,
        autoPlay: true,
        controlsConfiguration: BetterPlayerControlsConfiguration(
          enableSubtitles: true,
          enablePlaybackSpeed: true,
        ),
      ),
      betterPlayerDataSource: BetterPlayerDataSource.network(networkVideoUrl),
      // 如果要播放本地视频,请使用以下代码替换上面一行
      // betterPlayerDataSource: BetterPlayerDataSource.asset(localVideoUrl),
    );
  }

  @override
  void dispose() {
    _betterPlayerController?.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Better Player Example'),
      ),
      body: Center(
        child: _betterPlayerController != null
            ? BetterPlayer(controller: _betterPlayerController!)
            : Container(),
      ),
    );
  }
}

在上面的代码中,我们创建了一个简单的Flutter应用,其中包含一个视频播放页面。BetterPlayerController用于管理视频播放的配置和数据源。我们提供了两个示例视频URL:一个是本地视频(确保你在pubspec.yaml中声明了assets),另一个是网络视频。

请注意,如果你选择播放本地视频,需要在pubspec.yaml文件中声明视频资产:

flutter:
  assets:
    - assets/sample_video.mp4

确保将视频文件放在assets文件夹中,并且文件名与pubspec.yaml中声明的文件名相匹配。

这样,你就可以在Flutter应用中使用better_player插件来播放视频了。

回到顶部