fix: 仿照即梦出一版
This commit is contained in:
parent
45cff6ab27
commit
15f5a20f7c
|
|
@ -266,30 +266,61 @@ public class PortalVideoController extends BaseController {
|
||||||
@PostMapping("/image-reference")
|
@PostMapping("/image-reference")
|
||||||
@ApiOperation("图生视频-基于参考图")
|
@ApiOperation("图生视频-基于参考图")
|
||||||
public AjaxResult imageReference(@RequestBody PortalVideoGenRequest request) {
|
public AjaxResult imageReference(@RequestBody PortalVideoGenRequest request) {
|
||||||
if (StringUtils.isEmpty(request.getReferenceUrl())) {
|
List<ContentItem> contentList;
|
||||||
return AjaxResult.error("请上传参考图");
|
if (request.getContent() != null && !request.getContent().isEmpty()) {
|
||||||
}
|
contentList = request.getContent();
|
||||||
if (StringUtils.isEmpty(request.getText())) {
|
ContentItem head = contentList.get(0);
|
||||||
return AjaxResult.error("请输入视频描述文本");
|
if (head == null || !"text".equals(head.getType()) || StringUtils.isEmpty(head.getText())) {
|
||||||
}
|
return AjaxResult.error("请输入视频描述文本(首条须为 type=text,可含 [图n] 占位)");
|
||||||
List<ContentItem> contentList = new ArrayList<>();
|
}
|
||||||
ContentItem textItem = new ContentItem();
|
String firstRef = contentList.stream()
|
||||||
textItem.setType("text");
|
.filter(PortalVideoController::isReferenceImageContentItem)
|
||||||
textItem.setText(request.getText());
|
.map(it -> it.getImageUrl().getUrl())
|
||||||
contentList.add(textItem);
|
.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("请输入视频描述文本");
|
||||||
|
}
|
||||||
|
contentList = new ArrayList<>();
|
||||||
|
ContentItem textItem = new ContentItem();
|
||||||
|
textItem.setType("text");
|
||||||
|
textItem.setText(request.getText());
|
||||||
|
contentList.add(textItem);
|
||||||
|
|
||||||
ContentItem refItem = new ContentItem();
|
ContentItem refItem = new ContentItem();
|
||||||
refItem.setType("image_url");
|
refItem.setType("image_url");
|
||||||
refItem.setRole("reference_image");
|
refItem.setRole("reference_image");
|
||||||
ImageUrl refUrl = new ImageUrl();
|
ImageUrl refUrl = new ImageUrl();
|
||||||
refUrl.setUrl(request.getReferenceUrl());
|
refUrl.setUrl(request.getReferenceUrl());
|
||||||
refItem.setImageUrl(refUrl);
|
refItem.setImageUrl(refUrl);
|
||||||
contentList.add(refItem);
|
contentList.add(refItem);
|
||||||
|
}
|
||||||
|
|
||||||
ByteBodyReq body = newVideoBody(request, contentList);
|
ByteBodyReq body = newVideoBody(request, contentList);
|
||||||
return submitOrderAndCreate(request, "image-reference", body);
|
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) {
|
private List<ContentItem> buildTextAndFirstFrame(String text, String firstUrl) {
|
||||||
List<ContentItem> contentList = new ArrayList<>();
|
List<ContentItem> contentList = new ArrayList<>();
|
||||||
ContentItem textItem = new ContentItem();
|
ContentItem textItem = new ContentItem();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue