更新时间 : 2019-06-20 21:27:23
请先点击以下链接, 了解动态模板高级素材替换.
普通图片
常用于替换动态模板中某个指定位置的用户头像
文字
常用于给动态模板每张图片绑定字幕
高级图片素材替换示例:
func testDynamicSubImg() {
basedir := "."
tplPath := basedir + "/workspace/template/dynamic_text/"
output := basedir + "/workspace/output/dynamic_text.mp4"
// 渲染需要的随机数, 同一时刻保证唯一
key := rand.Int()
// 创建渲染进程
renderId, success := vesdk.CreateRenderProcess(tplPath, output, key)
fmt.Println("renderId : ", renderId, " success : ", success)
if !success {
return
}
// 注册 license
vesdk.RegisterRenderProcessLicense(renderId, license)
// 获取 profile
profile := vesdk.RenderProcessLicenseProfile(renderId)
fmt.Println("license profile : ", profile)
// license valid
valid := vesdk.RenderProcessLicenseIsValid(renderId)
fmt.Println("license valid : ", valid)
assetPaths := [5]string{
basedir + "/workspace/assets/1.jpeg",
basedir + "/workspace/assets/2.jpeg",
basedir + "/workspace/assets/3.jpeg",
basedir + "/workspace/assets/4.jpeg",
basedir + "/workspace/assets/6.jpeg",
}
jsonArr, _ := json.Marshal(assetPaths)
jsonStr := string(jsonArr)
// 设置替换素材
vesdk.RenderProcessSetReplaceableFiles(renderId, jsonStr)
// 设置附加素材
subfiles := "["
subfiles += " {\"img_path\":\"" + basedir + "/workspace/assets/1.jpeg\",\"d_key_prefix\":\"dtext\",\"d_img_paths\":[\"" + basedir + "/workspace/assets/235_41_text1.png\"]}"
subfiles += ",{\"img_path\":\"" + basedir + "/workspace/assets/2.jpeg\",\"d_key_prefix\":\"dtext\",\"d_img_paths\":[\"" + basedir + "/workspace/assets/235_41_text2.png\",\"" + basedir + "/workspace/assets/235_41_text3.png\"]}"
subfiles += ",{\"img_path\":\"" + basedir + "/workspace/assets/3.jpeg\",\"d_key_prefix\":\"dtext\",\"d_img_paths\":[\"" + basedir + "/workspace/assets/235_41_text4.png\"]}"
subfiles += ",{\"img_path\":\"" + basedir + "/workspace/assets/4.jpeg\",\"d_key_prefix\":\"dtext\",\"d_img_paths\":[\"" + basedir + "/workspace/assets/235_41_text9.png\"]}"
subfiles += ",{\"img_path\":\"\",\"d_key_prefix\":\"dheadimg\",\"d_img_paths\":[\"" + basedir + "/workspace/assets/235_41_text8.png\"]}"
subfiles += "]"
//vesdk.RenderProcessSetDynamicSubFiles(renderId, subfiles)
// 开始渲染
ret, err := vesdk.RenderProcessStart(renderId)
fmt.Println("start render ret : ", ret)
fmt.Println(err)
// 获取状态值
status := vesdk.RenderProcessStatus(renderId)
fmt.Println("render status : ", status)
// 获取渲染信息
info := vesdk.RenderProcessRenderedInfo(renderId)
fmt.Println("render info : ", info)
// 释放资源
vesdk.RenderProcessRelease(renderId)
}
高级文字替换, 需要依赖 TextPainter 工具, 需要先安装设置好 TextPainter.
高级文字素材替换示例:
func testDynamicSubText() {
basedir := "."
tplPath := basedir + "/workspace/template/kenbentuya/"
output := basedir + "/workspace/output/kenbentuya.mp4"
// 渲染需要的随机数, 同一时刻保证唯一
key := rand.Int()
// 创建渲染进程
renderId, success := vesdk.CreateRenderProcess(tplPath, output, key)
fmt.Println("renderId : ", renderId, " success : ", success)
if !success {
return
}
// 注册 license
vesdk.RegisterRenderProcessLicense(renderId, license)
// 获取 profile
profile := vesdk.RenderProcessLicenseProfile(renderId)
fmt.Println("license profile : ", profile)
// license valid
valid := vesdk.RenderProcessLicenseIsValid(renderId)
fmt.Println("license valid : ", valid)
assetPaths := [5]string{
basedir + "/workspace/assets/1.jpeg",
basedir + "/workspace/assets/2.jpeg",
basedir + "/workspace/assets/3.jpeg",
basedir + "/workspace/assets/4.jpeg",
basedir + "/workspace/assets/6.jpeg",
}
jsonArr, _ := json.Marshal(assetPaths)
jsonStr := string(jsonArr)
// 设置替换素材
vesdk.RenderProcessSetReplaceableFiles(renderId, jsonStr)
// 设置文字素材
subTexts := "["
subTexts += "{\"img_path\":\"\",\"d_key_prefix\":\"title\",\"d_texts\":[\"自定义标题\"]}"
subTexts += ",{\"img_path\":\"" + basedir + "/workspace/assets/1.jpeg\",\"d_key_prefix\":\"dtext\",\"d_texts\":[\"自定义描述1\"]}"
subTexts += ",{\"img_path\":\"" + basedir + "/workspace/assets/2.jpeg\",\"d_key_prefix\":\"dtext\",\"d_texts\":[\"自定义描述2\"]}"
subTexts += ",{\"img_path\":\"" + basedir + "/workspace/assets/3.jpeg\",\"d_key_prefix\":\"dtext\",\"d_texts\":[\"\"]}"
subTexts += "]"
// 设置素材保存目录, 必须设置, 以 / 结尾
vesdk.RenderProcessSetAssetPath(renderId, basedir+"/workspace/assets/")
// 设置文字绘制工具目录, 必须设置, 以 / 结尾
vesdk.RenderProcessSetTextPainterPath(renderId, "/home/slayer/workspace/ve-textpainter/textpainter/")
vesdk.RenderProcessSetDynamicSubTexts(renderId, subTexts)
// 开始渲染
ret, err := vesdk.RenderProcessStart(renderId)
fmt.Println("start render ret : ", ret)
fmt.Println(err)
// 获取状态值
status := vesdk.RenderProcessStatus(renderId)
fmt.Println("render status : ", status)
// 获取渲染信息
info := vesdk.RenderProcessRenderedInfo(renderId)
fmt.Println("render info : ", info)
// 释放资源
vesdk.RenderProcessRelease(renderId)
}
请先点击以下链接, 了解动态模板高级素材替换.
普通图片
常用于替换动态模板中某个指定位置的用户头像
文字
常用于给动态模板每张图片绑定字幕
高级图片素材替换示例:
func testDynamicSubImg() {
basedir := "."
tplPath := basedir + "/workspace/template/dynamic_text/"
output := basedir + "/workspace/output/dynamic_text.mp4"
// 渲染需要的随机数, 同一时刻保证唯一
key := rand.Int()
// 创建渲染进程
renderId, success := vesdk.CreateRenderProcess(tplPath, output, key)
fmt.Println("renderId : ", renderId, " success : ", success)
if !success {
return
}
// 注册 license
vesdk.RegisterRenderProcessLicense(renderId, license)
// 获取 profile
profile := vesdk.RenderProcessLicenseProfile(renderId)
fmt.Println("license profile : ", profile)
// license valid
valid := vesdk.RenderProcessLicenseIsValid(renderId)
fmt.Println("license valid : ", valid)
assetPaths := [5]string{
basedir + "/workspace/assets/1.jpeg",
basedir + "/workspace/assets/2.jpeg",
basedir + "/workspace/assets/3.jpeg",
basedir + "/workspace/assets/4.jpeg",
basedir + "/workspace/assets/6.jpeg",
}
jsonArr, _ := json.Marshal(assetPaths)
jsonStr := string(jsonArr)
// 设置替换素材
vesdk.RenderProcessSetReplaceableFiles(renderId, jsonStr)
// 设置附加素材
subfiles := "["
subfiles += " {\"img_path\":\"" + basedir + "/workspace/assets/1.jpeg\",\"d_key_prefix\":\"dtext\",\"d_img_paths\":[\"" + basedir + "/workspace/assets/235_41_text1.png\"]}"
subfiles += ",{\"img_path\":\"" + basedir + "/workspace/assets/2.jpeg\",\"d_key_prefix\":\"dtext\",\"d_img_paths\":[\"" + basedir + "/workspace/assets/235_41_text2.png\",\"" + basedir + "/workspace/assets/235_41_text3.png\"]}"
subfiles += ",{\"img_path\":\"" + basedir + "/workspace/assets/3.jpeg\",\"d_key_prefix\":\"dtext\",\"d_img_paths\":[\"" + basedir + "/workspace/assets/235_41_text4.png\"]}"
subfiles += ",{\"img_path\":\"" + basedir + "/workspace/assets/4.jpeg\",\"d_key_prefix\":\"dtext\",\"d_img_paths\":[\"" + basedir + "/workspace/assets/235_41_text9.png\"]}"
subfiles += ",{\"img_path\":\"\",\"d_key_prefix\":\"dheadimg\",\"d_img_paths\":[\"" + basedir + "/workspace/assets/235_41_text8.png\"]}"
subfiles += "]"
//vesdk.RenderProcessSetDynamicSubFiles(renderId, subfiles)
// 开始渲染
ret, err := vesdk.RenderProcessStart(renderId)
fmt.Println("start render ret : ", ret)
fmt.Println(err)
// 获取状态值
status := vesdk.RenderProcessStatus(renderId)
fmt.Println("render status : ", status)
// 获取渲染信息
info := vesdk.RenderProcessRenderedInfo(renderId)
fmt.Println("render info : ", info)
// 释放资源
vesdk.RenderProcessRelease(renderId)
}
高级文字替换, 需要依赖 TextPainter 工具, 需要先安装设置好 TextPainter.
高级文字素材替换示例:
func testDynamicSubText() {
basedir := "."
tplPath := basedir + "/workspace/template/kenbentuya/"
output := basedir + "/workspace/output/kenbentuya.mp4"
// 渲染需要的随机数, 同一时刻保证唯一
key := rand.Int()
// 创建渲染进程
renderId, success := vesdk.CreateRenderProcess(tplPath, output, key)
fmt.Println("renderId : ", renderId, " success : ", success)
if !success {
return
}
// 注册 license
vesdk.RegisterRenderProcessLicense(renderId, license)
// 获取 profile
profile := vesdk.RenderProcessLicenseProfile(renderId)
fmt.Println("license profile : ", profile)
// license valid
valid := vesdk.RenderProcessLicenseIsValid(renderId)
fmt.Println("license valid : ", valid)
assetPaths := [5]string{
basedir + "/workspace/assets/1.jpeg",
basedir + "/workspace/assets/2.jpeg",
basedir + "/workspace/assets/3.jpeg",
basedir + "/workspace/assets/4.jpeg",
basedir + "/workspace/assets/6.jpeg",
}
jsonArr, _ := json.Marshal(assetPaths)
jsonStr := string(jsonArr)
// 设置替换素材
vesdk.RenderProcessSetReplaceableFiles(renderId, jsonStr)
// 设置文字素材
subTexts := "["
subTexts += "{\"img_path\":\"\",\"d_key_prefix\":\"title\",\"d_texts\":[\"自定义标题\"]}"
subTexts += ",{\"img_path\":\"" + basedir + "/workspace/assets/1.jpeg\",\"d_key_prefix\":\"dtext\",\"d_texts\":[\"自定义描述1\"]}"
subTexts += ",{\"img_path\":\"" + basedir + "/workspace/assets/2.jpeg\",\"d_key_prefix\":\"dtext\",\"d_texts\":[\"自定义描述2\"]}"
subTexts += ",{\"img_path\":\"" + basedir + "/workspace/assets/3.jpeg\",\"d_key_prefix\":\"dtext\",\"d_texts\":[\"\"]}"
subTexts += "]"
// 设置素材保存目录, 必须设置, 以 / 结尾
vesdk.RenderProcessSetAssetPath(renderId, basedir+"/workspace/assets/")
// 设置文字绘制工具目录, 必须设置, 以 / 结尾
vesdk.RenderProcessSetTextPainterPath(renderId, "/home/slayer/workspace/ve-textpainter/textpainter/")
vesdk.RenderProcessSetDynamicSubTexts(renderId, subTexts)
// 开始渲染
ret, err := vesdk.RenderProcessStart(renderId)
fmt.Println("start render ret : ", ret)
fmt.Println(err)
// 获取状态值
status := vesdk.RenderProcessStatus(renderId)
fmt.Println("render status : ", status)
// 获取渲染信息
info := vesdk.RenderProcessRenderedInfo(renderId)
fmt.Println("render info : ", info)
// 释放资源
vesdk.RenderProcessRelease(renderId)
}