Flutter视频播放器插件fijkplayer_new的使用

Flutter视频播放器插件fijkplayer_new的使用

手把手带你写 Flutter 系统音量插件Flutter 多版本管理工具 fvm

HitCount     pub package     Action Status    

fijkplayer 是一个基于 ijkplayer 的 Flutter 媒体播放器插件,适用于 iOS 和 Android 平台。

您的支持是我们开发的动力。欢迎 Star,欢迎 PR~。 反馈欢迎并 Pull Requests 最受欢迎!

文档

安装

pubspec.yaml 文件中添加 fijkplayer 作为依赖项。

dependencies:
  fijkplayer: ^{{latest version}}

{{latest version}} 替换为上面徽章中的版本号。

如果要使用未发布到 pub 的 Git 分支,可以这样配置:

dependencies:
  fijkplayer:
    git:
      url: https://github.com/befovy/fijkplayer.git
      ref: develop # 可以替换为分支或标签名称

示例

以下是一个简单的示例代码,展示如何使用 fijkplayer 插件来播放视频。

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

class VideoScreen extends StatefulWidget {
  final String url;

  VideoScreen({[@required](/user/required) this.url});

  [@override](/user/override)
  _VideoScreenState createState() => _VideoScreenState();
}

class _VideoScreenState extends State<VideoScreen> {
  final FijkPlayer player = FijkPlayer();

  _VideoScreenState();

  [@override](/user/override)
  void initState() {
    super.initState();
    player.setDataSource(widget.url, autoPlay: true);
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(title: Text("Fijkplayer Example")),
        body: Container(
          alignment: Alignment.center,
          child: FijkView(
            player: player,
          ),
        ));
  }

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

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

1 回复

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


fijkplayer_new 是一个基于 ijkplayer 的 Flutter 视频播放器插件。它提供了强大的视频播放功能,支持多种视频格式和流媒体协议。以下是如何在 Flutter 项目中使用 fijkplayer_new 的基本步骤。

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 fijkplayer_new 依赖:

dependencies:
  flutter:
    sdk: flutter
  fijkplayer_new: ^x.x.x  # 请使用最新版本

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

2. 初始化播放器

在你的 Dart 文件中导入 fijkplayer_new 并初始化播放器:

import 'package:fijkplayer_new/fijkplayer_new.dart';

FijkPlayer player = FijkPlayer();

3. 设置数据源

你可以设置本地文件、网络 URL 或其他数据源:

// 设置网络视频
player.setDataSource(
  "https://www.example.com/video.mp4",
  autoPlay: true,
);

// 或者设置本地文件
player.setDataSource(
  "file:///path/to/local/video.mp4",
  autoPlay: true,
);

4. 创建播放器 UI

使用 FijkView 来创建播放器的 UI:

FijkView(
  player: player,
  panelBuilder: (FijkPlayer player, FijkData data, BuildContext context, Size viewSize, Rect texturePos) {
    return FijkPanel(
      player: player,
      viewSize: viewSize,
      texturePos: texturePos,
    );
  },
)

5. 控制播放器

你可以使用 FijkPlayer 的 API 来控制播放器的行为,例如播放、暂停、停止等:

// 播放
player.start();

// 暂停
player.pause();

// 停止
player.stop();

// 跳转到指定位置(单位:毫秒)
player.seekTo(5000);

// 释放资源
player.release();

6. 处理生命周期

为了确保播放器在页面生命周期变化时正确处理资源,你需要在 State 的生命周期方法中进行相应的处理:

[@override](/user/override)
void initState() {
  super.initState();
  player = FijkPlayer();
}

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

[@override](/user/override)
void didChangeAppLifecycleState(AppLifecycleState state) {
  if (state == AppLifecycleState.paused) {
    player.pause();
  } else if (state == AppLifecycleState.resumed) {
    player.start();
  }
}

7. 示例代码

以下是一个完整的示例代码:

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

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

class _VideoPlayerScreenState extends State<VideoPlayerScreen> with WidgetsBindingObserver {
  FijkPlayer player;

  [@override](/user/override)
  void initState() {
    super.initState();
    player = FijkPlayer();
    player.setDataSource(
      "https://www.example.com/video.mp4",
      autoPlay: true,
    );
    WidgetsBinding.instance.addObserver(this);
  }

  [@override](/user/override)
  void dispose() {
    WidgetsBinding.instance.removeObserver(this);
    player.release();
    super.dispose();
  }

  [@override](/user/override)
  void didChangeAppLifecycleState(AppLifecycleState state) {
    if (state == AppLifecycleState.paused) {
      player.pause();
    } else if (state == AppLifecycleState.resumed) {
      player.start();
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Video Player"),
      ),
      body: Center(
        child: FijkView(
          player: player,
          panelBuilder: (FijkPlayer player, FijkData data, BuildContext context, Size viewSize, Rect texturePos) {
            return FijkPanel(
              player: player,
              viewSize: viewSize,
              texturePos: texturePos,
            );
          },
        ),
      ),
    );
  }
}
回到顶部