2021-03-05 14:44:33 +00:00
|
|
|
import { execSync, exec } from "child_process";
|
2021-03-07 16:10:41 +00:00
|
|
|
import { mkdirSync, readdirSync, rmdirSync } from "fs";
|
2021-03-05 14:44:33 +00:00
|
|
|
import { join } from "path";
|
|
|
|
|
2021-03-07 16:10:41 +00:00
|
|
|
export function extract_video(
|
|
|
|
tempdir,
|
|
|
|
jpsxdec_jar,
|
|
|
|
disc1_index,
|
|
|
|
disc2_index,
|
|
|
|
no_delete
|
|
|
|
) {
|
|
|
|
// extract all video
|
2021-03-05 14:44:33 +00:00
|
|
|
execSync(
|
|
|
|
`java -jar ${jpsxdec_jar} -x "${disc1_index}" -a video -dir "${tempdir}" -quality high -vf avi:rgb -up Lanczos3`,
|
|
|
|
{ stdio: "inherit" }
|
|
|
|
);
|
|
|
|
|
|
|
|
execSync(
|
|
|
|
`java -jar ${jpsxdec_jar} -x "${disc2_index}" -a video -dir "${tempdir}" -quality high -vf avi:rgb -up Lanczos3`,
|
|
|
|
{ stdio: "inherit" }
|
|
|
|
);
|
|
|
|
|
2021-03-06 16:05:34 +00:00
|
|
|
const output_movie_folder = join(
|
|
|
|
"..",
|
|
|
|
"..",
|
|
|
|
"src",
|
|
|
|
"static",
|
|
|
|
"media",
|
|
|
|
"movie"
|
|
|
|
);
|
2021-03-05 14:44:33 +00:00
|
|
|
|
2021-03-07 16:10:41 +00:00
|
|
|
// create destination folder
|
|
|
|
mkdirSync(output_movie_folder, { recursive: true });
|
2021-03-05 14:44:33 +00:00
|
|
|
|
2021-03-06 16:05:34 +00:00
|
|
|
// convert all movies to mp4
|
|
|
|
for (const movieDir of ["MOVIE", "MOVIE2"]) {
|
|
|
|
for (let file of readdirSync(`${join(tempdir, movieDir)}`)) {
|
|
|
|
if (file.endsWith(".wav")) continue;
|
|
|
|
exec(
|
2021-03-06 21:48:01 +00:00
|
|
|
`ffmpeg -i "${join(
|
|
|
|
tempdir,
|
|
|
|
movieDir,
|
|
|
|
file
|
|
|
|
)}" -pix_fmt yuv420p -n ${join(
|
2021-03-06 16:05:34 +00:00
|
|
|
output_movie_folder,
|
|
|
|
file.replace("avi", "mp4")
|
|
|
|
)}`
|
|
|
|
).stderr.on("data", (data) => console.log(data));
|
|
|
|
}
|
2021-03-05 14:44:33 +00:00
|
|
|
}
|
|
|
|
|
2021-03-07 16:10:41 +00:00
|
|
|
if (!no_delete) {
|
|
|
|
// cleanup source folders
|
|
|
|
rmdirSync(join(tempdir, "MOVIE"));
|
|
|
|
rmdirSync(join(tempdir, "MOVIE2"));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export function extract_audio(
|
|
|
|
tempdir,
|
|
|
|
jpsxdec_jar,
|
|
|
|
disc1_index,
|
|
|
|
disc2_index,
|
|
|
|
no_delete
|
|
|
|
) {
|
|
|
|
// extract all audio
|
|
|
|
execSync(
|
|
|
|
`java -jar ${jpsxdec_jar} -x "${disc1_index}" -a audio -dir "${tempdir}"`,
|
|
|
|
{ stdio: "inherit" }
|
|
|
|
);
|
|
|
|
|
|
|
|
execSync(
|
|
|
|
`java -jar ${jpsxdec_jar} -x "${disc2_index}" -a audio -dir "${tempdir}"`,
|
|
|
|
{ stdio: "inherit" }
|
|
|
|
);
|
|
|
|
|
|
|
|
const output_audio_folder = join(
|
|
|
|
"..",
|
|
|
|
"..",
|
|
|
|
"src",
|
|
|
|
"static",
|
|
|
|
"media",
|
|
|
|
"audio"
|
|
|
|
);
|
|
|
|
|
|
|
|
// create destination folder
|
|
|
|
mkdirSync(output_audio_folder, { recursive: true });
|
|
|
|
|
2021-03-06 16:05:34 +00:00
|
|
|
// convert all audio to mp4
|
2021-03-05 14:44:33 +00:00
|
|
|
for (let file of readdirSync(`${join(tempdir, "XA")}`)) {
|
|
|
|
exec(
|
|
|
|
`ffmpeg -i "${join(tempdir, "XA", file)}" -n ${join(
|
|
|
|
output_audio_folder,
|
2021-03-06 16:05:34 +00:00
|
|
|
file.replace("wav", "mp4")
|
2021-03-05 14:44:33 +00:00
|
|
|
)}`
|
|
|
|
).stderr.on("data", (data) => console.log(data));
|
|
|
|
}
|
|
|
|
|
2021-03-07 16:10:41 +00:00
|
|
|
if (!no_delete) {
|
|
|
|
// cleanup source folder
|
|
|
|
rmdirSync(join(tempdir, "XA"));
|
|
|
|
}
|
2021-03-05 14:44:33 +00:00
|
|
|
}
|