fix: 仿照即梦出一版

This commit is contained in:
old burden 2026-03-31 13:49:46 +08:00
parent 45cff6ab27
commit 15f5a20f7c
1 changed files with 49 additions and 18 deletions

View File

@ -266,13 +266,32 @@ public class PortalVideoController extends BaseController {
@PostMapping("/image-reference")
@ApiOperation("图生视频-基于参考图")
public AjaxResult imageReference(@RequestBody PortalVideoGenRequest request) {
List<ContentItem> contentList;
if (request.getContent() != null && !request.getContent().isEmpty()) {
contentList = request.getContent();
ContentItem head = contentList.get(0);
if (head == null || !"text".equals(head.getType()) || StringUtils.isEmpty(head.getText())) {
return AjaxResult.error("请输入视频描述文本(首条须为 type=text可含 [图n] 占位)");
}
String firstRef = contentList.stream()
.filter(PortalVideoController::isReferenceImageContentItem)
.map(it -> it.getImageUrl().getUrl())
.findFirst()
.orElse(null);
if (StringUtils.isEmpty(firstRef)) {
return AjaxResult.error("请上传参考图content 中须含 image_url + role=reference_image");
}
if (StringUtils.isEmpty(request.getReferenceUrl())) {
request.setReferenceUrl(firstRef);
}
} else {
if (StringUtils.isEmpty(request.getReferenceUrl())) {
return AjaxResult.error("请上传参考图");
}
if (StringUtils.isEmpty(request.getText())) {
return AjaxResult.error("请输入视频描述文本");
}
List<ContentItem> contentList = new ArrayList<>();
contentList = new ArrayList<>();
ContentItem textItem = new ContentItem();
textItem.setType("text");
textItem.setText(request.getText());
@ -285,11 +304,23 @@ public class PortalVideoController extends BaseController {
refUrl.setUrl(request.getReferenceUrl());
refItem.setImageUrl(refUrl);
contentList.add(refItem);
}
ByteBodyReq body = newVideoBody(request, contentList);
return submitOrderAndCreate(request, "image-reference", body);
}
private static boolean isReferenceImageContentItem(ContentItem item) {
if (item == null || !"image_url".equals(item.getType())) {
return false;
}
if (!"reference_image".equals(item.getRole())) {
return false;
}
ImageUrl iu = item.getImageUrl();
return iu != null && StringUtils.isNotEmpty(iu.getUrl());
}
private List<ContentItem> buildTextAndFirstFrame(String text, String firstUrl) {
List<ContentItem> contentList = new ArrayList<>();
ContentItem textItem = new ContentItem();