媒资库操作
更新时间:2022-11-15
普通素材
用户上传音频/视频/图片到素材库,创作视频时可从素材中心导入
上传素材
使用如下代码可以上传一个视频/音频/图片到媒资库。
Java
1private void upload(BvwClient client) {
2 String bucket = "<your bucket>";
3 String key = "<your key>";
4 String title = "<your media title>";
5 String mediaType = "video";
6 MatlibUploadRequest request = new MatlibUploadRequest(mediaType, title, bucket, key);
7 MatlibUploadResponse response = client.upload2Material(request);
8}
上传媒资可以设置通知回调,在MatlibUploadRequest定义notification通知名称即可。
查询素材
使用如下代码可以从媒资库查询一个素材。
Java
1private void getMaterial(BvwClient client) {
2 String materialId = "16c97461e978571b3202172b527f219f";
3 MaterialGetResponse response = client.getMaterial(materialId);
4}
materialId在上传素材upload2Material时返回。
搜索素材
使用如下代码可以从媒资库搜索指定条件的素材。
Java
1private void searchMaterial(BvwClient client) {
2 MaterialSearchRequest request = new MaterialSearchRequest();
3 request.setTitleKeyword("keyword");
4 MaterialSearchResponse response = client.searchMaterial(request);
5}
删除素材
使用如下代码可以从媒资库删除一个素材。
Java
1private void deleteMaterial(BvwClient client) {
2 String materialId = "16c97461e978571b3202172b527f219f";
3 MaterialBaseResponse response = client.deleteMaterial(materialId);
4}
预置素材
预置素材分为音乐/贴图/背景/字幕/转场,除了系统自带的预置素材外,用户可以自定义音乐/贴图预置素材。创作视频时,不需要导入,可直接使用
上传预置素材
使用如下代码可以上传一个音乐/贴图预置素材到媒资库。
Java
1private void uploadMaterialPreset(BvwClient client) {
2 MatlibUploadRequest request = new MatlibUploadRequest();
3 request.setBucket("your-bucket");
4 request.setKey("your-key");
5 request.setMediaType("audio");
6 request.setTitle("your-title");
7 MaterialPresetUploadResponse response = client.uploadMaterialPreset("MUSIC", request);
8}
查询预置素材
使用如下代码可以查询一个指定预置素材。
Java
1private void getMaterialPreset(BvwClient client) {
2 String materialId = "89355c2e2bd5d22450d965d7381c0517";
3 MaterialPresetGetResponse response = client.getMaterialPreset(materialId);
4}
搜索预置素材
使用如下代码可以从媒资库搜索指定条件的预置素材。
Java
1public void searchMaterialPreset() {
2 Integer pageNo = 1;
3 Integer pageSize = 10;
4 MaterialPresetSearchRequest request = new MaterialPresetSearchRequest();
5 request.setPageNo(pageNo);
6 request.setPageSize(pageSize);
7 MaterialPresetSearchResponse response = client.searchMaterialPreset(request);
8}
删除预置素材
使用如下代码可以删除一个指定预置素材。
Java
1private void deleteMaterialPreset(BvwClient client) {
2 String materialId = "89355c2e2bd5d22450d965d7381c0517";
3 MaterialBaseResponse response = client.deleteMaterialPreset(materialId);
4}
媒资库设置
媒资库相关操作需要预先设置bucket。
创建媒资库设置
使用如下代码可以创建媒资库设置,设置媒资库交互中使用的默认bucket。
Java
1private void createMatlibConfig(BvwClient client) {
2 MatlibConfigBaseRequest request = new MatlibConfigBaseRequest("bucket name");
3 client.createMatlibConfig(request);
4}
更新媒资库设置
使用如下代码可以更新媒资库设置,设置媒资库交互中使用的默认bucket。
Java
1private void updateMatlibConfig(BvwClient client) {
2 MatlibConfigBaseRequest request = new MatlibConfigBaseRequest("bucket name");
3 client.updateMatlibConfig(request);
4}
查询媒资库设置
使用如下代码可以查询媒资库设置,设置媒资库交互中使用的默认bucket。
Java
1private void getMatlibConfig(BvwClient client) {
2 MatlibConfigGetResponse respnse = client.getMatlibConfig();
3}
智能配音
智能配音功能支持将一段文字按指定的发音类型转化为语音输出。
使用如下代码可以进行文字转语音。
Java
1private void text2Audio(BvwClient client) {
2 Text2AudioRequest request = new Text2AudioRequest(Lists.newArrayList(
3 "VideoWorks(原VOD音视频点播服务)以媒资为核心,提供了音视图文件的上传、存储、管理、编辑、转码、AI处理(审核、理解、去重)、分发、播放等全生命周期的PaaS服务。",
4 "VideoWorks致力于成为百度智能云上所有音视频的统一入口,目前已集成了BOS(对象存储)、CDN(内容分发)、MCT(音视频转码)、VCR(视频内容审核)产品,后续会接入VCA(视频内容分析)、智能编辑、智能去重等更多的音视频处理能力。",
5 "此外,VideoWorks引入了工作流(workflow)能力,用户可根据自身业务需求在console可视化灵活配置音视频的处理流程,一次任务下发即可按照既定流程处理完成,方便快捷。"
6 ), Per.BASE_DUXIAOMEI);
7 Text2AudioResponse response = client.text2Audio(request);
8}
视频合成
视频合成功能支持讲一端视频编辑的Timeline(不同媒体分类组成的时间轴数据)编码合成输出。
使用如下代码可以发起合成。
- 接收合成请求Timeline的Json字符串,直接发起合成。
Java
1private void createVideoEdit(BvwClient client) {
2 String jsonString = "{" +
3 " \"bucket\":\"testbucket111\"," +
4 " \"title\":\"default\"," +
5 " \"cmd\":{" +
6 " \"timeline\":{" +
7 " \"video\":[" +
8 " {" +
9 " \"key\": \"name\"," +
10 " \"list\": [" +
11 " {" +
12 " \"type\": \"image\"," +
13 " \"start\": 0," +
14 " \"end\": 10.5," +
15 " \"showStart\": 0," +
16 " \"showEnd\": 10.5," +
17 " \"width\": 1," +
18 " \"height\": 1," +
19 " \"xpos\": 0," +
20 " \"ypos\": 0," +
21 " \"duration\": 10.5," +
22 " \"extInfo\": {" +
23 " \"style\": \"relief\"," +
24 " \"lightness\": 0," +
25 " \"contrast\": 0," +
26 " \"saturation\": 0," +
27 " \"hue\": 0," +
28 " \"speed\": 1," +
29 " \"transitionStart\": \"white\"," +
30 " \"transitionEnd\": \"black\"," +
31 " \"transitionDuration\": 2," +
32 " \"mirror\":\"hori\"," +
33 " \"rotate\" : 180" +
34 " }," +
35 " \"mediaInfo\": {" +
36 " \"key\": \"77f70ad4cf57e46af1b1249999c62918.jpeg\"," +
37 " \"bucket\": \"testbucket111\"," +
38 " \"fileType\": \"image\"" +
39 " }," +
40 " \"uid\": \"d0a7a580-fe36-4baf-b4ac-193565925b01\"" +
41 " }" +
42 " ]" +
43 " }" +
44 " ]," +
45 " \"audio\":[" +
46 " {" +
47 " \"key\":\"name\"," +
48 " \"list\":[" +
49 " ]" +
50 " }" +
51 " ]," +
52 " \"sticker\":[" +
53 " ]," +
54 " \"subtitle\" : [" +
55 " ]" +
56 " }" +
57 " }" +
58 "}";
59 String notification = "notificationName";
60
61 Map<String, Object> editBody = new ObjectMapper().convertValue(JsonUtils.jsonNodeOf(jsonString), Map.class);
62 VideoEditCreateRequest request = new VideoEditCreateRequest(editBody, RefererType.baidu, notification);
63 VideoEditCreateResponse response = client.createVideoEdit(request);
64
65}
- 自己组合Timeline数据对象
自己组合Timeline对象(Map<String, Object>) ,将组合好的符合Timeline规则对象作为参数传入VideoEditCreateRequest构造函数即可
Java
1private void createVideoEdit(BvwClient client, Map<String, Object> cmd) {
2 Map<String, Object> editBody = new HashMap<String, Object>();
3 String notification = "notificationName";
4
5 editBody.put("bucket", "userBucket");
6 editBody.put("title", "editTitle");
7 editBody.put("cmd", cmd);
8
9 VideoEditCreateRequest request = new VideoEditCreateRequest(editBody, RefererType.baidu, notification);
10 VideoEditCreateResponse response = client.createVideoEdit(request);
11}
查询视频合成结果
使用如下代码可以查询视频合成结果。
Java
1private void pollingVideoEdit(BvwClient client) {
2 long editId = 123;
3 VideoEditPollingResponse response = client.pollingVideoEdit(editId);
4}
创建草稿
Java
1private void createDraft(BvwClient client) {
2 MatlibTaskRequest request = new MatlibTaskRequest();
3 MatlibTaskResponse draft = client.createDraft(request);
4}
更新草稿
Java
1private void updateDraft(BvwClient client) {
2 MatlibTaskRequest request = new MatlibTaskRequest();
3 // request 设置草稿的各个字段值
4 // 123为创建生成的草稿id
5 client.updateDraft(123, request);
6}
获取草稿列表
Java
1private void listDraft(BvwClient client) {
2 DraftListRequest listRequest = DraftListRequest.of(1, 5);
3 listRequest.setStatus(MatlibTaskStatus.EDITING);
4 ListByPageResponse<MatlibTaskGetResponse> draftList = client.getDraftList(listRequest);
5}
获取单条草稿
Java
1private void getDraft(BvwClient client) {
2 // 123为创建生成的草稿id
3 long id = 123L;
4 GetDraftResponse draft = client.getSingleDraft(id);
5}