智能媒体生产 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,搭建一个在线教育视频课程分享网站。
相关文章
|
6月前
|
人工智能 边缘计算 监控
【开源视频联动物联网平台】视频AI智能分析部署方式
【开源视频联动物联网平台】视频AI智能分析部署方式
350 3
|
6月前
|
人工智能 搜索推荐 机器人
AI Agent涌向移动终端,手机智能体开启跨端跨应用业务连接新场景
AI Agent涌向移动终端,开启跨端跨应用业务连接新场景,手机智能体将成企业AIGC应用新标配。
142 0
|
6月前
|
机器学习/深度学习 传感器 前端开发
重磅发布!伟景智能推出人形机器人专用立体视觉系统ViEye
伟景智能凭借在工业级立体相机和人形机器人领域多年的技术积累和产品研发,推出了专为人形机器人设计的专业视觉系统——ViEye。搭载这一视觉系统后,伟景智能的人形机器人操作系统实现了“眼到手到”的全面覆盖,完美结合了平面视觉、立体视觉和机械手控制。该系统旨在为人形机器人提供精准且全面的视觉信息,解决了机器人“脑、眼、手”协同融合的难题,为机器人赋予了高精度的感知能力,使其能够更有效地应用于各种场景。这一创新将有助于提升人形机器人在实际应用中的性能和效果。
|
人工智能 监控 网络协议
HaaS Python 云端一体AI 车型识别功能
HaaS Python 云端一体AI 车型识别功能
297 0
|
安全 物联网
更强交互,阿里云IoT发布屏显智能产品
阿里云推出了三大全新产品,帮助设备快速完成智能化升级。
439 0
更强交互,阿里云IoT发布屏显智能产品
|
消息中间件 前端开发 程序员
智能媒体生产 ICE 使用及原理介绍(二)|学习笔记
快速学习智能媒体生产 ICE 使用及原理介绍(二)
255 0
智能媒体生产 ICE 使用及原理介绍(二)|学习笔记
|
编解码 自然语言处理 文字识别
智能媒体生产 ICE 使用及原理介绍(一)|学习笔记
快速学习智能媒体生产 ICE 使用及原理介绍(一)
247 0
智能媒体生产 ICE 使用及原理介绍(一)|学习笔记
|
人工智能 算法 IDE
智能化测试新趋势:手淘 AI+IoT 机器人泛终端测试实战
“为模拟真实用户”,Robot-XT 极测机器人提供了为用户体验度量评测的能力,不仅可以最大程度地模拟用户真实操作,还实现了多设备跨终端的功能自动化和用户体验度量。同时,Robot-XT 极测机器人通过 IoT+AI 的智能化技术搭建一套支持多机操作并具备高稳定性的的 UEE 自动化解决方案,实现了覆盖从线上 App 到线下智能门店场景的端到端自动化测试,赋能行业,为软件绿色联盟的加盟 App 提供用户体验评测服务。
810 0
智能化测试新趋势:手淘 AI+IoT 机器人泛终端测试实战
|
6月前
|
移动开发 编解码 前端开发
使用智能媒体生产ICE辅助H5实时视频生产
在H5营销活动中,实时生成分享视频能促进活动的传播度,本篇介绍使用智能媒体生产ICE,通过云剪辑的方法,辅助H5活动实时生产传播视频。
271 0
使用智能媒体生产ICE辅助H5实时视频生产
|
存储 人工智能 编解码
云栖新品|阿里云IoT发布云芯一体智能视觉解决方案
在2021云栖大会IoT云端一体硬件与应用创新峰会上,阿里云IoT发布了Link Visual 云芯一体化智能视觉解决方案,宣布Link Visual从单一视频云服务平台向芯云一体化智能视觉解决方案升级。
340 0
云栖新品|阿里云IoT发布云芯一体智能视觉解决方案