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

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

版本说明

请使用0.0.11或者往上的版本,0.0.9也可以。

  • 0.0.11支持了flutter stable 3.10.6。
  • 0.0.9支持了iOS下的动态更换播放源url的功能。

此项目是依赖于fijkplayer的插件的衍生产物,修复了fijkplayer的不支持wav,s48等音频格式等问题。

项目介绍

fijkplayer_ijkfix -> fijkplayer -> ijkplayer(befovy:https://github.com/befovy/ijkplayer.git) -> ijkplayer
-> 代表依赖于

若想自己去编译ijkplayer(befovy),需要去按照他的action去编译:

https://github.com/befovy/ijkplayer/actions/runs/156246096/workflow

编译ijkplayer的流程

cd 自己喜欢的文件夹。。。
git clone https://github.com/befovy/ijkplayer.git ijkplayer-ios
cd ijkplayer-ios
修改 ios 文件夹下的 module.sh,在里面添加自己需要新增的编解码格式

例如,如果需要支持s48音频格式:

export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-decoder=mpeg4"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-decoder=mp2*"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-decoder=ac3"
再执行以下命令
bash init-ios-openssl.sh
bash init-ios.sh
cd ios
再执行以下命令
bash compile-openssl.sh all
bash compile-ffmpeg.sh all
最后在IJKMediaDemo中去查询IJKMediaPlayer.framework 的产物,丢到fijkplayer_ijkfix -> ios -> Frameworks中去

插件支持

顺便说一句:这个插件依旧支持fijkplayer_skin。

发布

  1. 检查包:

    flutter packages pub publish --dry-run
    
  2. 指定服务器发布:

    flutter packages pub publish --server=https://pub.dartlang.org
    
  3. 普通的发布:

    flutter packages pub publish
    

完整示例代码

以下是完整的示例代码,用于创建一个简单的视频播放器页面:

import 'package:flutter/material.dart';
import 'fijk_video_page.dart'; // 假设这是你的视频播放组件

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

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

class _MyAppState extends State<MyApp> {
  [@override](/user/override)
  Widget build(BuildContext context) {
    // FijkLog.setLevel(FijkLogLevel.Debug);
    return MaterialApp(
      theme: ThemeData(
        primaryColor: Color(0xFFffd54f),
        primaryColorDark: Color(0xFFffc107),
        primaryColorLight: Color(0xFFffecb3),
        dividerColor: Color(0xFFBDBDBD),
      ),
      home: FijkVideoPage(), // 使用FijkVideoPage作为主页
    );
  }
}

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

1 回复

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


fijkplayer_ijkfix 是一个基于 ijkplayer 的 Flutter 视频播放器插件,支持 Android 和 iOS 平台。它提供了丰富的功能和自定义选项,适用于需要复杂视频播放功能的应用程序。

以下是使用 fijkplayer_ijkfix 的基本步骤:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  fijkplayer_ijkfix: ^0.10.0  # 请检查最新版本

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

2. 导入包

在需要使用播放器的 Dart 文件中导入 fijkplayer_ijkfix 包:

import 'package:fijkplayer_ijkfix/fijkplayer_ijkfix.dart';

3. 初始化播放器

initState 方法中初始化播放器,并在 dispose 方法中释放资源:

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

class _VideoPlayerScreenState extends State<VideoPlayerScreen> {
  final FijkPlayer player = FijkPlayer();

  @override
  void initState() {
    super.initState();
    // 设置播放源
    player.setDataSource("https://www.sample-videos.com/video123/mp4/720/big_buck_bunny_720p_1mb.mp4", autoPlay: true);
  }

  @override
  void dispose() {
    super.dispose();
    player.release();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Video Player"),
      ),
      body: Center(
        child: FijkView(
          player: player,
        ),
      ),
    );
  }
}

4. 播放控制

你可以通过 player 对象来控制视频的播放、暂停、快进、快退等操作。例如:

player.start();  // 开始播放
player.pause();  // 暂停播放
player.seekTo(Duration(seconds: 30));  // 跳转到指定时间

5. 自定义UI

FijkView 提供了一个默认的播放器界面,但你可以通过自定义 UI 来满足特定需求。例如,你可以使用 FijkPlayer 的状态和事件来构建自己的播放控制界面。

FijkView(
  player: player,
  panelBuilder: fijkPanel2Builder(
    // 自定义面板
    (FijkPlayer player, BuildContext context, Size viewSize, Rect texturePos) {
      return CustomControlPanel(player, context, viewSize, texturePos);
    },
  ),
)

6. 处理播放器事件

你可以监听播放器的事件来处理播放状态、错误等信息。例如:

player.addListener(() {
  if (player.state == FijkState.completed) {
    // 播放完成
  }
});

7. 配置ijkplayer

fijkplayer_ijkfix 允许你配置 ijkplayer 的选项。你可以在初始化播放器时设置这些选项:

player.setOption(FijkOption.hostCategory, "request-screen-on", 1);
player.setOption(FijkOption.playerCategory, "mediacodec", 1);

8. 处理全屏播放

FijkView 支持全屏播放。你可以通过监听全屏事件来处理全屏模式下的 UI 变化。

player.onFullScreenChange.listen((bool isFullScreen) {
  if (isFullScreen) {
    // 进入全屏模式
  } else {
    // 退出全屏模式
  }
});

9. 处理错误

你可以通过监听错误事件来处理播放过程中的错误:

player.onError.listen((event) {
  // 处理错误
});
回到顶部