Update packages & vp9_qsv
Build / build (push) Successful in 1m28s

This commit is contained in:
2025-09-15 12:38:26 +07:00
parent d586a8f222
commit 68d919ab1e
5 changed files with 271 additions and 250 deletions
+32 -26
View File
@@ -117,6 +117,14 @@ const NULL_LOCATION = window.NL_OS === "Windows" ? "NUL" : "/dev/null";
*/
export const DEFAULT_BITRATE = 12000;
function quickSyncVp9Command(params: FFmpegParams, opts: {
global: string,
input: string,
output: string,
}) {
return `ffmpeg -init_hw_device qsv=hw -filter_hw_device hw ${opts.global}${opts.input} -i "${params.inputFile ?? "{fileName}"}" -vf hwupload=extra_hw_frames=64,format=qsv -c:v vp9_qsv -c:a libopus${opts.output} -progress - "${params.outputFile ?? "{output}"}"`;
}
export function generateOutputCommand(params: FFmpegParams) {
let faststart =
params.faststart && params.vcodec === "h264"
@@ -140,34 +148,32 @@ export function generateOutputCommand(params: FFmpegParams) {
}
}
if (params.twopass) {
const commonOpts = `${globalopts}${inputopts} -i "${params.inputFile ?? "{fileName}"}" -c:v ${params.encoder ?? params.vcodec} -b:v ${
params.vbitrate ?? DEFAULT_BITRATE
}k${faststart}${
params.preset === undefined ? "" : ` -preset ${params.preset}`
} -progress -${outputopts}`;
return `ffmpeg ${commonOpts} ${params.vcodec === "hevc" ? "-x265-params pass=1" : "-pass 1"} ${
params.doNotUseAn ? "-vsync cfr" : "-an"
} -f null ${NULL_LOCATION} &&
ffmpeg ${commonOpts} ${
params.vcodec === "hevc" ? "-x265-params pass=2" : "-pass 2"
} -c:a ${
params.acodec ?? "copy"
}${params.abitrate === undefined ? "" : ` -b:a ${params.abitrate}k`} "${params.outputFile ?? "{output}"}"`;
if (params.encoder === "vp9_qsv") {
return quickSyncVp9Command(params, {
global: globalopts,
input: inputopts,
output: outputopts
})
}
return `ffmpeg ${globalopts}${inputopts} -i "${params.inputFile ?? "{fileName}"}" -c:v ${params.encoder ?? params.vcodec}${
params.crf === undefined ? "" : ` -crf ${params.crf}`
}${
params.vbitrate === undefined ? "" : ` -b:v ${params.vbitrate}`
}${faststart}${
params.preset === undefined ? "" : ` -preset ${params.preset}`
} -c:a ${params.acodec ?? "copy"}${
params.abitrate === undefined ? "" : ` -b:a ${params.abitrate}k`
}${
params.speed === undefined ? "" : ` -speed ${params.speed}`
} -progress -${outputopts} "${params.outputFile ?? "{output}"}"`;
if (params.twopass) {
const commonOpts = `${globalopts}${inputopts} -i "${params.inputFile ?? "{fileName}"}" -c:v ${params.encoder ?? params.vcodec} -b:v ${params.vbitrate ?? DEFAULT_BITRATE
}k${faststart}${params.preset === undefined ? "" : ` -preset ${params.preset}`
} -progress -${outputopts}`;
return `ffmpeg ${commonOpts} ${params.vcodec === "hevc" ? "-x265-params pass=1" : "-pass 1"} ${params.doNotUseAn ? "-vsync cfr" : "-an"
} -f null ${NULL_LOCATION} &&
ffmpeg ${commonOpts} ${params.vcodec === "hevc" ? "-x265-params pass=2" : "-pass 2"
} -c:a ${params.acodec ?? "copy"
}${params.abitrate === undefined ? "" : ` -b:a ${params.abitrate}k`} "${params.outputFile ?? "{output}"}"`;
}
return `ffmpeg ${globalopts}${inputopts} -i "${params.inputFile ?? "{fileName}"}" -c:v ${params.encoder ?? params.vcodec}${params.crf === undefined ? "" : ` -crf ${params.crf}`
}${params.vbitrate === undefined ? "" : ` -b:v ${params.vbitrate}`
}${faststart}${params.preset === undefined ? "" : ` -preset ${params.preset}`
} -c:a ${params.acodec ?? "copy"}${params.abitrate === undefined ? "" : ` -b:a ${params.abitrate}k`
}${params.speed === undefined ? "" : ` -speed ${params.speed}`
} -progress -${outputopts} "${params.outputFile ?? "{output}"}"`;
}
export async function getLengthMicroseconds(target: string) {