咨询一个问题,在视觉智能开放平台中的"通用视频生成"能力,上传素材文件不在同一地域OSS的情况下,如果要上传多分图片,应该怎么处理?
可以参考通用视频生成的示例代码,是支持多个素材的上传的。
通用视频生成示例代码:https://help.aliyun.com/zh/viapi/use-cases/general-video-generated-1
可以参考官方文档,文件在本地或文件不在同一地域OSS
/*
引入依赖包
<!-- https://mvnrepository.com/artifact/com.aliyun/videoenhan20200320 -->
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>videoenhan20200320</artifactId>
<version>${aliyun.videoenhan.version}</version>
</dependency>
*/
import com.aliyun.tea.TeaModel;
import com.aliyun.videoenhan20200320.models.GenerateVideoAdvanceRequest;
import com.aliyun.videoenhan20200320.models.GenerateVideoResponse;
import java.io.InputStream;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
public class GenerateVideo {
public static com.aliyun.videoenhan20200320.Client createClient(String accessKeyId, String accessKeySecret) throws Exception {
/*
初始化配置对象com.aliyun.teaopenapi.models.Config
Config对象存放AccessKeyId、AccessKeySecret、endpoint等配置
*/
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
.setAccessKeyId(accessKeyId)
.setAccessKeySecret(accessKeySecret);
// 访问的域名
config.endpoint = "videoenhan.cn-shanghai.aliyuncs.com";
return new com.aliyun.videoenhan20200320.Client(config);
}
public static void main(String[] args) throws Exception {
// 创建AccessKey ID和AccessKey Secret,请参考https://help.aliyun.com/document_detail/175144.html
// 如果您使用的是RAM用户的AccessKey,还需要为子账号授予权限AliyunVIAPIFullAccess,请参考https://help.aliyun.com/document_detail/145025.html
// 从环境变量读取配置的AccessKey ID和AccessKey Secret。运行代码示例前必须先配置环境变量。
String accessKeyId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
String accessKeySecret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
com.aliyun.videoenhan20200320.Client client = GenerateVideo.createClient(accessKeyId, accessKeySecret);
// 场景一,使用本地文件
// InputStream inputStream = new FileInputStream(new File("/tmp/generateVideo.png"));
// 场景二,使用任意可访问的url
URL url = new URL("http://viapi-test.oss-cn-shanghai.aliyuncs.com/viapi-3.0domepic/videoenhan/GenerateVideo/1-video1.mp4");
InputStream inputStream = url.openConnection().getInputStream();
GenerateVideoAdvanceRequest.GenerateVideoAdvanceRequestFileList generateVideoAdvanceRequestFileList = new GenerateVideoAdvanceRequest.GenerateVideoAdvanceRequestFileList();
generateVideoAdvanceRequestFileList.setFileName("video");
generateVideoAdvanceRequestFileList.setType("video");
generateVideoAdvanceRequestFileList.setFileUrlObject(inputStream);
List<GenerateVideoAdvanceRequest.GenerateVideoAdvanceRequestFileList> generateVideoRequestFileLists = new ArrayList<>();
generateVideoRequestFileLists.add(generateVideoAdvanceRequestFileList);
GenerateVideoAdvanceRequest generateVideoAdvanceRequest = new GenerateVideoAdvanceRequest();
generateVideoAdvanceRequest.setScene("general");
generateVideoAdvanceRequest.setWidth(1000);
generateVideoAdvanceRequest.setHeight(1000);
generateVideoAdvanceRequest.setStyle("fast");
generateVideoAdvanceRequest.setDuration((float) 10L);
generateVideoAdvanceRequest.setDurationAdaption(true);
generateVideoAdvanceRequest.setTransitionStyle("brush");
generateVideoAdvanceRequest.setSmartEffect(true);
generateVideoAdvanceRequest.setPuzzleEffect(true);
generateVideoAdvanceRequest.setMute(true);
generateVideoAdvanceRequest.setFileList(generateVideoRequestFileLists);
com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
try {
GenerateVideoResponse generateVideoResponse = client.generateVideoAdvance(generateVideoAdvanceRequest, runtime);
// 获取整体结果
System.out.println(com.aliyun.teautil.Common.toJSONString(TeaModel.buildMap(generateVideoResponse)));
// 获取单个字段
System.out.println(generateVideoResponse.getBody());
} catch (com.aliyun.tea.TeaException teaException) {
// 获取整体报错信息
System.out.println(com.aliyun.teautil.Common.toJSONString(teaException));
// 获取单个字段
System.out.println(teaException.getCode());
}
}
}
——参考来源于阿里云文档。
在视觉智能开放平台的"通用视频生成"能力中,如果您需要上传的素材文件不在同一地域的OSS上,可以考虑使用阿里云的对象存储服务(OSS)进行文件的传输。首先,您需要确保所有的素材文件都被正确地上传到各自的OSS存储空间中。然后,您可以在上传素材时指定对应的OSS存储空间地址和文件路径。这种方式不仅可以处理多地域的文件上传,也有利于管理和维护您的素材文件。
此外,对于图片的处理,如果客户直接上传的是视频素材,就可以直接进行视频人像卡通化处理。如果客户传入的是图片输出,可以先调用人物动漫化之后,再对动漫化后的图片进行通用视频生成。
可以参考这个文件在本地或者非同一地域oss的传入调用示例
https://help.aliyun.com/zh/viapi/use-cases/general-video-generated-1
—该回答整理自钉群“阿里云视觉智能开放平台咨询1群”
在视觉智能开放平台中,如果上传素材文件不在同一地域的OSS,要上传多张图片,可以按照以下步骤进行处理:
1.创建OSS对象:首先,确保你已经创建了OSS对象,并获得了访问密钥(Access Key ID和Access Key Secret)以及OSS的域名。
2.配置OSS客户端:使用你选择的编程语言(如Python、Java等),安装相应的OSS客户端库。根据所选语言和库的文档,配置OSS客户端,设置访问密钥和OSS域名。
3.上传图片到OSS:对于每一张要上传的图片,使用OSS客户端将其上传到OSS中。你可以选择将图片上传到同一个存储桶(Bucket)中,或者根据需要上传到不同的存储桶。
4.获取图片的URL:一旦图片上传成功,你可以使用OSS客户端获取图片的URL。这将返回一个包含图片URL的响应,你可以将其用于后续的处理或调用视觉智能开放平台的API。
5.调用视觉智能开放平台的API:在获取到所有图片的URL后,你可以将它们作为输入参数传递给视觉智能开放平台的"通用视频生成"能力。
需要注意的是,由于图片不在同一地域的OSS,传输和加载速度可能会受到网络延迟的影响。为了提高性能和效率,你可以考虑将图片预先上传到离你最近的OSS地域,然后再调用视觉智能开放平台的API进行视频生成。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。