diff --git a/assets/executable/ffmpeg.exe b/assets/executable/ffmpeg.exe deleted file mode 100644 index a0fa8d9..0000000 Binary files a/assets/executable/ffmpeg.exe and /dev/null differ diff --git a/lib/services/converter.dart b/lib/services/converter.dart index 574ba62..876594f 100644 --- a/lib/services/converter.dart +++ b/lib/services/converter.dart @@ -10,7 +10,6 @@ import 'package:path/path.dart' as p; class ConverterService { late Directory tempDir; - late String assetName; late String ffmpegPath; ConverterService._(); @@ -24,23 +23,26 @@ class ConverterService { Future _init() async { tempDir = await getTemporaryDirectory(); - assetName = 'ffmpeg.exe'; - await copyExecutable(); + if (Platform.isWindows) { + ffmpegPath = 'ffmpeg.exe'; + } else if (Platform.isLinux) { + ffmpegPath = 'ffmpeg'; + } else if (Platform.isMacOS) { + ffmpegPath = 'ffmpeg'; + } + await checkFFmpeg(); } - Future copyExecutable() async { - File tempFile = File('${tempDir.path}/$assetName'); - - ByteData data = await rootBundle.load('assets/executable/$assetName'); - await tempFile.exists().then((value) { - if (!value) { - debugPrint('Copying $assetName to ${tempFile.path}'); - tempFile.writeAsBytes( - data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes)); + Future checkFFmpeg() async { + try { + var result = await Process.run(ffmpegPath, ['-version']); + if (result.exitCode == 0) { + print('FFmpeg is installed.'); + return; } - }); - - ffmpegPath = tempFile.path; + } catch (e) { + print('FFmpeg is not installed.'); + } } Future getTmpFile(String filename) async {