flutter如何实现video_player_flutter_cache缓存视频播放

在使用video_player_flutter_cache插件时遇到缓存问题,视频无法正常缓存播放。具体表现为:设置了缓存路径和大小限制,但视频仍然每次都重新下载。请问如何正确配置才能实现视频缓存功能?是否需要额外设置网络请求头或其他参数?希望能提供一个完整的缓存实现示例代码。

2 回复

使用 video_player_flutter_cache 插件,通过 CachedVideoPlayerController 替换默认控制器,自动缓存网络视频。示例代码:

CachedVideoPlayerController controller = CachedVideoPlayerController.network(url);
await controller.initialize();
controller.play();

需在 pubspec.yaml 添加依赖。

更多关于flutter如何实现video_player_flutter_cache缓存视频播放的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在 Flutter 中使用 video_playervideo_player_flutter_cache 插件缓存视频播放,可按以下步骤实现:

  1. 添加依赖:在 pubspec.yaml 文件中添加:

    dependencies:
      video_player: ^2.8.2
      video_player_flutter_cache: ^1.0.4
    
  2. 基本实现

    import 'package:video_player/video_player.dart';
    import 'package:video_player_flutter_cache/video_player_flutter_cache.dart';
    
    class CachedVideoPlayer extends StatefulWidget {
      final String videoUrl;
    
      const CachedVideoPlayer({Key? key, required this.videoUrl}) : super(key: key);
    
      @override
      _CachedVideoPlayerState createState() => _CachedVideoPlayerState();
    }
    
    class _CachedVideoPlayerState extends State<CachedVideoPlayer> {
      late VideoPlayerController _controller;
    
      @override
      void initState() {
        super.initState();
        // 使用缓存管理器创建控制器
        _controller = CacheVideoPlayerController.network(widget.videoUrl)
          ..initialize().then((_) {
            setState(() {});
          });
      }
    
      @override
      Widget build(BuildContext context) {
        return _controller.value.isInitialized
            ? AspectRatio(
                aspectRatio: _controller.value.aspectRatio,
                child: VideoPlayer(_controller),
              )
            : Container(
                height: 200,
                child: Center(child: CircularProgressIndicator()),
              );
      }
    
      @override
      void dispose() {
        _controller.dispose();
        super.dispose();
      }
    }
    
  3. 控制播放

    • 播放:_controller.play()
    • 暂停:_controller.pause()
    • 跳转:_controller.seekTo(Duration(seconds: 10))
  4. 缓存管理

    • 默认缓存路径为应用缓存目录
    • 可通过 CacheVideoPlayerController.setCachePath() 自定义路径
    • 使用 CacheManager 清理缓存:CacheManager().emptyCache()

注意事项

  • 首次播放会下载并缓存视频
  • 后续播放自动使用缓存文件
  • 支持网络视频 URL
  • 确保存储权限(Android 需要 WRITE_EXTERNAL_STORAGE

这样即可实现带缓存的视频播放功能,提升用户体验并减少流量消耗。

回到顶部