V2.2.4 版本

This commit is contained in:
2024-05-24 13:46:19 +08:00
parent 74009113fa
commit 17709c1a0b
57 changed files with 4484 additions and 2338 deletions
+32 -27
View File
@@ -662,12 +662,12 @@ export class ClipDraft {
* 通过 key_frame 返回关键帧数据
* @param {*} key_frame 关键帧配置
*/
async GetFrameData(key_frame) {
if (key_frame.key_frame == "KFTypePositionY") {
async GetFrameData(key_frame_key, key_frame) {
if (key_frame_key == "KFTypePositionY") {
return key_frame.up_down_key_frame;
} else if (key_frame.key_frame == "KFTypePositionX") {
} else if (key_frame_key == "KFTypePositionX") {
return key_frame.left_right_key_frame;
} else if (key_frame.key_frame == "KFTypeScale") {
} else if (key_frame_key == "KFTypeScale") {
return key_frame.scale_key_frame;
} else {
return {
@@ -683,7 +683,8 @@ export class ClipDraft {
*/
async AddKeyFarme() {
let img_nodes = (await this.find_draft_node(this.draft_json.tracks, "type", "video")).segments;
let key_frame_tmp_data = JSON.parse(await fspromises.readFile(define.add_keyframe_tmp_path, "utf-8"));
let key_frame_tmp_data = await fspromises.readFile(define.add_keyframe_tmp_path, "utf-8");
// 添加关键帧
// 将最后一个数据修改为背景音乐的最后时间
this.srt_information[this.srt_information.length - 1].end_time = this.audios_duration_time / 1000;
@@ -693,34 +694,42 @@ export class ClipDraft {
if (key_frame_setting == null) {
return;
}
let key_frame_pos = await this.GetFrameData(key_frame_setting);
let isFixedSpeed = key_frame_setting.isFixedSpeed;
let key_frame_time = key_frame_setting.key_frame_time * 1000000;
let isDown = true;
let scale_rate = key_frame_pos.default_scale / 100;
// 获取通用的关键帧配置,然后添加到每一个图片上面(可以设置时间。当前图片的持续实现小于设置的时间。会计算不要过快)
for (let i = 0; i < img_nodes.length; i++) {
let element = img_nodes[i];
let image_duartion = cloneDeep(element.source_timerange.duration);
let key_frame = key_frame_setting.key_frame;
// 做随机处理
let real_key_frame = key_frame;
let key_frame_list = ["KFTypePositionY", "KFTypePositionX", "KFTypeScale"];
if (key_frame == "KFTypeRandom") {
// 随机获取 key_frame_list 里面的一个数据
const randomIndex = Math.floor(Math.random() * key_frame_list.length);
real_key_frame = key_frame_list[randomIndex];
}
let key_frame_pos = await this.GetFrameData(real_key_frame, key_frame_setting);
let key_frame_time = key_frame_setting.key_frame_time * 1000000;
let scale_rate = key_frame_pos.default_scale / 100;
let up_pos = Math.abs(key_frame_pos.start_position);
let down_pos = Math.abs(key_frame_pos.end_position);
let key_frame_tmp = JSON.parse(key_frame_tmp_data)
if (key_frame_setting.key_frame == "KFTypePositionY") {
if (real_key_frame == "KFTypePositionY") {
// 勾选了匀速。需要计算时间(计算比例)
if (isFixedSpeed && image_duartion < key_frame_time) {
let time_rate = image_duartion / key_frame_time;
up_pos = up_pos * time_rate;
down_pos = down_pos * time_rate;
}
let key_frame_tmp = cloneDeep(key_frame_tmp_data)
let up_pos_rate = isDown ? (up_pos / this.draft_json.canvas_config.height) : (0 - up_pos / this.draft_json.canvas_config.height)
key_frame_tmp.id = uuidv4();
key_frame_tmp.keyframe_list[0].id == uuidv4();
key_frame_tmp.keyframe_list[0].id = uuidv4(); // Corrected assignment
key_frame_tmp.keyframe_list[0].values = [up_pos_rate];
let dow_pos_rate = isDown ? (0 - down_pos / this.draft_json.canvas_config.height) : (down_pos / this.draft_json.canvas_config.height)
@@ -728,22 +737,20 @@ export class ClipDraft {
key_frame_tmp.keyframe_list[1].time_offset = image_duartion;
key_frame_tmp.keyframe_list[1].values = [dow_pos_rate];
key_frame_tmp.property_type = key_frame_setting.key_frame;
key_frame_tmp.property_type = real_key_frame;
// 修改缩放倍率
element.clip.scale.x = scale_rate;
element.clip.scale.y = scale_rate;
element.clip.transform.y = dow_pos_rate;
isDown = !isDown;
element.common_keyframes.push(key_frame_tmp);
} else if (key_frame_setting.key_frame == "KFTypePositionX") {
} else if (real_key_frame == "KFTypePositionX") {
// 勾选了匀速。需要计算时间(计算比例)
if (isFixedSpeed && image_duartion < key_frame_time) {
let time_rate = image_duartion / key_frame_time;
up_pos = up_pos * time_rate;
down_pos = down_pos * time_rate;
}
let key_frame_tmp = cloneDeep(key_frame_tmp_data)
let up_pos_rate = isDown ? (up_pos / this.draft_json.canvas_config.width) : (0 - up_pos / this.draft_json.canvas_config.width)
key_frame_tmp.id = uuidv4();
key_frame_tmp.keyframe_list[0].id == uuidv4();
@@ -754,16 +761,15 @@ export class ClipDraft {
key_frame_tmp.keyframe_list[1].time_offset = image_duartion;
key_frame_tmp.keyframe_list[1].values = [dow_pos_rate];
key_frame_tmp.property_type = key_frame_setting.key_frame;
key_frame_tmp.property_type = real_key_frame;
// 修改缩放倍率
element.clip.scale.x = scale_rate;
element.clip.scale.y = scale_rate;
element.clip.transform.x = dow_pos_rate;
isDown = !isDown;
element.common_keyframes.push(key_frame_tmp);
}
else if (key_frame_setting.key_frame == "KFTypeScale") {
else if (real_key_frame == "KFTypeScale") {
if (isFixedSpeed && image_duartion < key_frame_time) {
let time_rate = image_duartion / key_frame_time;
// 计算方式和上面的不同
@@ -774,7 +780,6 @@ export class ClipDraft {
}
// 修改上面的数据,添加Y轴缩放
let key_frame_tmp = cloneDeep(key_frame_tmp_data)
let up_pos_rate = isDown ? up_pos / 100 : down_pos / 100;
key_frame_tmp.id = uuidv4();
key_frame_tmp.keyframe_list[0].id == uuidv4();
@@ -785,7 +790,7 @@ export class ClipDraft {
key_frame_tmp.keyframe_list[1].time_offset = image_duartion;
key_frame_tmp.keyframe_list[1].values = [dow_pos_rate];
key_frame_tmp.property_type = key_frame_setting.key_frame + "X";
key_frame_tmp.property_type = real_key_frame + "X";
// 修改上面的数据,添加Y轴缩放
// 修改缩放倍率
@@ -794,15 +799,15 @@ export class ClipDraft {
element.clip.transform.x = 0;
element.common_keyframes.push(key_frame_tmp);
key_frame_tmp = cloneDeep(key_frame_tmp)
key_frame_tmp = JSON.parse(JSON.stringify(key_frame_tmp))
key_frame_tmp.id = uuidv4();
key_frame_tmp.keyframe_list[0].id == uuidv4();
key_frame_tmp.keyframe_list[1].id = uuidv4();
key_frame_tmp.property_type = key_frame_setting.key_frame + "Y";
element.common_keyframes.push(key_frame_tmp);
key_frame_tmp.property_type = real_key_frame + "Y";
isDown = !isDown;
}
element.common_keyframes.push(key_frame_tmp);
}
}