代码拉取完成,页面将自动刷新
const fs = require('fs');
const path = require('path');
const { exec } = require('child_process');
// 配置工具路径
const vgmstreamW64 = path.join(__dirname, 'plugin', 'vgmstream-win64', 'vgmstream-cli.exe');
// 配置工作目录
const bnkDirectory = path.join(__dirname, 'bnks'); // .bnk 文件所在目录
const outputDirectory = path.join(__dirname, 'ext'); // 输出目录
// 检查工具是否存在
if (!fs.existsSync(vgmstreamW64) ) {
console.error('请确保 vgmstreamW64 工具已正确安装并配置路径!');
process.exit(1);
}
// 迁移到ext文件
function extractWemFiles(bnkFile) {
const data = fs.readFileSync(bnkFile);
// 假设文件的第 128 字节后是音频数据(具体需根据 .bnk 格式调整)
// const wemDataOffset = 128;
// const wemData = data.slice(wemDataOffset);
// 保存全部data
// 保存为临时 .wem 文件
const wemFilePath = path.join(outputDirectory, `${path.basename(bnkFile, '.bnk')}.bnk`);
fs.writeFileSync(wemFilePath, data);
return wemFilePath;
}
// 将 .wem 转换为 .ogg 的方法
function convertWemToOgg(wemFile) {
// console.log(wemFile)
// 执行 ww2ogg 转换
exec(`"${vgmstreamW64}" "${wemFile}"`, (err, stdout, stderr) => {
if (err) {
console.error(`转换失败: ${stderr}`);
return;
}
fs.unlinkSync(wemFile)
console.log(`转换成功:${wemFile}`)
});
}
// 主函数:处理目录中的所有 .bnk 文件
function processBnkFiles() {
// 检查并创建输出目录
if (!fs.existsSync(outputDirectory)) {
fs.mkdirSync(outputDirectory);
}
// 遍历目录中的所有 .bnk 文件
const bnkFiles = fs.readdirSync(bnkDirectory).filter(file => file.endsWith('.bnk'));
if (bnkFiles.length === 0) {
console.error('未找到任何 .bnk 文件!');
return;
}
bnkFiles.forEach(file => {
const bnkFilePath = path.join(bnkDirectory, file);
const wemFile = extractWemFiles(bnkFilePath);
convertWemToOgg(wemFile);
});
}
// 启动程序
processBnkFiles();
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。