ai-chatbot/lib/video-canvas/tvstar-output.ts

20 lines
1.6 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

export function tvstarOutputRequirements(goal: string) {
const ratioRequests = [...goal.matchAll(/\b(21|16|9|4|3|1)\s*[::]\s*(9|16|3|4|1)\b|竖屏|纵向|portrait|横屏|横向|landscape|方形|正方形|square/gi)];
const lastRatio = ratioRequests.at(-1);
const ratio = lastRatio?.[1] ? `${lastRatio[1]}:${lastRatio[2]}`
: /竖屏|纵向|portrait/i.test(lastRatio?.[0] || "") ? "9:16"
: /方形|正方形|square/i.test(lastRatio?.[0] || "") ? "1:1" : "16:9";
if (!["21:9", "16:9", "9:16", "1:1", "4:3", "3:4"].includes(ratio))
throw Error("当前成片不支持所要求的画幅比例");
const explicitResolutions = [...goal.matchAll(/\b(480|720|1080)\s*p\b/gi)];
if (/\b[24]\s*k\b|超高清|4K高清/i.test(goal) && !explicitResolutions.length)
throw Error("TVstar 自动成片目前最高支持 1080P;2K/4K 请使用独立视频高清功能");
const resolution = explicitResolutions.at(-1) ? `${explicitResolutions.at(-1)![1]}p` : "720p";
const audibleBrief = goal
.replace(/(?:不要|无需|不需要|禁止)(?:静音|无声)/g, "有声")
.replace(/(?:不要|无需|不加|不需要|不含|禁止)[^,,。;;\n]{0,8}(?:配乐|音乐|音效|旁白|对白|台词|bgm)/gi, "");
const audioRequests = [...audibleBrief.matchAll(/(无声|静音|不要(?:任何)?(?:声音|音频)|不含(?:任何)?(?:声音|音频)|silent|no audio)|配乐|音乐|音效|旁白|对白|台词|声音|有声|bgm|soundtrack|voiceover/gi)];
const audioRequest = audioRequests.at(-1);
return { ratio, resolution, generateAudio: audioRequest ? !audioRequest[1] : undefined };
}