chewie icon indicating copy to clipboard operation
chewie copied to clipboard

Video re-downloads when seeking back on Android

Open louisdeveseleer opened this issue 2 years ago • 0 comments

Issue description:

  • Using a network mp4 video.
  • The video has finished downloading before I press play.
  • When seeking forward, there is generally no problem.
  • When seeking back on Android, the video re-downloads before proceeding.
  • No issue on iOS: there is no loading time at all when seeking.

Demonstration on Android: https://github.com/fluttercommunity/chewie/assets/59314108/7ba433a9-994e-4de0-b86e-d3c676cdea59

Demonstration on iOS: https://github.com/fluttercommunity/chewie/assets/59314108/6fcb3b50-d289-4fa1-9be8-77ed26f90610

Minimal reproduction code:

import 'package:chewie/chewie.dart';
import 'package:flutter/material.dart';
import 'package:video_player/video_player.dart';

void main() {
  runApp(
    const MaterialApp(
      home: Scaffold(
        body: MyApp(),
      ),
    ),
  );
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  late final VideoPlayerController videoController;
  ChewieController? chewieController;

  Future<void> init() async {
    const url =
        'https://firebasestorage.googleapis.com/v0/b/calistree.appspot.com/o/exerciseVideos%2Fe097%2Fe097-264.mp4?alt=media';
    videoController = VideoPlayerController.network(url);
    await videoController.initialize();
    chewieController = ChewieController(
      videoPlayerController: videoController,
    );
    setState(() {});
  }

  @override
  void initState() {
    init();
    super.initState();
  }

  @override
  void dispose() {
    videoController.dispose();
    chewieController?.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return chewieController == null
        ? const Center(
            child: CircularProgressIndicator.adaptive(),
          )
        : SafeArea(
            child: Chewie(controller: chewieController!),
          );
  }
}

louisdeveseleer avatar Jun 19 '23 02:06 louisdeveseleer