From 4cbb164f4d4a7b9d21db114e4bc6d15736caa08d Mon Sep 17 00:00:00 2001 From: an-lee Date: Wed, 10 Jan 2024 18:57:09 +0800 Subject: [PATCH] download ffmepg for arm64 arch --- enjoy/src/main/ffmpeg.ts | 47 ++++++++++++++++++++++++++++++++-------- 1 file changed, 38 insertions(+), 9 deletions(-) diff --git a/enjoy/src/main/ffmpeg.ts b/enjoy/src/main/ffmpeg.ts index a5930287..2b803434 100644 --- a/enjoy/src/main/ffmpeg.ts +++ b/enjoy/src/main/ffmpeg.ts @@ -1,4 +1,4 @@ -import { ipcMain, app } from "electron"; +import { ipcMain } from "electron"; import Ffmpeg from "fluent-ffmpeg"; import settings from "@main/settings"; import log from "electron-log/main"; @@ -6,6 +6,7 @@ import path from "path"; import fs from "fs-extra"; import AdmZip from "adm-zip"; import downloader from "@main/downloader"; +import storage from "@main/storage"; const logger = log.scope("ffmepg"); export default class FfmpegWrapper { @@ -174,7 +175,41 @@ export class FfmpegDownloader { } } + async downloadForDarwinArm64(webContents?: Electron.WebContents) { + const DARWIN_FFMPEG_ARM64_URL = storage.getUrl( + "ffmpeg-apple-arm64-build-6.0.zip" + ); + + fs.ensureDirSync(path.join(settings.libraryPath(), "ffmpeg")); + + const ffmpegZipPath = await downloader.download(DARWIN_FFMPEG_ARM64_URL, { + webContents, + }); + const ffmepgZip = new AdmZip(ffmpegZipPath); + + ffmepgZip.extractEntryTo( + "ffmpeg/ffmpeg", + path.join(settings.libraryPath(), "ffmpeg"), + false, + true + ); + + ffmepgZip.extractEntryTo( + "ffmpeg/ffprobe", + path.join(settings.libraryPath(), "ffmpeg"), + false, + true + ); + + fs.chmodSync(path.join(settings.libraryPath(), "ffmpeg", "ffmpeg"), 0o775); + fs.chmodSync(path.join(settings.libraryPath(), "ffmpeg", "ffprobe"), 0o775); + } + async downloadForDarwin(webContents?: Electron.WebContents) { + if (process.arch === "arm64") { + return this.downloadForDarwinArm64(webContents); + } + const DARWIN_FFMPEG_URL = "https://evermeet.cx/ffmpeg/getrelease/zip"; const DARWIN_FFPROBE_URL = "https://evermeet.cx/ffmpeg/getrelease/ffprobe/zip"; @@ -192,10 +227,7 @@ export class FfmpegDownloader { true ); - fs.chmodSync( - path.join(settings.libraryPath(), "ffmpeg", "ffmpeg"), - 0o775 - ); + fs.chmodSync(path.join(settings.libraryPath(), "ffmpeg", "ffmpeg"), 0o775); const ffprobeZipPath = await downloader.download(DARWIN_FFPROBE_URL, { webContents, @@ -207,10 +239,7 @@ export class FfmpegDownloader { false, true ); - fs.chmodSync( - path.join(settings.libraryPath(), "ffmpeg", "ffprobe"), - 0o775 - ); + fs.chmodSync(path.join(settings.libraryPath(), "ffmpeg", "ffprobe"), 0o775); return settings.ffmpegConfig(); }