2021-03-19 15:01:16 +00:00
|
|
|
import { spawnSync, spawn } from "child_process";
|
|
|
|
import { mkdirSync, readdirSync, rmSync } from "fs";
|
2021-03-05 14:44:33 +00:00
|
|
|
import { join } from "path";
|
|
|
|
|
2021-03-19 15:01:16 +00:00
|
|
|
export function extract_video(tempdir, jpsxdec_jar, no_delete) {
|
2021-03-07 16:10:41 +00:00
|
|
|
// extract all video
|
2021-03-19 15:01:16 +00:00
|
|
|
for (const disc_index of ["disc1.idx", "disc2.idx"]) {
|
|
|
|
spawnSync(
|
|
|
|
"java",
|
|
|
|
[
|
|
|
|
"-jar",
|
|
|
|
jpsxdec_jar,
|
|
|
|
"-x",
|
|
|
|
join(tempdir, disc_index),
|
|
|
|
"-a",
|
|
|
|
"video",
|
|
|
|
"-dir",
|
|
|
|
tempdir,
|
|
|
|
"-quality",
|
|
|
|
"high",
|
|
|
|
"-vf",
|
|
|
|
"avi:rgb",
|
|
|
|
"-up",
|
|
|
|
"Lanczos3",
|
|
|
|
],
|
|
|
|
{ stdio: "inherit" }
|
|
|
|
);
|
|
|
|
}
|
2021-03-05 14:44:33 +00:00
|
|
|
|
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;
|
2021-03-19 15:01:16 +00:00
|
|
|
spawnSync(
|
|
|
|
"ffmpeg",
|
|
|
|
[
|
|
|
|
"-i",
|
|
|
|
join(tempdir, movieDir, file),
|
|
|
|
"-pix_fmt",
|
|
|
|
"yuv420p",
|
|
|
|
"-n",
|
|
|
|
join(output_movie_folder, file.replace("avi", "mp4")),
|
|
|
|
],
|
|
|
|
{ stdio: "inherit" }
|
|
|
|
);
|
2021-03-06 16:05:34 +00:00
|
|
|
}
|
2021-03-05 14:44:33 +00:00
|
|
|
}
|
|
|
|
|
2021-03-07 16:10:41 +00:00
|
|
|
if (!no_delete) {
|
|
|
|
// cleanup source folders
|
2021-03-19 15:01:16 +00:00
|
|
|
rmSync(join(tempdir, "MOVIE"), { recursive: true });
|
|
|
|
rmSync(join(tempdir, "MOVIE2"), { recursive: true });
|
2021-03-07 16:10:41 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-03-19 15:01:16 +00:00
|
|
|
export function extract_audio(tempdir, jpsxdec_jar, no_delete) {
|
2021-03-07 16:10:41 +00:00
|
|
|
// extract all audio
|
2021-03-19 15:01:16 +00:00
|
|
|
for (const disc_index of ["disc1.idx", "disc2.idx"]) {
|
|
|
|
spawnSync(
|
|
|
|
"java",
|
|
|
|
[
|
|
|
|
"-jar",
|
|
|
|
jpsxdec_jar,
|
|
|
|
"-x",
|
|
|
|
join(tempdir, disc_index),
|
|
|
|
"-a",
|
|
|
|
"audio",
|
|
|
|
"-dir",
|
|
|
|
tempdir,
|
|
|
|
],
|
|
|
|
{ stdio: "inherit" }
|
|
|
|
);
|
|
|
|
}
|
2021-03-07 16:10:41 +00:00
|
|
|
|
|
|
|
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")}`)) {
|
2021-03-19 15:01:16 +00:00
|
|
|
spawnSync("ffmpeg", [
|
|
|
|
"-i",
|
|
|
|
join(tempdir, "XA", file),
|
|
|
|
"-n",
|
|
|
|
join(output_audio_folder, file.replace("wav", "mp4")),
|
|
|
|
], {stdio:'inherit'});
|
2021-03-05 14:44:33 +00:00
|
|
|
}
|
|
|
|
|
2021-03-07 16:10:41 +00:00
|
|
|
if (!no_delete) {
|
|
|
|
// cleanup source folder
|
2021-03-19 15:01:16 +00:00
|
|
|
rmSync(join(tempdir, "XA"), { recursive: true });
|
2021-03-07 16:10:41 +00:00
|
|
|
}
|
2021-03-05 14:44:33 +00:00
|
|
|
}
|