UNPKG

@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
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