flutter 视频播放器 FijkPlayer视频播放器的使用

FijkPlayer 第三方的一个视频播放器,这是一个大佬基于比利比利播放器封装的,有常用的API 可自定义样式
pub传送门

默认的样式 展示:

自定义的样式 展示:

**使用:**
fijkplayer: ^0.8.4

/// 声明一个FijkPlayer
final FijkPlayer player = FijkPlayer();
  @override
  void initState() {
   
   
  	/// 指定视频地址
	player.setDataSource("http://video.kekedj.com/20190215/mp4/20190527/TWICE%20-%20BDZ%20(Korean%20Ver.)%20(Stage%20Mix)%EF%BC%88%E6%97%A5%E6%9C%AC%E8%AA%9E%E5%AD%97%E5%B9%95%EF%BC%89.mp4", autoPlay: true);
    super.initState();

  }
  @override
  void dispose() {
   
   
    super.dispose();
    player.release();
  }
  
/// 使用FijkView
body: SafeArea(child: Center(
        child: FijkView(
          color: Colors.black,
          player: player,
          panelBuilder:  (FijkPlayer player, FijkData data, BuildContext context, Size viewSize, Rect texturePos) {
   
   
            /// 使用自定义的布局
            return CustomFijkPanel(
              player: player,
              buildContext: context,
              viewSize: viewSize,
              texturePos: texturePos,
            );
          },
        ),
      ),),

自定义的底部


class CustomFijkWidgetBottom extends StatefulWidget {
   
   
  final FijkPlayer player;
  final BuildContext buildContext;
  final Size viewSize;
  final Rect texturePos;

  const CustomFijkPanel({
   
   
    @required this.player,
    this.buildContext,
    this.viewSize,
    this.texturePos,
  });

  @override
  _CustomFijkWidgetBottomState createState() => 
<think>好的,我现在要帮用户介绍Flutter的视频播放框架。首先,我需要回忆一下Flutter中常用的视频播放解决方案。记得官方有一个video_player插件,应该是比较基础的,支持本地和网络视频。用户可能需要知道这个,因为它维护得比较好,而且和Flutter团队关联紧密。 接下来,用户可能想要更高级的功能,比如缓存或者自定义控制条。这时候可能需要提到第三方库,比如chewie,它是对video_player的封装,提供更友好的UI控件。还有fijkplayer,基于ijkplayer,可能功能更强大,支持更多格式,但需要注意许可证问题。 另外,用户可能关心直播相关的功能,比如RTMP或者HLS。这时候可能需要推荐flutter_ijkplayer或者其他的直播专用库。需要确认这些库的维护状态,避免推荐已经不再更新的项目。 还要考虑跨平台兼容性,比如Android和iOS的不同表现,以及是否支持Web或者桌面端。video_player在基础功能上应该没问题,但高级功能可能需要额外配置或插件。 用户可能也需要了解如何实现自定义播放器界面,这时候可以结合chewie的例子,说明如何利用现有的控件进行扩展。另外,缓存功能可能需要用到flutter_cache_manager,或者一些播放器自带的缓存机制。 还要注意许可证问题,尤其是使用第三方库时,比如fijkplayer基于ijkplayer,采用的是LGPL协议,需要遵守相应的开源要求。商业项目可能需要特别注意这一点。 最后,应该给出一个简单的示例代码,让用户快速上手。比如使用video_player加载一个网络视频,并展示如何与Chewie结合使用来美化控件。同时提醒用户添加依赖和配置AndroidManifest.xml以及iOS的Info.plist,确保网络权限和后台模式正确设置。 需要检查是否有遗漏的重要库,比如是否还有其他流行的播放器插件,比如better_player,或者flutter_vlc_player等,这些可能也是用户需要的选项。同时,要确保推荐的库目前还在积极维护,避免用户遇到无法解决的问题。 总结一下,应该分官方和第三方库来介绍,说明各自的特点、适用场景以及可能的注意事项,帮助用户根据项目需求选择合适的方案。</think>在Flutter中实现视频播放主要有以下常用框架方案,按使用场景可分类为: 一、官方基础方案 1. video_player(推荐基础选择) - 官方维护的插件,支持iOS/Android/macOS - 支持功能:基础播放控制、全屏、网络/本地视频 - 特点:API简洁但UI需自定义,适合需要深度定制的项目 - 代码示例: ```dart final controller = VideoPlayerController.network( 'https://example.com/sample.mp4' ); await controller.initialize(); VideoPlayer(controller) // 基础播放器组件 ``` 二、第三方增强方案 1. Chewie(推荐UI增强) - 基于video_player的封装库 - 提供Material/Cupertino风格控件:进度条、倍速播放、全屏按钮 - 示例组合使用: ```dart Chewie( controller: ChewieController( videoPlayerController: videoController, autoPlay: true, looping: true, ), ) ``` 2. FijkPlayer(高级功能选择) - 基于ijkplayer的跨平台播放器 - 支持格式:RTMP、HLS、FLV等流媒体协议 - 特色功能:硬解加速、精准seek、音量亮度手势 - 需注意:包体积增加约3MB,LGPL协议 3. Better Player - 整合video_player与ExoPlayer - 高级功能:字幕支持、画中画、缓存管理 - 配置示例: ```yaml better_player: ^0.7.1+1 ``` 三、直播专项方案 1. flutter_ijkplayer - 支持RTMP直播流 - 低延迟特性(约2-3秒) - 配置建议:需自行编译ijkplayer库 2. flutter_vlc_player - 基于VLC引擎 - 支持格式:RTSP、RTP、SRT - 适用场景:监控视频流播放 四、开发注意事项 1. 权限配置: ```xml <!-- AndroidManifest.xml --> <uses-permission android:name="android.permission.INTERNET"/> <application android:usesCleartextTraffic="true"> ``` 2. 后台播放(iOS): ```xml <!-- Info.plist --> <key>UIBackgroundModes</key> <array> <string>audio</string> </array> ``` 3. 状态管理建议: - 使用AutomaticKeepAliveClientMixin保持播放状态 - Dispose时务必调用controller.dispose() 建议选择策略: 1. 基础点播:video_player + Chewie组合 2. 直播场景:flutter_ijkplayer 3. 企业级需求:FijkPlayer + 自定义UI 4. 协议特殊需求:VLC引擎方案 调试技巧: - 使用官方提供的测试流: ```dart 'https://flutter.github.io/assets-for-api-docs/assets/videos/bee.mp4' ``` - 开启详细日志: ```dart FijkPlayer.setLogLevel(FijkLogLevel.Debug); ```
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值