测试ffmpeg编译

This commit is contained in:
2025-03-26 19:13:52 +08:00
parent fd2a75dce2
commit ce2ccd5b96

View File

@ -8,6 +8,8 @@ const FFMPEG_TAG = "release/7.1"
const FFMPEG_SOURCE_DIR = path.join(__dirname, "_source/FFmpeg"); const FFMPEG_SOURCE_DIR = path.join(__dirname, "_source/FFmpeg");
const FFMPEG_INSTALL_DIR = path.join(__dirname, "FFmpeg"); const FFMPEG_INSTALL_DIR = path.join(__dirname, "FFmpeg");
const isWindows = os.platform() == "win32";
function checkEnv() { function checkEnv() {
if (!process.env.MSYSTEM_PREFIX) throw new Error("Please use msys2 environment to run this script"); if (!process.env.MSYSTEM_PREFIX) throw new Error("Please use msys2 environment to run this script");
const bash = process.env.SHELL; const bash = process.env.SHELL;
@ -26,14 +28,17 @@ function build() {
//configure //configure
if (!fs.existsSync(path.join(FFMPEG_SOURCE_DIR, "ffbuild/config.mak"))) { if (!fs.existsSync(path.join(FFMPEG_SOURCE_DIR, "ffbuild/config.mak"))) {
console.log("Configuring ffmpeg..."); console.log("Configuring ffmpeg...");
if (0 != spawnSync(process.env.SHELL, [ const args = [
path.join(FFMPEG_SOURCE_DIR, "configure"),
`--prefix=${FFMPEG_INSTALL_DIR}`, `--prefix=${FFMPEG_INSTALL_DIR}`,
"--enable-static", "--enable-static",
"--enable-small", "--enable-small",
"--toolchain=msvc", "--toolchain=msvc",
"--disable-programs", "--disable-programs",
], { stdio: "inherit", cwd: FFMPEG_SOURCE_DIR }).status) throw new Error("Failed to configure ffmpeg"); ];
const configureFile = path.join(FFMPEG_SOURCE_DIR, "configure");
if (isWindows) args.unshift(configureFile);
if (0 != spawnSync(isWindows ? process.env.SHELL : configureFile, args, { stdio: "inherit", cwd: FFMPEG_SOURCE_DIR }).status) throw new Error("Failed to configure ffmpeg");
} }
//make //make
if (0 != spawnSync("make", [ if (0 != spawnSync("make", [
@ -51,7 +56,7 @@ function resolve() {
for (const file of fs.readdirSync(path.join(FFMPEG_INSTALL_DIR, "lib"))) { for (const file of fs.readdirSync(path.join(FFMPEG_INSTALL_DIR, "lib"))) {
if (path.extname(file) == ".a") { if (path.extname(file) == ".a") {
const libName = file.replace(/\.a$/, "").replace(/^lib/, ""); const libName = file.replace(/\.a$/, "").replace(/^lib/, "");
fs.renameSync(path.join(FFMPEG_INSTALL_DIR, "lib", file), path.join(FFMPEG_INSTALL_DIR, "lib", libName + ".lib")); if (isWindows) fs.renameSync(path.join(FFMPEG_INSTALL_DIR, "lib", file), path.join(FFMPEG_INSTALL_DIR, "lib", libName + ".lib"));
libs.push(libName); libs.push(libName);
} }
} }
@ -68,7 +73,7 @@ async function main() {
fs.mkdirSync(path.dirname(FFMPEG_SOURCE_DIR), { recursive: true }); fs.mkdirSync(path.dirname(FFMPEG_SOURCE_DIR), { recursive: true });
fs.mkdirSync(path.dirname(FFMPEG_INSTALL_DIR), { recursive: true }); fs.mkdirSync(path.dirname(FFMPEG_INSTALL_DIR), { recursive: true });
checkEnv(); if (isWindows) checkEnv();
if (!fs.existsSync(path.join(FFMPEG_SOURCE_DIR, "configure"))) download(); if (!fs.existsSync(path.join(FFMPEG_SOURCE_DIR, "configure"))) download();
if (!fs.existsSync(path.join(FFMPEG_INSTALL_DIR, "config.cmake"))) { if (!fs.existsSync(path.join(FFMPEG_INSTALL_DIR, "config.cmake"))) {