|
@@ -4,6 +4,7 @@ import 'package:fis_measure/view/player/controller.dart';
|
|
|
import 'package:fis_measure/view/player/enums.dart';
|
|
|
import 'package:fis_measure/view/player/events.dart';
|
|
|
import 'package:flutter/material.dart';
|
|
|
+import 'package:vid_player_demo/utils/image_holder.dart';
|
|
|
import 'package:vid_player_demo/utils/utils.dart';
|
|
|
import 'dart:ui' as ui;
|
|
|
import 'vid_painter.dart';
|
|
@@ -29,6 +30,7 @@ class VidCanvasPlayer extends StatefulWidget {
|
|
|
class _VidCanvasPlayerState extends State<VidCanvasPlayer> {
|
|
|
Uint8List? frameBytes;
|
|
|
ui.Image? image;
|
|
|
+ MyImageHolder? holder;
|
|
|
DateTime lastFrameTime = DateTime.now();
|
|
|
ListQueue<int> frames = ListQueue<int>()..addFirst(30); //预留一位防止分母为0
|
|
|
int maxFramesNum = 10;
|
|
@@ -75,7 +77,10 @@ class _VidCanvasPlayerState extends State<VidCanvasPlayer> {
|
|
|
// print("${DateTime.now()} Load frame \n ${debugList.toString()}");
|
|
|
// image?.dispose();
|
|
|
image = await decodeImageFromList(bytes);
|
|
|
- setState(() {});
|
|
|
+ print("${DateTime.now()} Load frame ${image?.width} x ${image?.height}");
|
|
|
+ // holder = MyImageHolder(image!.clone());
|
|
|
+ image?.dispose();
|
|
|
+ // setState(() {});
|
|
|
countCurFPS();
|
|
|
}
|
|
|
|
|
@@ -136,7 +141,7 @@ class _VidCanvasPlayerState extends State<VidCanvasPlayer> {
|
|
|
if (image != null) {
|
|
|
final size = MediaQuery.of(context).size;
|
|
|
return CustomPaint(
|
|
|
- painter: VidPainter(image: image!, contextSize: size),
|
|
|
+ painter: VidPainter(holder: holder!),
|
|
|
isComplex: false, //是否为复杂图像(true会缓存)
|
|
|
size: size,
|
|
|
);
|