【问题标题】:How to start playing video in flutter video player from specific time duration如何从特定时间段开始在颤振视频播放器中播放视频
【发布时间】:2022-07-22 18:38:13
【问题描述】:

我正在使用 Flutter 的 Flick Video Player Package 来播放视频。而且我必须从最后剩下的时间开始播放视频,因为我可以节省存储时间。你能帮我看看我怎样才能从那个时间段开始播放视频(例如持续时间(秒:10)。

我已经试过了: _controller.seekTo(Duration:10) initState 但不工作。

我的视频播放器代码是

import 'package:education_app/utils/app_images.dart';
import 'package:education_app/utils/shared_preferences_contants.dart';
import 'package:flick_video_player/flick_video_player.dart';
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:visibility_detector/visibility_detector.dart';
import 'package:video_player/video_player.dart';

class VideoWidget extends StatefulWidget {
  VideoWidget({Key? key, this.videoUrl, this.chapterId, this.videoPlayTime})
      : super(key: key);
  String? videoUrl;
  int? chapterId;
  Duration? videoPlayTime;
  @override
  _VideoWidgetState createState() => _VideoWidgetState();
}

class _VideoWidgetState extends State<VideoWidget> {
  late VideoPlayerController _controller;
  Duration? videoPlayTime = Duration(hours: 00, minutes: 00, seconds: 15);

  late FlickManager flickManager;
  @override
  void initState() {
    super.initState();
    if (widget.videoUrl != null) {
      // String url =
      //     "http://linuxdevserver.centralindia.cloudapp.azure.com:8080/uploads/1641299601_ec4ce2f9db.mp4";
      print(
          '${widget.videoUrl}00000000000000000000000000000${widget.videoPlayTime}0000000000000');
      _controller = VideoPlayerController.network(
        "https://cdn.videvo.net/videvo_files/video/premium/video0390/large_watermarked/902-1_902-3981-PD2_preview.mp4",/*this will come from widget.url*/
        //"https://drive.google.com/uc?export=download&id=1OZyINvgyppCp-E6Ok-p9Yg7sLmqx1UKt",
        // "https://cdn.videvo.net/videvo_files/video/premium/video0390/large_watermarked/902-1_902-3981-PD2_preview.mp4",
        //'https://file-examples-com.github.io/uploads/2017/04/file_example_MP4_480_1_5MG.mp4',
        videoPlayerOptions: VideoPlayerOptions(mixWithOthers: false),
      );

      flickManager =
          FlickManager(videoPlayerController: _controller, autoPlay: false);
    }
  }

  @override
  Widget build(BuildContext context) {
    return
        Container(
            child: Column(children: [
      FlickVideoPlayer(
        flickManager: flickManager,
        flickVideoWithControls: FlickVideoWithControls(
          videoFit: BoxFit.contain,
          playerLoadingFallback: Center(child: Image.asset(Images.imgLoading)),
          backgroundColor: Colors.transparent,
          iconThemeData: IconThemeData(color: Colors.white, size: 20),
          //   closedCaptionTextStyle: TextStyle(fontSize: 8),
          controls: FlickPortraitControls(
            iconSize: 25,
          ),
        ),
        flickVideoWithControlsFullscreen: FlickVideoWithControls(
          controls: FlickLandscapeControls(),
        ),
      ),
      //    Text(widget.videoUrl!)
    ])
            // ),
            );
  }

  @override
  void dispose() {
    saveRecentVideoDetails();
    flickManager.dispose();
    _controller.dispose();

    super.dispose();
  }

  saveRecentVideoDetails() async {
    SharedPreferences store = await SharedPreferences.getInstance();
    print("Time${_controller.value.position}.......${_controller.dataSource};");
    print(recentVideoPlaytime + widget.chapterId.toString());
    await store.setString(
        recentVideoPlaytime, _controller.value.position.toString());
    await store.setString(recentVideoUrl, _controller.dataSource);
  }
}

【问题讨论】:

    标签: flutter dart flutter-layout flutter-dependencies flutter-video-player


    【解决方案1】:

    你可以试试_controller.seekTo(Duration(seconds: 2));

    【讨论】:

      【解决方案2】:

      seek要只改变视频的位置,你必须在初始化后播放它:

      _controller = VideoPlayerController.network(url)
        ..initialize().then((_) {
          setState(() {
            _controller!.seekTo(Duration(seconds: 10));
            _controller!.play();
          });
        });
      _controller!.addListener(checkVideo);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-09-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-03
        • 1970-01-01
        • 2020-03-02
        • 2019-12-10
        相关资源
        最近更新 更多