Generate a new file by compressed video, and provide metadata. Get video thumbnail from a video path, supports JPEG/GIF. To reduce app size not using FFmpeg in IOS.
MIT License
186
stars
72
forks
source link
[help]Video compression can not get compression progress 【flutter_video_compress: ^0.3.7+8】 #104
Description
Video compression can not get compression progress
Platform
Android
Code Example (if has)
import 'dart:async'; import 'dart:io';
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; import 'package:flutter_video_compress/flutter_video_compress.dart'; import 'package:image_pickers/image_pickers.dart';
class TestVideoPage extends StatefulWidget {
@override _TestVideoPageState createState() => _TestVideoPageState(); }
class _TestVideoPageState extends State {
final _flutterVideoCompress = FlutterVideoCompress(); Subscription _subscription;
Image _thumbnailFileImage; Image _gifFileImage;
MediaInfo _originalVideoInfo = MediaInfo(path: ''); MediaInfo _compressedVideoInfo = MediaInfo(path: ''); String _taskName; double _progressState = 0;
final _loadingStreamCtrl = StreamController.broadcast();
@override void initState() { // TODO: implement initState super.initState(); _subscription = _flutterVideoCompress.compressProgress$.subscribe((progress) { debugPrint("progress----" + progress.toString()); setState(() { _progressState = progress; }); }); }
@override void dispose() { super.dispose(); _subscription.unsubscribe(); _loadingStreamCtrl.close(); }
Future runFlutterVideoCompressMethods(String videoFile) async {
_loadingStreamCtrl.sink.add(true);
}
@override Widget build(BuildContext context) { return Scaffold( body: Center( child: OutlinedButton( onPressed: () async { List _listVideoPaths = await ImagePickers.pickerPaths(
galleryMode: GalleryMode.video,
selectCount: 1,
);
runFlutterVideoCompressMethods(_listVideoPaths[0].path);
},
child: Text("选择视频"),
),
),
);
}
}
Expected solution
Expect description of the solution