setupFFMpegOnWindows method
Future<bool>
setupFFMpegOnWindows({
- CancelToken? cancelToken,
- void onProgress(
- FFMpegProgress progress
- Map<
String, dynamic> ? queryParameters,
Implementation
Future<bool> setupFFMpegOnWindows({
CancelToken? cancelToken,
void Function(FFMpegProgress progress)? onProgress,
Map<String, dynamic>? queryParameters,
}) async {
if (Platform.isWindows) {
if ((_ffmpegBinDirectory == null) || (_tempFolderPath == null)) {
await initialize();
}
Directory tempDir = Directory(_tempFolderPath!);
if (await tempDir.exists() == false) {
await tempDir.create(recursive: true);
}
Directory installationDir = Directory(_ffmpegInstallationPath!);
if (await installationDir.exists() == false) {
await installationDir.create(recursive: true);
}
final String ffmpegZipPath = path.join(_tempFolderPath!, "ffmpeg.zip");
final File tempZipFile = File(ffmpegZipPath);
if (await tempZipFile.exists() == false) {
try {
Dio dio = Dio();
Response response = await dio.download(
_ffmpegUrl,
ffmpegZipPath,
cancelToken: cancelToken,
onReceiveProgress: (int received, int total) {
onProgress?.call(FFMpegProgress(
downloaded: received,
fileSize: total,
phase: FFMpegProgressPhase.downloading,
));
},
queryParameters: queryParameters,
);
if (response.statusCode == HttpStatus.ok) {
onProgress?.call(FFMpegProgress(
downloaded: 0,
fileSize: 0,
phase: FFMpegProgressPhase.decompressing,
));
await compute(extractZipFileIsolate, {
'zipFile': tempZipFile.path,
'targetPath': _ffmpegInstallationPath,
});
onProgress?.call(FFMpegProgress(
downloaded: 0,
fileSize: 0,
phase: FFMpegProgressPhase.inactive,
));
return true;
} else {
onProgress?.call(FFMpegProgress(
downloaded: 0,
fileSize: 0,
phase: FFMpegProgressPhase.inactive,
));
return false;
}
} catch (e) {
onProgress?.call(FFMpegProgress(
downloaded: 0,
fileSize: 0,
phase: FFMpegProgressPhase.inactive,
));
return false;
}
} else {
onProgress?.call(FFMpegProgress(
downloaded: 0,
fileSize: 0,
phase: FFMpegProgressPhase.decompressing,
));
try {
await compute(extractZipFileIsolate, {
'zipFile': tempZipFile.path,
'targetPath': _ffmpegInstallationPath,
});
onProgress?.call(FFMpegProgress(
downloaded: 0,
fileSize: 0,
phase: FFMpegProgressPhase.inactive,
));
return true;
} catch (e) {
onProgress?.call(FFMpegProgress(
downloaded: 0,
fileSize: 0,
phase: FFMpegProgressPhase.inactive,
));
return false;
}
}
} else {
onProgress?.call(FFMpegProgress(
downloaded: 0,
fileSize: 0,
phase: FFMpegProgressPhase.inactive,
));
return true;
}
}