Fplayer

一套 Dart,五端原生播放

开始构建浏览播放器 API

跨平台媒体引擎· fplayercore 1.2.12

一次播放。处处运行。

一套 Dart API,连接 Android、iOS、macOS、Windows 和 OpenHarmony 的原生 fplayercore 内核。跨端复用接口,不牺牲平台体验。

Android iOS macOS Windows OpenHarmony

一个运行时 · 五个目标

一个播放器对象。
五个原生表面。

选择一个平台。同一套 FPlayer 状态、纹理和音轨调用,落到该平台的原生层。

原生桥接

硬件解码已开启。

原生 fplayercore 链路已启用,这是 FPlayer 在所有支持平台上默认使用的状态。

Dart FPlayer→MethodChannel / NAPI→fplayercore
原生解码,纹理输出。硬件链路

保持不变的能力

API 保持统一。
细节各自精彩。

平台团队维护各自的表面和分发包,产品团队只需要一套播放器模型。

一个对象

同一个 FPlayer。
五个原生内核。

创建一次,就能从手机窗口迁移到桌面窗口,而不用重写播放状态机。

AndroidiOSmacOSWindowsOpenHarmony

音轨

切换语言,不用重建。

英语 · AAC开启
评论音轨
日语 · AAC

读取语言、编码和采样率,按流索引选择音轨。

自适应表面

一帧画面,适配每块屏幕。

旋转、缩放和全屏由 FView 与原生纹理共同处理。

分发

每个平台都有自己的官方包。

Maven Central AAR、SwiftPM binaryTarget、Windows DLL 和 OpenHarmony HAR 都来自同一个 ijkplayer 发布版本。

MavenAndroid AARSPMApple binaryTargetDLLWindows x64HAROpenHarmony

从第一帧到第一次切换

一套 API。
无需分叉。

初始化、准备、读取轨道、选择轨道。平台细节不会泄漏到 Dart 调用点。

  1. 01

    创建播放器并设置媒体源。

  2. 02

    准备一次,读取媒体元数据。

  3. 03

    按流索引选择任意音轨。

打开完整 API →
video_page.dartDart
// one player, every target
final player = FPlayer();

await player.setDataSource(url);
await player.prepareAsync();

final tracks = await player.getAudioTracks();
await player.setAudioTrack(tracks.first);
Android · iOS · macOS · Windows · OpenHarmonyfplayercore 1.2.12

为每一块屏幕而构建

发布到 每一个平台。

从一个 Flutter 应用开始,需要时再添加平台。FPlayer 与 fplayercore 始终保持契约。

AndroidiOSmacOSWindowsOpenHarmony