@codenoobforreal/clitools
Version:
CLI tool for video processing (H.265/HEVC encoding & QuickTime compatibility) using FFmpeg, and batch lossless image compression with format preservation
39 lines • 1.64 kB
JavaScript
import { spinner } from "@clack/prompts";
import { filterHev1Video, getVideoInfoListFromUserInput, } from "../../core/video/pipeline.js";
import { FFmpegProcessError, NothingToProcessError } from "../../error.js";
import { runFFmpegCommand } from "../../libs/ffmpeg-executor.js";
import { getFileNameFromPath } from "../../utils/path.js";
import { buildHEVCEnableQuickTimeArgs } from "./args.js";
export async function enableHEVCQuickTimeTask({ input, }) {
const videoInfoList = await getVideoInfoListFromUserInput(input);
const filteredVideos = filterHev1Video(videoInfoList);
if (filteredVideos.length === 0) {
throw new NothingToProcessError("No hev1 videos found");
}
for (let index = 0; index < filteredVideos.length; index++) {
const videoInfo = filteredVideos[index];
if (videoInfo !== undefined) {
await enableHEVCQuickTime(videoInfo, index, filteredVideos.length);
}
}
}
async function enableHEVCQuickTime(videoInfo, index, length) {
const s = spinner();
const filename = getFileNameFromPath(videoInfo.input);
s.start(`Remuxing: ${filename}`);
try {
await runFFmpegCommand(buildHEVCEnableQuickTimeArgs(videoInfo));
s.stop(`Finish remuxing ${index + 1}/${length}:\n${videoInfo.input}`);
}
catch (error) {
let errMessage = `Failed to remux: ${videoInfo.input}\nerror: `;
if (error instanceof FFmpegProcessError) {
errMessage += error.cause.message;
}
else {
errMessage += "unknown error";
}
s.stop(errMessage);
}
}
//# sourceMappingURL=index.js.map