智能媒体生产 ICE 使用及实战|学习笔记

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,内容安全 1000次 1年
对象存储 OSS,恶意文件检测 1000次 1年
简介: 快速学习智能媒体生产 ICE 使用及实战

开发者学堂课程【视频云技术入门-1024程序员节创造营公益课智能媒体生产 ICE 使用及实战】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/902/detail/14332


智能媒体生产 ICE 使用及实战


目录:

一,时间线简介

二,Timeline 数据结构

三,制作卡点相册

四,代码实战

 

一, 时间线简介

时间轨道:

Track(轨道)

轨道是多个素材片段按照一定顺序组成的序列,轨道类型包含视频轨、音频轨、字幕轨,每种轨道可以包含多条,按照层叠顺序

福益,多条轨道可以同时播放。

Clip(素材片段)

Clip 是对一个片段的描述,标注了一个素材在时间线上的位置,在画布中的坐标、尺寸等信息。

Effect(特效)

特效包括转场、滤镜、特效,一个 Clip 可以包含多个 Effect。

 

二,Timeline 数据结构

VideoTrackClip

Type: lmage

关键信息:Duration、Timelineln、TimelineOutx、 Y、 Width、Height

Type: Video

关键信息:In、Out、Timelineln、TimelineOutx、 Y. Width、Height

SubtitleTrackClipType: Subtitle

关键信息:FileURL

AudioTrackClip

关键信息:MediaURL/Medialdln、Out、Timelineln、TimelineOut

Effect

关键信息:Type.Timelineln、TimelineOut

 

三,制作卡点相册

时间线分析:

视频轨

由多张图片组成的 Clip 序列,每个 Clip 按照顺序恰好落在节拍的开始结束。

音频轨

音频轨只有一个 Clip,即带节奏的背景音乐。

制作流程:

第一步:获取节奏信息

调用 SubmitlProductionJob 接口,提交节奏检测任务

调用 QuerylProductionJob 接口,获取任务状态,等待任务执行完成

第二步:封装时间线

读取智能任务结果

据节奏信息封装时间线

第三步:合成视频

调用 SubmitMediaProducingJob 接口,提交剪辑合成任务

调用 GetMediaProducingJob,等待合成任务完成

获取音乐节奏信息

提交智能生产作业 SubmitMediaProducingJob

参数名称

示例值

FunctionName

AudioBeatDetection(节奏检测)

lnput

oss://your-bucket.oss-cn-shanghai.aliyuncs.com/music.mp3

Output

oss://your-bucket.oss-cn-shanghai.aliyuncs.com/output.txt

输出:Jobld

查询智能生产作业 QuerylProductionJob

参数名称

示例值

Jobld

******85f8cf40c086daf6e971******

输出:Job 信息(包含智能任务结果)

封装时间线:

从音乐节奏信息到时间线

音乐节奏信息如下

{

“result" :"success"",

“BeatList":[ 0.04", "o.82", "1.61",“2.38",

-3.17."3.96","4.74",”5.53"~..].

“DownBeatList": [ "o.04", ""3.17-, "6.3".

-9.42-,“12.56-, -i5.7-.“18.83- ..]

}

时间线信息如下

{

“videoTracks" : [ {

"vidcoTrackciips" : [ {

MediauRE": "https : //your-bucket.oss=Cn-shanghai.aliyuncs.com/image.jpg","Type": "Image".

" Duration": -o.04”},{

""MediaURL":"https://your-bucket.oss-cn-shanghai.aliyuncs.com/image.jpg",“Type": “Image"".

-Duration-: -0.82”},{

""MediaURL": "https: //your-bucket.oss=Gn-shanghai.aliyuncs.com/image.jpg"“Type":“工mage".

Duration-:“ 1.61”},{

""MediaURL": "https: /lyour-bucket.oss=Cn-shanghai.aliyuncs.com/image.jpg","Type" : Image"".

Duration-: " 2.38-

1

1,

AudioTracks": [{

AudioTrackciips": [ {

"MediaURL": "https: //your-bucket.oss=Cn-shanghai.aliyuncs.com/music.mp3"

}]

}]

}

合成视频

提交剪辑合成作业 SubmitMediaProducingJob

参数名称

示例值

Timeline

{"VideoTracks":[...],"AudioTracks":[...]}

