利用代码实现_剪映小助手_的caption_infos 制作字幕数据功能
文章标签:
源码怎么制作
一、原来剪映小助手流程
1、caption_infos 制作字幕数据
2、输入的数据
3、输出的数据
4、测试的数据
1)、输入
{
"font_size": 22,
"in_animation": "波浪弹入",
"in_animation_duration": 500000,
"out_animation": "渐隐",
"out_animation_duration": 500000,
"texts": [
" ",
"少小离家老大回",
"乡音无改鬓毛衰",
"儿童相见不相识",
"笑问客从何处来"
],
"timelines": [
{
"end": 5112000,
"start": 0
},
{
"end": 7704000,
"start": 5112000
},
{
"end": 10464000,
"start": 7704000
},
{
"end": 13032000,
"start": 10464000
},
{
"end": 16008000,
"start": 13032000
}
]
}
2)、输出
{
"infos": "[{\"start\":0,\"end\":5112000,\"text\":\" \",\"in_animation\":\"波浪弹入\",\"out_animation\":\"渐隐\",\"in_animation_duration\":500000,\"out_animation_duration\":500000},{\"start\":5112000,\"end\":7704000,\"text\":\"少小离家老大回\",\"in_animation\":\"波浪弹入\",\"out_animation\":\"渐隐\",\"in_animation_duration\":500000,\"out_animation_duration\":500000},{\"start\":7704000,\"end\":10464000,\"text\":\"乡音无改鬓毛衰\",\"in_animation\":\"波浪弹入\",\"out_animation\":\"渐隐\",\"in_animation_duration\":500000,\"out_animation_duration\":500000},{\"start\":10464000,\"end\":13032000,\"text\":\"儿童相见不相识\",\"in_animation\":\"波浪弹入\",\"out_animation\":\"渐隐\",\"in_animation_duration\":500000,\"out_animation_duration\":500000},{\"start\":13032000,\"end\":16008000,\"text\":\"笑问客从何处来\",\"in_animation\":\"波浪弹入\",\"out_animation\":\"渐隐\",\"in_animation_duration\":500000,\"out_animation_duration\":500000}]"
}
二、代码实现
1、分析
通过分析得知,小助手就是将古诗原文数组、其它变量和时间线进行拼接,形成一个字符串。
只需处理texts(诗歌原文的字符串数组)、timelines(04a里面生成的时间线);然后在代码里面自定义其它变量进行转换。
2、核心代码
import json
async def main(args: Args) -> Output:
params = args.params
infos_list = []
# 自定义的变量
font_size=22
in_animation="波浪弹入"
in_animation_duration=500000
out_animation="渐隐"
out_animation_duration=500000
# 遍历文本和时间轴创建信息列表
for text, timeline in zip(params["texts"], params["timelines"]):
info = {
"start": timeline["start"],
"end": timeline["end"],
"text": text,
"in_animation": in_animation,
"out_animation": out_animation,
"in_animation_duration": in_animation_duration,
"out_animation_duration": out_animation_duration
}
infos_list.append(info)
# 构建输出对象
ret: Output = {
# 生成最终结果并序列化为紧凑JSON格式
"infos": json.dumps(
infos_list,
ensure_ascii=False, # 保留中文原样
separators=(",", ":") # 移除JSON中的多余空格
)
}
return ret