From c0aabf53cf4b621236af6fc62f6ae2c7f49eb226 Mon Sep 17 00:00:00 2001 From: Mikael Finstad Date: Wed, 9 Mar 2022 23:40:09 +0800 Subject: [PATCH] try to support arm64 #1056 but without ffmpeg --- package.json | 39 ++++++++++++++++++++++++++------------- src/ffmpeg.js | 4 ++-- src/util.js | 1 + 3 files changed, 29 insertions(+), 15 deletions(-) diff --git a/package.json b/package.json index 31c425ee449..5e8e08add7a 100644 --- a/package.json +++ b/package.json @@ -11,9 +11,9 @@ "start:frontend": "cross-env BROWSER=none PORT=3001 DISABLE_ESLINT_PLUGIN=true react-scripts start", "start:electron": "wait-on http://localhost:3001 && electron .", "icon-gen": "mkdirp icon-build build-resources/appx && node script/icon-gen.mjs", - "download-ffmpeg-mac": "mkdirp ffmpeg/darwin && cd ffmpeg/darwin && wget https://github.com/mifi/ffmpeg-build-script/releases/download/4.4.1-2/ffmpeg -O ffmpeg && wget https://github.com/mifi/ffmpeg-build-script/releases/download/4.4.1-2/ffprobe -O ffprobe && chmod +x ffmpeg && chmod +x ffprobe", - "download-ffmpeg-linux": "mkdirp ffmpeg/linux && cd ffmpeg/linux && wget https://github.com/mifi/ffmpeg-builds/releases/download/4.4.1/ffmpeg-release-amd64-static.tar.xz -O ffmpeg.xz && tar xvf ffmpeg.xz ffmpeg-4.4.1-amd64-static/ffmpeg ffmpeg-4.4.1-amd64-static/ffprobe --strip-components=1", - "download-ffmpeg-windows": "mkdirp ffmpeg/win32 && cd ffmpeg/win32 && npx download-cli https://github.com/mifi/ffmpeg-builds/releases/download/4.4.1/ffmpeg-n4.4.1-2-gcc33e73618-win64-gpl-4.4.zip --out . --filename ffmpeg.zip && 7z x ffmpeg.zip && npx shx mv ffmpeg-n4.4.1-2-gcc33e73618-win64-gpl-4.4/bin/ffmpeg.exe ./ && npx shx mv ffmpeg-n4.4.1-2-gcc33e73618-win64-gpl-4.4/bin/ffprobe.exe ./", + "download-ffmpeg-mac": "mkdirp ffmpeg/darwin-x64 && cd ffmpeg/darwin-x64 && wget https://github.com/mifi/ffmpeg-build-script/releases/download/4.4.1-2/ffmpeg -O ffmpeg && wget https://github.com/mifi/ffmpeg-build-script/releases/download/4.4.1-2/ffprobe -O ffprobe && chmod +x ffmpeg && chmod +x ffprobe", + "download-ffmpeg-linux": "mkdirp ffmpeg/linux-x64 && cd ffmpeg/linux-x64 && wget https://github.com/mifi/ffmpeg-builds/releases/download/4.4.1/ffmpeg-release-amd64-static.tar.xz -O ffmpeg.xz && tar xvf ffmpeg.xz ffmpeg-4.4.1-amd64-static/ffmpeg ffmpeg-4.4.1-amd64-static/ffprobe --strip-components=1", + "download-ffmpeg-windows": "mkdirp ffmpeg/win32-x64 && cd ffmpeg/win32-x64 && npx download-cli https://github.com/mifi/ffmpeg-builds/releases/download/4.4.1/ffmpeg-n4.4.1-2-gcc33e73618-win64-gpl-4.4.zip --out . --filename ffmpeg.zip && 7z x ffmpeg.zip && npx shx mv ffmpeg-n4.4.1-2-gcc33e73618-win64-gpl-4.4/bin/ffmpeg.exe ./ && npx shx mv ffmpeg-n4.4.1-2-gcc33e73618-win64-gpl-4.4/bin/ffprobe.exe ./", "build": "yarn icon-gen && react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject", @@ -157,11 +157,11 @@ ], "extraResources": [ { - "from": "ffmpeg/darwin/ffmpeg", + "from": "ffmpeg/darwin-${arch}/ffmpeg", "to": "ffmpeg" }, { - "from": "ffmpeg/darwin/ffprobe", + "from": "ffmpeg/darwin-${arch}/ffprobe", "to": "ffprobe" } ], @@ -282,11 +282,11 @@ ], "extraResources": [ { - "from": "ffmpeg/win32/ffmpeg.exe", + "from": "ffmpeg/win32-${arch}/ffmpeg.exe", "to": "ffmpeg.exe" }, { - "from": "ffmpeg/win32/ffprobe.exe", + "from": "ffmpeg/win32-${arch}/ffprobe.exe", "to": "ffprobe.exe" } ], @@ -397,20 +397,33 @@ "linux": { "executableName": "losslesscut", "extraResources": [ - { - "from": "ffmpeg/linux/ffmpeg", + { + "from": "ffmpeg/linux-${arch}/ffmpeg", "to": "ffmpeg" }, { - "from": "ffmpeg/linux/ffprobe", + "from": "ffmpeg/linux-${arch}/ffprobe", "to": "ffprobe" } ], "icon": "icon-build/app-512.png", "target": [ - "tar.bz2", - "AppImage", - "snap" + { + "arch": "x64", + "target": "tar.bz2" + }, + { + "arch": "x64", + "target": "AppImage" + }, + { + "arch": "x64", + "target": "snap" + }, + { + "arch": "arm64", + "target": "tar.bz2" + } ] }, "snap": { diff --git a/src/ffmpeg.js b/src/ffmpeg.js index d20982681e3..65272afd4ac 100644 --- a/src/ffmpeg.js +++ b/src/ffmpeg.js @@ -6,7 +6,7 @@ import i18n from 'i18next'; import Timecode from 'smpte-timecode'; import { pcmAudioCodecs, getMapStreamsArgs } from './util/streams'; -import { getOutPath, isDurationValid, getExtensionForFormat, isWindows, isMac, platform } from './util'; +import { getOutPath, isDurationValid, getExtensionForFormat, isWindows, isMac, platform, arch } from './util'; const execa = window.require('execa'); const { join } = window.require('path'); @@ -31,7 +31,7 @@ function getFfPath(cmd) { const exeName = isWindows ? `${cmd}.exe` : cmd; if (customFfPath) return join(customFfPath, exeName); - if (isDev) return join('ffmpeg', platform, exeName); + if (isDev) return join('ffmpeg', `${platform}-${arch}`, exeName); return join(window.process.resourcesPath, exeName); } diff --git a/src/util.js b/src/util.js index d88bc389051..9e6ce0f7054 100644 --- a/src/util.js +++ b/src/util.js @@ -153,6 +153,7 @@ export const isStoreBuild = isMasBuild || isWindowsStoreBuild; export const isDurationValid = (duration) => Number.isFinite(duration) && duration > 0; export const platform = os.platform(); +export const arch = os.arch(); export const isWindows = platform === 'win32'; export const isMac = platform === 'darwin';