OutputMediaConfig 

{"MediaURL"."https://your-bucket.oss-cn-shanghai.aliyuncs.com/video.mp4"}

输出: Jobld 

查询剪辑合成作业 GetMediaProducingJob

参数名称

示例值

Jobld

****** 85f8cfA0r086daf6e971******

输出: Job 信息

添加转场效果

 

四,代码实战

第一步:提交节奏检测任务

//提交节检测任务

com.aliyun.mts20140618.Client client = createMpsClient();

SubmitIProductionJobRequest = new SubmitIProductionJobRequest();submitIProductionJobRequest.setFunctionName("AudioBeatDetection");

submitIProductionJobRequest.setInput("oss:;//oushu-test-shanghai.oss-cn-shanghai.alixunes.con/test.media/luffoato. VansinJapan.mp8 ) ;

submitIProductionJobRequest.setlutput( "oss://oushu-test-shanghai.oss-cn-shanghai.alixwncs.col/ionoduatico/isource)-{timestamp;.t )SubmitIProduction3obResponse submitIProductionJobResponse = cient.submitIProductionJob(submitIProdvctionJobRoquest);

//等任务完成

String jobId = submitIProductionJobResponse.body.jobId;String result;

while (true) {

QueryIProductionJobRequest = new QueryIProductionJobRequest();queryIProductionJobRequest.setJobId(jobId);

QueryIProductionJobResponse = client.queryIProduction.Job(queryIProductionJobRequest);System.out . println( "out : " +JSONObject.to3SONString(queryIProductionJobResponse.body));

if ("Success".equals(queryIProductionJobResponse.body.state)){

result = queryIProductionJobResponse.body.result;

break;

}

Thread.sleep( millis: 5888);

} 

第二步:根据节奏点的任务拼装出时间线

//获取节检测任务结果

string file = 130M0boject.,parseCbiject(00Mbject.yausebfjetoneslt).,gtString( toy "nat '. etoNSoMAray( twy "'renot ).getosSoDbject( inox a,).pestrung、 nl"ne ,;System.out.println( ""result file :" +file);

String resultcontent = get0bjectcontent(file);

System.out.println("result content : " +resultContent);

JSONArray beatList = 3SONObject.parseObject(resultContent).getJSONArray( key:"BeatList");

//封装时间线

String[] imageUrls = new String[]{

"httos://oushu-test-shanghai.oss-cn-shanghai.aliyuncs.com/test media/pno_pic1/1.ina"."https://oushu-test-shanghai.oss-cn-shanghai.aliyuncs.com/test_media/pro.pic1/3.jpg"."httos:l/oushu-test-shanghai.oss-cn-shanghai.aliyuncs.com/test media/pro pic1/6.jng".,httos:L/oushu-test-shanghai.oss-Cn-shanghai.aliyuncs.com/test media/pro pic1/7.1ipna","httos://oushu-test-shanghai.oss-cn-shanghai.aliyuncs.com/test media/pro pic1/8.ing","https://oushu-test-shanghai.oss-cn-shanghai.aliyuncs.com/test.media/pro.pic1/10.jp9","https:Lloushu-test-shanghai.oss-Cn-shanghai.aliyuncs.com/test medialpro pic1/13.jpg",

;

JSONArray videoTrackClips = new JSONArrayO;float transitionDur =0.3f;

for (int i =0;i< imageUrls.length; i++){

String url = imageUrls[il;

JSONObject obj = new JSONObjectO;

String duration = beatList.getString(i);obj.put( "MediaURL",url);

obj.put("Duration",Float.parseFloat(duration)+ transitionDur);obj.put("Type", "Image");

if (Float.parseFloat(duration) > transitionDur)i

obj.put("Effects",JSOMAIvay.panse(taxc “"[('Typel':Transition" , "SubTypel:'gneayzo.m(",  Duration)':" + transitionDu + })'>);

}

videoTrackClips.add(obj);

}

strtng tlmeLne = " (lVldoiracks):4(1 YdoincLiosl" " + vlooirocuios .tousNStelng() + ")],AMAudtofracks)" !fi1M wudoTraekCALpos " ![4/"MctoURL :/'ittosllushv-toSystem.out.println( "timeline : " +timeline);

}

第三步;拼装时间线合成任务

//提交合成任务

SubmitNediaProducingJobRequest submitNediaProducing3obRequest = new SubmitNediaProducing3obRequest();submitHediaProducingJobRequest.setTimeline(timeline);

String outpiptPath = IceUtil.getRandomoutputPathO;

String mediaURL = "https://oushu-test-shanghai.oss-cn-shanghai.aliyuncs .com/" + outputPath + ".mp6";

submitHNediaProducingJobRequest.setoutputNediaConfig(" A "NediaURLA": ""+mediaURL +"V , "Iiath\":1280, "Hedght\":720) ");client iceclient = TestclientInstance.getInstance().getIceclient(;

$ubnitlediaProducingpJobResponse subwitlediaProdcingJobResponse = iceCLient.submitNediaProdvcingJob(submithediaProdvcinglobRequest);

Systen ovt.p intu( fjo crate ,jold : ' o* sutaithdiolProducingloblesyos.boy .j oud  ", nwepnstid : " + stbitlediaProdvein otbespons.oy.getileoustd()  , med.

//等待合成任务完成

while (true){

GetWediaProducingJobRequest getMediaProducingJobRequest = new GetHediaProducingJobRequest();getNediaProducingJobRequest.setJobId(submitHediaProducingJobResponse.body.jobId);

GethediaProducingJobResponse getlediaProdvcing.obResponse m iceCLient. gethediaProducingJob(getMediaProducingJobRequest)System.out.pointin(“GetMediaProducingJobResponse : " + JS0NObject.to.7sONString( getMediaProdvcingJobResponse.body>);

String status = getHediaProducingJobResponse.getBody().getHediaProducingJob().getStatus();

if(""Success".equals(status)){

break;

,

Thread.sleep( millise :5888);

}

system.out.println("Produce succeed :" + mediaURL);

}

 

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
相关文章
|
7月前
|
人工智能 边缘计算 监控
【开源视频联动物联网平台】视频AI智能分析部署方式
【开源视频联动物联网平台】视频AI智能分析部署方式
372 3
|
1月前
|
人工智能 Cloud Native 数据管理
媒体声音|重磅升级,阿里云发布首个“Data+AI”驱动的一站式多模数据平台
在2024云栖大会上,阿里云瑶池数据库发布了首个一站式多模数据管理平台DMS:OneMeta+OneOps。该平台由Data+AI驱动,兼容40余种数据源,实现跨云数据库、数据仓库、数据湖的统一数据治理,帮助用户高效提取和分析元数据,提升业务决策效率10倍。DMS已服务超10万企业客户,降低数据管理成本高达90%。
145 19
《阿里云产品手册2022-2023 版》——智能媒体服务
《阿里云产品手册2022-2023 版》——智能媒体服务
|
人工智能 云计算 开发者
《云端智创—云端智能媒体生产技术解析与实践》电子版地址
本书基于阿里云开发者社区的DeepVideo训练营,搜集整理了阿里云视频云的资深导师们的精彩演讲内容,与各位开发者和视频制作技术朋友分享。
92 0
《云端智创—云端智能媒体生产技术解析与实践》电子版地址
|
物联网
《物联网专场-《智能人居设备应用规范》发布》电子版地址
物联网专场-《智能人居设备应用规范》发布
100 1
《物联网专场-《智能人居设备应用规范》发布》电子版地址
|
物联网
《阿里云总监课第二期——IoT时代的语音交互智能》电子版地址
阿里云总监课第二期——IoT时代的语音交互智能
|
物联网
《物联网专场-智能人居设备应用规范发布》电子版地址
物联网专场-智能人居设备应用规范发布
115 0
《物联网专场-智能人居设备应用规范发布》电子版地址
|
人工智能 云计算 开发者
《云端智创—云端智能媒体生产技术解析与实践》电子版下载地址
本书基于阿里云开发者社区的DeepVideo训练营,搜集整理了阿里云视频云的资深导师们的精彩演讲内容,与各位开发者和视频制作技术朋友分享。
97 0
《云端智创—云端智能媒体生产技术解析与实践》电子版下载地址
|
消息中间件 前端开发 程序员
智能媒体生产 ICE 使用及原理介绍(二)|学习笔记
快速学习智能媒体生产 ICE 使用及原理介绍(二)
264 0
智能媒体生产 ICE 使用及原理介绍(二)|学习笔记