接口说明
无需训练,即可基于一段真人视频素材,通过输入文本或音频,生成人物说话口型与输入内容相匹配的新视频。
调用协议
HTTPS + JSON
POST /v2/ivh/videomaker/broadcastservice/videomakenotrain
Header Content-Type: application/json;charset=utf-8
请求参数
参数 | 类型 | 必须 | 说明 |
RefVideoUrl | string | 是 | 模板视频 URL,该字段必填。 1. 支持封装格式:mp4、mov、avi 注意: 2. 文件大小:不超过5G。 3. 视频分辨率:单边像素要求在360 - 4096之间。 4. 视频时长:支持1 - 600秒,建议时长在10秒到120秒(当 ConcurrencyType 为 Exclusive 时,支持20分钟视频时长)。 5. 请保证文件的下载速度,否则会下载失败或导致视频制作实时率下降。 对于输入视频素材的规范性要求: 1. 人脸画面:要求真人出镜(如果是卡通人物,需要人物五官和真人比例相近),画面中的人脸说话时,建议正对镜头,水平转动不超过45度,俯仰不超过15度;人脸尽量不遮挡,面部光线稳定。 2. 说话音频:对音频无限制。 对于输出视频的说明: 1. 输出格式:mp4 2. 输出分辨率:最大支持输出单边4096,即 4K 视频。 2.1 当 ConcurrencyType 为 Shared 时,支持最大输出2560*1440。当输入视频分辨率<=2560*1440时,输出分辨率和输入视频一致。 2.2 当 ConcurrencyType 为 Exclusive 时,支持最大输出4096*4096。当输入视频分辨率<=4096*4096时,输出分辨率和输入视频一致。(4K 视频是 2K 视频合成实时率的2倍) |
DriverType | string | 是 | 驱动类型,该字段必填。 1. Text:文本驱动,要求 InputSsml 字段必填。 2. OriginalVoice:原声音频驱动,要求 InputAudioUrl 字段必填。 |
IdentityWrittenUrl | string | 否 | PDF 格式授权书,格式为 PDF,文件大小小于10M。 |
IdentityVideoUrl | string | 否 | 视频格式授权书,格式为 mp4,文件大小小于5G。 |
InputAudioUrl | string | 否 | 驱动数智人的音频 URL,当 DriverType 为 OriginalVoice 时,该字段必填。 1. 支持格式:wav、mp3、wma、m4a、aac、ogg 2. 时长不超过10分钟,不少于1秒(当 ConcurrencyType 为 Exclusive 时,支持20分钟音频时长) 3. 大小要求:不超过100MB 4. 请保证文件的下载速度,否则会下载失败或导致视频制作实时率下降。 |
InputSsml | string | 否 | 播报文本内容,支持 SSML 标签,支持的标签类型参照 数智人 SSML 标记语言规范,标签写法参照示例,内容不能换行,符号需转义。上限2000字,不少于4个字(字数按 unicode 字符数计算)。DriverType为空、或 Text 时,该字段必填。 |
SpeechParam | object | 否 | 定义音频的详细参数。DriverType 为 Text 时,该字段必填。 |
SpeechParam.Speed | float | 否 | 语速(1.0为正常语速,范围[0.5-1.5],值为0.5时播报语速最慢,值为1.5时播报语速最快, DriverType 为音频驱动类型时,语速控制不生效),DriverType 为 Text 时,该字段必填。 |
SpeechParam.TimbreKey | string | 否 | 音色 key,DriverType 为 Text 时,该字段必填。 |
SpeechParam.Volume | int | 否 | 音量大小,范围[0,10],对应音量大小。默认为0,代表正常音量,值越大音量越高。 说明: TimbreKey 在 male_1-20、female_1-23(即男声1-20、女声1-23)间的音色不支持音量调节。 |
SpeechParam.EmotionCategory | string | 否 | |
SpeechParam.EmotionIntensity | int | 否 | 控制合成音频情感程度,取值范围为 [50,200],只有 EmotionCategory 不为空时生效。 |
SpeechParam.TimbreLanguage | string | 否 | |
ConcurrencyType | string | 否 | 视频制作任务使用的资源类型。 1. Exclusive:使用并发调用,不扣除小时包,需要购买并发,如果没有购买,任务提交失败。 2. Shared:调用会扣除小时包,需要购买小时包,如果没有购买,任务提交失败。 3. 不填:如果购买了并发或者并发和小时包都购买则为“Exclusive”,如果没有购买并发但购买了小时包则为“Shared”,如果都没有购买,任务提交失败。 |
VideoLoop | int | 否 | 当音频时长大于视频时长时,生成的视频会对齐音频时长。以下是两种对齐方式: 0:反向拼接、1:正向拼接 。默认 0。 |
VideoParametersConsistent | int | 否 | 视频输出标准(码率与帧率)对齐选项,默认0 。 0:不强制对齐输入视频格式。 1:对齐输入视频格式。 参数说明: 一、选择“0”时 1. 码率: 默认采用 CRF=17 的编码方式,编码器会根据视频内容复杂度动态调整输出码率,确保质量稳定。 2. 帧率: 默认输出帧率为 25fps。 二、选择“1”时 1. 码率处理规则: 输入码率 < 1000kbps → 输出码率调整为 1000kbps。 输入码率 > 9000kbps → 输出码率调整为 9000kbps。 输入码率在 [1000kbps, 9000kbps] 范围内 → 输出码率与输入一致。 2. 帧率处理规则: 输入帧率 < 15fps → 输出帧率调整为 15fps。 输入帧率 > 60fps → 输出帧率调整为 60fps。 输入帧率在 [15fps, 60fps] 范围内 → 输出帧率与输入一致。 |
CallbackUrl | string | 否 | 1. 限制 CallbackUrl 长度小于1000。 2. 只发送一次请求,无论是哪种问题导致的请求失败,都不会再进行发送。 |
VideoParam | object | 否 | 定义合成视频的详细参数。 |
VideoParam.RefPhotoUrl | string | 否 | 用户上传的人脸参考图 URL。 输入视频中包含多张人脸时,VideoMakeNoTrain 视频生成 API 仅能选择一张人脸作为目标替换其口型,实现口型与音频相匹配的效果。此参数用来指定以哪个人物作为目标。 若不输入人脸参考图,默认将选择视频中第一个有人脸的画面中,人脸占比最大的人物为目标。 图像文件要求: 1. 文件大小:文件≤10MB 2. 图像大小:单边分辨率要求在[192~4096] 3. 格式支持 jpg、jpeg、png、bmp、webp 4. 内容:需包含一张清晰的人物正脸,且为视频中出现的人物。 |
VideoParam.DisableIdDetect | int | 否 | 人脸 ID 追踪开关。默认0。 0:开启人脸 ID 追踪。开启后,可以通过人脸 ID 参数(VideoParam.RefPhotoUrl)指定人脸 ID 进行驱动(如果不指定就以识别到的第一个有效人脸 ID 为主)。 1:关闭人脸 ID 追踪。关闭后,人脸 ID 参数(VideoParam.RefPhotoUrl)无效,识别出人脸 ID 均会驱动(如同一帧画面中出现多张人脸,最大的人脸会作为有效人脸 ID)。 |
VideoParam.DisableOcclusionDetect | int | 否 | 遮挡检测开关。默认0。 0:开启遮挡检测。开启后,当嘴部有遮挡时,不会驱动口型。 1:关闭遮挡检测。关闭后,当嘴部有遮挡时,也会驱动口型。 |
VideoParam.EnableFakeTeeth | int | 否 | 假牙处理开关。默认0。 0:关闭假牙处理。关闭后,最终合成的视频里的牙齿,会学习原视频里的牙齿特征。 1:开启假牙处理。开启后,最终合成的视频里的牙齿会重新生成,不会参考原视频的牙齿特征。 |
VideoParam.MakeType | string | 否 | 视频定制类型。 Default:默认配置,视频片段默认会从原视频第0秒开始,StartTime 和 EndTime 均不生效 Custom:指定视频片段,可以填写 StartTime 和 EndTime 来选择片段(需要大于5s),默认生成的视频用该“指定的视频片段”进行正倒放循环。 Circle:首尾帧归位,可以填写 StartTime 来指定视频开始时间(EndTime 不生效),并且此时 VideoLoop 参数不生效。 CustomOnlyStart:通过 StartTime 指定视频起始时间,EndTime 不生效,此时 VideoLoop 参数不生效,默认为反向拼接。 |
VideoParam.StartTime | float | 否 | 起始时间,单位秒(有效数字为小数点后3位),当 MakeType 为 Custom 或 Circle 时生效,当填写的时候,默认生成的视频从该位置开始;不填的时候,默认选取视频开始时间。 |
VideoParam.EndTime | float | 否 | 结束时间,单位秒(有效数字为小数点后3位),当 MakeType 为 Custom 时生效,当填写的时候,默认结束的视频到该位置结束;不填的时候,默认选取该“选中的全部视频片段”的结束时间 |
VideoParam.DisableIntervals | Array of [DisableInterval] | 否 | 定义视频中不驱动时间片段列表(目前最大支持5个时间片段),列表需按照时间顺序递增,否则任务提交失败。 例如:[[1,2],[3,4],[5,6]] 表明原视频的1s~2s、3s~4s、5s~6s不做口型驱动。 |
DisableInterval
参数 | 类型 | 必须 | 说明 |
StartTime | float | 否 | 不驱动片段起始时间,单位秒,(有效数字为小数点后3位) |
EndTime | float | 否 | 不驱动片段结束时间,单位秒,(有效数字为小数点后3位) |
返回参数
参数 | 类型 | 必须 | 说明 |
TaskId | string | 是 |
请求示例
文本驱动
{"Header": {},"Payload": {"RefVideoUrl": "http://virtualhuman-cos-test-1251316161.cos.ap-nanjing.myqcloud.com/ref_video.mp4","DriverType": "Text","InputSsml": "你好,我是虚拟<phoneme alphabet=\\"py\\" ph=\\"fu4\\">主</phoneme>播","SpeechParam": {"TimbreKey": "female_1","Volume": 1,"Speed": 1.0}}}
音频驱动
{"Header": {},"Payload": {"RefVideoUrl": "http://virtualhuman-cos-test-1251316161.cos.ap-nanjing.myqcloud.com/ref_video.mp4","DriverType": "OriginalVoice","InputAudioUrl": "http://virtualhuman-cos-test-1251316161.cos.ap-nanjing.myqcloud.com/audio.mp3"}}
返回示例
{"Header": {"Code": 0,"DialogID": "","Message": "","RequestID": "fde854eaa981c7f2f7285d1c7eca335b","SessionID": "gzb7dec22117297528294581119"},"Payload": {"TaskId": "81883d47c6154edf8e276531f09227b6"}}
编码格式转换小教程
该教程专用于将视频转成 H.264 编码格式,主要原理为:通过 FFmpeg 实现转换。
第一步:安装 FFmpeg
Windows 系统:
从 FFmpeg 官网下载 Windows 版本的压缩包。
macOS 系统:
可以使用 Homebrew 进行安装,命令为 brew install ffmpeg。
Linux 系统:
Ubuntu/Debian 系统使用命令 sudo apt-get install ffmpeg。
Fedora 系统使用命令 sudo dnf install ffmpeg。
第二步:转换
1. 准备好两个路径:转换前视频路径和转换后视频路径,然后在“终端”中输入以下指令。
ffmpeg -i 转换前视频路径 -c:v libx264 -preset medium -crf 23 -c:a aac -b:a 128k 转换后视频路径
例如:
转换前视频路径为:“/Users/xxxx/Downloads/picture/video/视频名.mov”
转换后视频路径为:“/Users/xxxx/Downloads/picture/video/转换后视频名.mp4”
2. 则终端输入指令为:
ffmpeg -i “/Users/xxxx/Downloads/picture/video/视频名.mov” -c:v libx264 -preset medium -crf 23 -c:a aac -b:a 128k “/Users/xxxx/Downloads/picture/video/转换后视频名.mp4”
注意:
Windows 系统需要通过 cd 切换目录到压缩包 .exe 所在的文件夹后,再执行指令。
第三步:验证
验证是否为 H.264:在上一步指定路径下获取已转换视频后,可借助系统自带播放器或第三方 VLC 等软件检查。