目录前言一、阿里云视觉开发智能平台配置1.1 熟悉视觉开发智能平台1.1.1 视频理解能力介绍1.1.2 视频理解示例代码1.2 开通和购买产品1.2.1 视频理解能力OCR开通和购买1.3 跑通示例代码之接入SDK1.3.1 视频理解【OCR】SDK接入1.3.1.1 异步调用相关结语 云泽Q个人主页 专栏传送入口: 《C语言》《数据结构》《C》《Linux》《蓝桥杯系列》《笔试算法》《AI赋能》⛺️遇见安然遇见你不负代码不负卿~前言大家好啊我是云泽Q欢迎阅读我的文章一名热爱计算机技术的在校大学生喜欢在课余时间做一些计算机技术的总结性文章希望我的文章能为你解答困惑~该篇文章为项目中后端部分配合阿里云视觉开发平台的实现建议分为两部分来看第一部分是先看完视频理解能力第二部分才开图片内容相关的二者在项目搭建的时候我也是分开做的一、阿里云视觉开发智能平台配置1.1 熟悉视觉开发智能平台1.1.1 视频理解能力介绍视频理解能力介绍【OCR】上面是官方的介绍文档专栏中我只做影视字幕识别自己感兴趣的话演职员表识别和体育文字识别都是可以自己做的也有接入指引和对视频的一些限制1.1.2 视频理解示例代码视频OCR我们先来看一下代码将来我们项目中上传的视频一定是从我们电脑本地传上去的而图片中这里文件在上海地域OSS指的是视频上传到上海的云服务器所以看的不是这里的代码我们看的是这里的代码这里的意思是我们的文件在本地电脑上或者直接给他一个视频链接。项目中实现的是文件在本地由于我们的项目是Java写的所以这里就选择Java代码/* 引入依赖包 !-- https://mvnrepository.com/artifact/com.aliyun/videorecog20200320 -- dependency groupIdcom.aliyun/groupId artifactIdvideorecog20200320/artifactId version${aliyun.videorecog.version}/version /dependency */importcom.aliyun.tea.TeaException;importcom.aliyun.tea.TeaModel;importcom.aliyun.videorecog20200320.models.RecognizeVideoCastCrewListResponse;importjava.io.File;importjava.io.FileInputStream;importjava.io.InputStream;importjava.net.URL;publicclassRecognizeVideoCastCrewList{publicstaticcom.aliyun.videorecog20200320.ClientcreateClient(StringaccessKeyId,StringaccessKeySecret)throwsException{/* 初始化配置对象com.aliyun.teaopenapi.models.Config Config对象存放 AccessKeyId、AccessKeySecret、endpoint等配置 */com.aliyun.teaopenapi.models.Configconfignewcom.aliyun.teaopenapi.models.Config().setAccessKeyId(accessKeyId).setAccessKeySecret(accessKeySecret);// 访问的域名config.endpointvideorecog.cn-shanghai.aliyuncs.com;returnnewcom.aliyun.videorecog20200320.Client(config);}publicstaticvoidmain(String[]args)throwsException{// 创建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。运行代码示例前必须先配置环境变量。StringaccessKeyIdSystem.getenv(ALIBABA_CLOUD_ACCESS_KEY_ID);StringaccessKeySecretSystem.getenv(ALIBABA_CLOUD_ACCESS_KEY_SECRET);com.aliyun.videorecog20200320.ClientclientRecognizeVideoCastCrewList.createClient(accessKeyId,accessKeySecret);// 场景一使用本地文件//InputStream inputStream new FileInputStream(new File(/tmp/RecognizeVideoCastCrewList1.mp4));// 场景二使用任意可访问的urlURLurlnewURL(http://viapi-test.oss-cn-shanghai.aliyuncs.com/viapi-3.0domepic/videorecog/videorecog/videorecog2.mp4);InputStreaminputStreamurl.openConnection().getInputStream();com.aliyun.videorecog20200320.models.RecognizeVideoCastCrewListAdvanceRequestrecognizeVideoCastCrewListAdvanceRequestnewcom.aliyun.videorecog20200320.models.RecognizeVideoCastCrewListAdvanceRequest().setVideoUrlObject(inputStream);com.aliyun.teautil.models.RuntimeOptionsruntimenewcom.aliyun.teautil.models.RuntimeOptions();try{// 复制代码运行请自行打印 API 的返回值RecognizeVideoCastCrewListResponseresponseclient.recognizeVideoCastCrewListAdvance(recognizeVideoCastCrewListAdvanceRequest,runtime);System.out.println(com.aliyun.teautil.Common.toJSONString(TeaModel.buildMap(response)));}catch(TeaExceptionerror){// 获取整体报错信息System.out.println(com.aliyun.teautil.Common.toJSONString(error));// 获取单个字段System.out.println(error.getCode());}}}我们只需要把这段代码复制一下回到Trae在java开头的下面右键新建一个文件夹随便取一个名字我这里就是test然后右键test这个文件夹再新建一个文件文件名为RecognizeVideoCastCrewList.java实际上就是上面代码的类名加个java后缀创建好之后Trae会默认写好一部分代码但是我们不需要这段代码只需要把刚刚的阿里云平台的示例代码复制粘贴进来就好了注意图片中有一个漏掉的点Trae会默认写好一部分代码会带有package com.example.demo.test;这样的第一段代码这个要留着这样我们就将示例代码拿过来的有的兄弟此时代码中可能会标有红线代表有bug原因是阿里云平台的示例代码最前面写了需要引入依赖包…意思是未注释的代码实现的时候也使用了一些工具这些工具就是最上方被注释掉的灰色部分这还需要一些操作这个放到后面再说先紧接着跳到目录中开通和购买产品来看1.2 开通和购买产品1.2.1 视频理解能力OCR开通和购买刚刚复制粘贴进来的代码其中调用的视频相关的工具都是阿里云写好的工具这也就意味着我们需要花钱购买但实际上是不需要的阿里云有一个活动会给你一定免费的额度我在做项目的时候是验证了用不完的所以完全不用担心就算真的需要购买也非常便宜视频理解能力介绍【OCR】依旧是打开该网址链接其中有一个计费说明可以从这里跳转进去或者直接点我这里放好的链接视频理解计费介绍我们需要向下滑动看视频OCR这里可以看到有按量计费一分钟8分钱还有预付费资源包50块钱5000点我就这么说项目所需50点不到。然后点击右侧高亮的购买资源包一般来说这里第一次使用点进来都是免费试用的就是免费给你5000点但是据说还区分地域之类的。如果你不是免费的那按量计费也是完全OK的价格便宜你放一个60分钟的视频也就5块钱现在买个游戏充个皮肤少说页10块起步所以为了学习稍微投资一点我觉得也是完全值得的按量计费钱你需要保证你的云平台账户阿里云账户里有余额或者绑定了自动扣款的支付方式如支付宝。当你的代码通过 SDK 调用了“视频拆条”功能后面会讲系统会在后台默默记账按照截图里说的0.08元/分钟。平台通常会按小时或按天直接从你的账户余额里把钱扣掉。按量计费直接进入我贴到这里的通道能力开通选择视频理解点击立即开通后面就会跳转出一个界面显示开通成功1.3 跑通示例代码之接入SDK1.3.1 视频理解【OCR】SDK接入SDK就是你前面赋值到 Trae 中的代码报错的原因代码处圈红的意思是使用了阿里云的一些工具这些工具的使用就是要付费的代码不要钱前面你如果开通了资源包就点击这个高亮链接跳转即可按量计费的也可以不用管直接进入因为到时候使用之后它会给你发一个支付订单可支持的SDK列表跳转到这个页面点击Java跳转到该页面之后由于我们做的是视频理解所以只用关注对应行的SDK链接点击对应的SDK链接经过安全验证后就会进入这个界面点击1.0.12进入到这个界面框中就是我们所需要的东西了我也放在这里方便直接复制使用!--Source:https://mvnrepository.com/artifact/com.aliyun/videorecog20200320 --dependencygroupIdcom.aliyun/groupIdartifactIdvideorecog20200320/artifactIdversion1.0.12/versionscopecompile/scope/dependency然后直接复制该段代码打开Trae点击pom文件找到两个dependencies中间包含的内容使用TAB键缩进到和前面代码中的一样就好了然后使用CTRL s保存一下Trae就会自动检查然后右下角会跳出一个窗口这里有一个更新你想同步吗点击YES即可然后我们原本在pom文件下的红线就消失了意味着Trae可以识别到阿里云的工具了1.3.1.1 异步调用相关现在整个项目最基础的要求已经达到了就是没有报错。但是该项目还涉及一个异步调用的概念异步调用能力介绍“异步调用”就像是去热门餐厅吃饭拿号。同步 排队死等。 就像买路边摊付了钱你只能傻站在那儿盯着老板做期间啥也干不了。异步 拿号走人。 就像去餐厅拿了个排队号码也就是系统给你的“任务编号”拿到号你就可以去逛街了。等后台默默处理完你再拿着号去查结果或者等系统发通知叫你。为什么云服务处理视频要用“异步”因为处理视频通常很慢如果让程序傻等同步你的软件就会像死机一样卡住。用“拿号走人”异步的办法交代完任务程序就可以立马去忙别的一点都不耽误事儿而接入异步调用 SDK就像是请了一位跑腿小秘书第一当你在代码里调用它时你只需要给它一句简单的指令这个 SDK 小秘书收到后会自动在后台帮你打包好视频、发给阿里云、并把拿到的“任务编号TaskId”整整齐齐地带回来交给你。你不需要管中间复杂的网络传输细节。第二阿里云在后台处理视频需要时间SDK 里面通常会自带一些工具或者非常简单的命令让你能用一两行代码就实现“每隔 3 秒自动去问一下阿里云好没好一旦好了就把文字结果带回来”。接下来点击下方链接实例代码异步调用代码/* 引入依赖包 最低SDK版本要求viapi20230117的SDK版本需大于等于2.0.1。 可以在此仓库地址中引用最新版本SDKhttps://mvnrepository.com/artifact/com.aliyun/viapi20230117 !-- https://mvnrepository.com/artifact/com.aliyun/viapi20230117 -- dependency groupIdcom.aliyun/groupId artifactIdviapi20230117/artifactId version${aliyun.viapi.version}/version /dependency */importcom.aliyun.tea.TeaModel;importcom.aliyun.viapi20230117.models.GetAsyncJobResultResponse;publicclassGetAsyncJobResult{publicstaticcom.aliyun.viapi20230117.ClientcreateClient(StringaccessKeyId,StringaccessKeySecret)throwsException{/* 初始化配置对象com.aliyun.teaopenapi.models.Config Config对象存放 AccessKeyId、AccessKeySecret、endpoint等配置 */com.aliyun.teaopenapi.models.Configconfignewcom.aliyun.teaopenapi.models.Config().setAccessKeyId(accessKeyId).setAccessKeySecret(accessKeySecret);// 访问的域名config.endpointviapi.cn-shanghai.aliyuncs.com;returnnewcom.aliyun.viapi20230117.Client(config);}publicstaticvoidmain(String[]args_)throwsException{// 创建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。运行代码示例前必须先配置环境变量。StringaccessKeyIdSystem.getenv(ALIBABA_CLOUD_ACCESS_KEY_ID);StringaccessKeySecretSystem.getenv(ALIBABA_CLOUD_ACCESS_KEY_SECRET);com.aliyun.viapi20230117.ClientclientGetAsyncJobResult.createClient(accessKeyId,accessKeySecret);com.aliyun.viapi20230117.models.GetAsyncJobResultRequestgetAsyncJobResultRequestnewcom.aliyun.viapi20230117.models.GetAsyncJobResultRequest().setJobId(1299348D-DFF2-5FDA-8C9C-C2D14EBF63F2);com.aliyun.teautil.models.RuntimeOptionsruntimenewcom.aliyun.teautil.models.RuntimeOptions();try{GetAsyncJobResultResponsegetAsyncJobResultResponseclient.getAsyncJobResultWithOptions(getAsyncJobResultRequest,runtime);// 获取整体结果。System.out.println(com.aliyun.teautil.Common.toJSONString(TeaModel.buildMap(getAsyncJobResultResponse)));// 获取单个字段。System.out.println(getAsyncJobResultResponse.getBody());}catch(com.aliyun.tea.TeaExceptionteaException){// 获取整体报错信息。System.out.println(com.aliyun.teautil.Common.toJSONString(teaException));// 获取单个字段。System.out.println(teaException.getCode());}}}然后复制图中的Java代码然后和前面一样打开Trae在test文件夹下新建一个文件或者一个Java类都可以文件名是实例代码中的类名加一个java后缀GetAsyncJobResult.java除了新建文件的第一行代码不动其他直接粘贴进来报红的原因和之前一样需要在pom放入SDK代码和前面一样直接复制我放在这里的和进链接拿都可以放到pom里!--Source:https://mvnrepository.com/artifact/com.aliyun/viapi20230117 --dependencygroupIdcom.aliyun/groupIdartifactIdviapi20230117/artifactIdversion2.0.1/versionscopecompile/scope/dependencySDK异步调用SDK简单来说一下现在的代码逻辑我们现在有两份代码第一份代码是RecognizeVideoCastCrewList第二份代码是GetAsyncJobResult第一份代码运行之后会产生一份结果传到第二份代码中第二份代码的运行结果是我们最终要的结果首先要对示例代码进行一些更改示例代码并不是可以直接使用的就先改产生第一份结果的RecognizeVideoCastCrewList用阿里云的东西和deepseek一样要有对应的APIkey有了key以后阿里云才会识别到是你在使用每一个人都有独一无二的key鼠标滑倒右上角头像这里会有一个AccessKey点击打开按图示操作点击红框所选位置然后点击左上角创建AccessKey就会继续跳出下面的窗口上述选项点击之后就会发验证码验证之后就会得到两个值一个是AccessKey ID一个是AccessKey Secret你和它们只有一次见面机会把他们拿出来填到图示打码位置即可注意标点符号都是英文的然后示例代码中是给有测试视频的时长22s这是一个可访问的URL可以复制网址到浏览器打开可以选择右键把该视频另存到自己电脑上待会我们使用代码的作用就是读取这个网站上的视频链接进行解析接下来就可以进行代码的初步跑通了可以看上图代码给的注释视频也可以使用本地的文件我这里就用它给的示例视频了跑一下看最终会返回一个什么结果给第二步使用鼠标右键run Java。注意期间如果出现报错可以像我右侧对话栏那样把错误信息扔给AI让它自己解决Vibe Coding我们不用自己动手可以看到输出结果有一个RequestId这个ID就是第一步的结果我们第二步要使用这个ID我们把它复制一下放到箭头所指位置注意第二步里也有accessKeyId和accessKeySecret不要忘记了。在完成所有改动后在第二步里我们依旧右键Run Java输出结果如下图所示我们最终想拿到的是一个中文字幕这需要从网上下载这个输出结果稍微懂一点中文也是很好看的subtitlesChineseResultsUrl就是中文字幕对应的subtitlesEnglishResultsUrl就是英文字幕我们把网址复制下来在浏览器上打开就可以把字幕下载下来复制下来如果打开没有下载字幕把最后的\删掉。http://vibktprfx-prod-prod-media-ai-cn-shanghai.oss-cn-shanghai.aliyuncs.com/video-ocr/1782973278_NvGYcQoabH.srt?Expires1782975078OSSAccessKeyIdLTAI4FoLmvQ9urWXgSRpDvh1SignatureRpfiz5HOGIqXiX6zJFIUeZws%2B%2F8%3D这里我把下载的字幕用记事本打开可以看到也是非常可以的这时候是没有前端界面的但是经过了这一系列坎坷的操作起码证明了我们的代码是没有问题的我们接下里就要做一个图形化界面这样才对用户更友好可以说剩下的部分才是真正的vebe coding接下来的内容我会放在下一篇文章去讲因为这一片文章的字数已经很多了~结语
基于 Trae + DeepSeek 的 Vibe Coding 实践指南(三):视频 OCR SDK 接入详解
发布时间:2026/7/4 3:57:48
目录前言一、阿里云视觉开发智能平台配置1.1 熟悉视觉开发智能平台1.1.1 视频理解能力介绍1.1.2 视频理解示例代码1.2 开通和购买产品1.2.1 视频理解能力OCR开通和购买1.3 跑通示例代码之接入SDK1.3.1 视频理解【OCR】SDK接入1.3.1.1 异步调用相关结语 云泽Q个人主页 专栏传送入口: 《C语言》《数据结构》《C》《Linux》《蓝桥杯系列》《笔试算法》《AI赋能》⛺️遇见安然遇见你不负代码不负卿~前言大家好啊我是云泽Q欢迎阅读我的文章一名热爱计算机技术的在校大学生喜欢在课余时间做一些计算机技术的总结性文章希望我的文章能为你解答困惑~该篇文章为项目中后端部分配合阿里云视觉开发平台的实现建议分为两部分来看第一部分是先看完视频理解能力第二部分才开图片内容相关的二者在项目搭建的时候我也是分开做的一、阿里云视觉开发智能平台配置1.1 熟悉视觉开发智能平台1.1.1 视频理解能力介绍视频理解能力介绍【OCR】上面是官方的介绍文档专栏中我只做影视字幕识别自己感兴趣的话演职员表识别和体育文字识别都是可以自己做的也有接入指引和对视频的一些限制1.1.2 视频理解示例代码视频OCR我们先来看一下代码将来我们项目中上传的视频一定是从我们电脑本地传上去的而图片中这里文件在上海地域OSS指的是视频上传到上海的云服务器所以看的不是这里的代码我们看的是这里的代码这里的意思是我们的文件在本地电脑上或者直接给他一个视频链接。项目中实现的是文件在本地由于我们的项目是Java写的所以这里就选择Java代码/* 引入依赖包 !-- https://mvnrepository.com/artifact/com.aliyun/videorecog20200320 -- dependency groupIdcom.aliyun/groupId artifactIdvideorecog20200320/artifactId version${aliyun.videorecog.version}/version /dependency */importcom.aliyun.tea.TeaException;importcom.aliyun.tea.TeaModel;importcom.aliyun.videorecog20200320.models.RecognizeVideoCastCrewListResponse;importjava.io.File;importjava.io.FileInputStream;importjava.io.InputStream;importjava.net.URL;publicclassRecognizeVideoCastCrewList{publicstaticcom.aliyun.videorecog20200320.ClientcreateClient(StringaccessKeyId,StringaccessKeySecret)throwsException{/* 初始化配置对象com.aliyun.teaopenapi.models.Config Config对象存放 AccessKeyId、AccessKeySecret、endpoint等配置 */com.aliyun.teaopenapi.models.Configconfignewcom.aliyun.teaopenapi.models.Config().setAccessKeyId(accessKeyId).setAccessKeySecret(accessKeySecret);// 访问的域名config.endpointvideorecog.cn-shanghai.aliyuncs.com;returnnewcom.aliyun.videorecog20200320.Client(config);}publicstaticvoidmain(String[]args)throwsException{// 创建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。运行代码示例前必须先配置环境变量。StringaccessKeyIdSystem.getenv(ALIBABA_CLOUD_ACCESS_KEY_ID);StringaccessKeySecretSystem.getenv(ALIBABA_CLOUD_ACCESS_KEY_SECRET);com.aliyun.videorecog20200320.ClientclientRecognizeVideoCastCrewList.createClient(accessKeyId,accessKeySecret);// 场景一使用本地文件//InputStream inputStream new FileInputStream(new File(/tmp/RecognizeVideoCastCrewList1.mp4));// 场景二使用任意可访问的urlURLurlnewURL(http://viapi-test.oss-cn-shanghai.aliyuncs.com/viapi-3.0domepic/videorecog/videorecog/videorecog2.mp4);InputStreaminputStreamurl.openConnection().getInputStream();com.aliyun.videorecog20200320.models.RecognizeVideoCastCrewListAdvanceRequestrecognizeVideoCastCrewListAdvanceRequestnewcom.aliyun.videorecog20200320.models.RecognizeVideoCastCrewListAdvanceRequest().setVideoUrlObject(inputStream);com.aliyun.teautil.models.RuntimeOptionsruntimenewcom.aliyun.teautil.models.RuntimeOptions();try{// 复制代码运行请自行打印 API 的返回值RecognizeVideoCastCrewListResponseresponseclient.recognizeVideoCastCrewListAdvance(recognizeVideoCastCrewListAdvanceRequest,runtime);System.out.println(com.aliyun.teautil.Common.toJSONString(TeaModel.buildMap(response)));}catch(TeaExceptionerror){// 获取整体报错信息System.out.println(com.aliyun.teautil.Common.toJSONString(error));// 获取单个字段System.out.println(error.getCode());}}}我们只需要把这段代码复制一下回到Trae在java开头的下面右键新建一个文件夹随便取一个名字我这里就是test然后右键test这个文件夹再新建一个文件文件名为RecognizeVideoCastCrewList.java实际上就是上面代码的类名加个java后缀创建好之后Trae会默认写好一部分代码但是我们不需要这段代码只需要把刚刚的阿里云平台的示例代码复制粘贴进来就好了注意图片中有一个漏掉的点Trae会默认写好一部分代码会带有package com.example.demo.test;这样的第一段代码这个要留着这样我们就将示例代码拿过来的有的兄弟此时代码中可能会标有红线代表有bug原因是阿里云平台的示例代码最前面写了需要引入依赖包…意思是未注释的代码实现的时候也使用了一些工具这些工具就是最上方被注释掉的灰色部分这还需要一些操作这个放到后面再说先紧接着跳到目录中开通和购买产品来看1.2 开通和购买产品1.2.1 视频理解能力OCR开通和购买刚刚复制粘贴进来的代码其中调用的视频相关的工具都是阿里云写好的工具这也就意味着我们需要花钱购买但实际上是不需要的阿里云有一个活动会给你一定免费的额度我在做项目的时候是验证了用不完的所以完全不用担心就算真的需要购买也非常便宜视频理解能力介绍【OCR】依旧是打开该网址链接其中有一个计费说明可以从这里跳转进去或者直接点我这里放好的链接视频理解计费介绍我们需要向下滑动看视频OCR这里可以看到有按量计费一分钟8分钱还有预付费资源包50块钱5000点我就这么说项目所需50点不到。然后点击右侧高亮的购买资源包一般来说这里第一次使用点进来都是免费试用的就是免费给你5000点但是据说还区分地域之类的。如果你不是免费的那按量计费也是完全OK的价格便宜你放一个60分钟的视频也就5块钱现在买个游戏充个皮肤少说页10块起步所以为了学习稍微投资一点我觉得也是完全值得的按量计费钱你需要保证你的云平台账户阿里云账户里有余额或者绑定了自动扣款的支付方式如支付宝。当你的代码通过 SDK 调用了“视频拆条”功能后面会讲系统会在后台默默记账按照截图里说的0.08元/分钟。平台通常会按小时或按天直接从你的账户余额里把钱扣掉。按量计费直接进入我贴到这里的通道能力开通选择视频理解点击立即开通后面就会跳转出一个界面显示开通成功1.3 跑通示例代码之接入SDK1.3.1 视频理解【OCR】SDK接入SDK就是你前面赋值到 Trae 中的代码报错的原因代码处圈红的意思是使用了阿里云的一些工具这些工具的使用就是要付费的代码不要钱前面你如果开通了资源包就点击这个高亮链接跳转即可按量计费的也可以不用管直接进入因为到时候使用之后它会给你发一个支付订单可支持的SDK列表跳转到这个页面点击Java跳转到该页面之后由于我们做的是视频理解所以只用关注对应行的SDK链接点击对应的SDK链接经过安全验证后就会进入这个界面点击1.0.12进入到这个界面框中就是我们所需要的东西了我也放在这里方便直接复制使用!--Source:https://mvnrepository.com/artifact/com.aliyun/videorecog20200320 --dependencygroupIdcom.aliyun/groupIdartifactIdvideorecog20200320/artifactIdversion1.0.12/versionscopecompile/scope/dependency然后直接复制该段代码打开Trae点击pom文件找到两个dependencies中间包含的内容使用TAB键缩进到和前面代码中的一样就好了然后使用CTRL s保存一下Trae就会自动检查然后右下角会跳出一个窗口这里有一个更新你想同步吗点击YES即可然后我们原本在pom文件下的红线就消失了意味着Trae可以识别到阿里云的工具了1.3.1.1 异步调用相关现在整个项目最基础的要求已经达到了就是没有报错。但是该项目还涉及一个异步调用的概念异步调用能力介绍“异步调用”就像是去热门餐厅吃饭拿号。同步 排队死等。 就像买路边摊付了钱你只能傻站在那儿盯着老板做期间啥也干不了。异步 拿号走人。 就像去餐厅拿了个排队号码也就是系统给你的“任务编号”拿到号你就可以去逛街了。等后台默默处理完你再拿着号去查结果或者等系统发通知叫你。为什么云服务处理视频要用“异步”因为处理视频通常很慢如果让程序傻等同步你的软件就会像死机一样卡住。用“拿号走人”异步的办法交代完任务程序就可以立马去忙别的一点都不耽误事儿而接入异步调用 SDK就像是请了一位跑腿小秘书第一当你在代码里调用它时你只需要给它一句简单的指令这个 SDK 小秘书收到后会自动在后台帮你打包好视频、发给阿里云、并把拿到的“任务编号TaskId”整整齐齐地带回来交给你。你不需要管中间复杂的网络传输细节。第二阿里云在后台处理视频需要时间SDK 里面通常会自带一些工具或者非常简单的命令让你能用一两行代码就实现“每隔 3 秒自动去问一下阿里云好没好一旦好了就把文字结果带回来”。接下来点击下方链接实例代码异步调用代码/* 引入依赖包 最低SDK版本要求viapi20230117的SDK版本需大于等于2.0.1。 可以在此仓库地址中引用最新版本SDKhttps://mvnrepository.com/artifact/com.aliyun/viapi20230117 !-- https://mvnrepository.com/artifact/com.aliyun/viapi20230117 -- dependency groupIdcom.aliyun/groupId artifactIdviapi20230117/artifactId version${aliyun.viapi.version}/version /dependency */importcom.aliyun.tea.TeaModel;importcom.aliyun.viapi20230117.models.GetAsyncJobResultResponse;publicclassGetAsyncJobResult{publicstaticcom.aliyun.viapi20230117.ClientcreateClient(StringaccessKeyId,StringaccessKeySecret)throwsException{/* 初始化配置对象com.aliyun.teaopenapi.models.Config Config对象存放 AccessKeyId、AccessKeySecret、endpoint等配置 */com.aliyun.teaopenapi.models.Configconfignewcom.aliyun.teaopenapi.models.Config().setAccessKeyId(accessKeyId).setAccessKeySecret(accessKeySecret);// 访问的域名config.endpointviapi.cn-shanghai.aliyuncs.com;returnnewcom.aliyun.viapi20230117.Client(config);}publicstaticvoidmain(String[]args_)throwsException{// 创建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。运行代码示例前必须先配置环境变量。StringaccessKeyIdSystem.getenv(ALIBABA_CLOUD_ACCESS_KEY_ID);StringaccessKeySecretSystem.getenv(ALIBABA_CLOUD_ACCESS_KEY_SECRET);com.aliyun.viapi20230117.ClientclientGetAsyncJobResult.createClient(accessKeyId,accessKeySecret);com.aliyun.viapi20230117.models.GetAsyncJobResultRequestgetAsyncJobResultRequestnewcom.aliyun.viapi20230117.models.GetAsyncJobResultRequest().setJobId(1299348D-DFF2-5FDA-8C9C-C2D14EBF63F2);com.aliyun.teautil.models.RuntimeOptionsruntimenewcom.aliyun.teautil.models.RuntimeOptions();try{GetAsyncJobResultResponsegetAsyncJobResultResponseclient.getAsyncJobResultWithOptions(getAsyncJobResultRequest,runtime);// 获取整体结果。System.out.println(com.aliyun.teautil.Common.toJSONString(TeaModel.buildMap(getAsyncJobResultResponse)));// 获取单个字段。System.out.println(getAsyncJobResultResponse.getBody());}catch(com.aliyun.tea.TeaExceptionteaException){// 获取整体报错信息。System.out.println(com.aliyun.teautil.Common.toJSONString(teaException));// 获取单个字段。System.out.println(teaException.getCode());}}}然后复制图中的Java代码然后和前面一样打开Trae在test文件夹下新建一个文件或者一个Java类都可以文件名是实例代码中的类名加一个java后缀GetAsyncJobResult.java除了新建文件的第一行代码不动其他直接粘贴进来报红的原因和之前一样需要在pom放入SDK代码和前面一样直接复制我放在这里的和进链接拿都可以放到pom里!--Source:https://mvnrepository.com/artifact/com.aliyun/viapi20230117 --dependencygroupIdcom.aliyun/groupIdartifactIdviapi20230117/artifactIdversion2.0.1/versionscopecompile/scope/dependencySDK异步调用SDK简单来说一下现在的代码逻辑我们现在有两份代码第一份代码是RecognizeVideoCastCrewList第二份代码是GetAsyncJobResult第一份代码运行之后会产生一份结果传到第二份代码中第二份代码的运行结果是我们最终要的结果首先要对示例代码进行一些更改示例代码并不是可以直接使用的就先改产生第一份结果的RecognizeVideoCastCrewList用阿里云的东西和deepseek一样要有对应的APIkey有了key以后阿里云才会识别到是你在使用每一个人都有独一无二的key鼠标滑倒右上角头像这里会有一个AccessKey点击打开按图示操作点击红框所选位置然后点击左上角创建AccessKey就会继续跳出下面的窗口上述选项点击之后就会发验证码验证之后就会得到两个值一个是AccessKey ID一个是AccessKey Secret你和它们只有一次见面机会把他们拿出来填到图示打码位置即可注意标点符号都是英文的然后示例代码中是给有测试视频的时长22s这是一个可访问的URL可以复制网址到浏览器打开可以选择右键把该视频另存到自己电脑上待会我们使用代码的作用就是读取这个网站上的视频链接进行解析接下来就可以进行代码的初步跑通了可以看上图代码给的注释视频也可以使用本地的文件我这里就用它给的示例视频了跑一下看最终会返回一个什么结果给第二步使用鼠标右键run Java。注意期间如果出现报错可以像我右侧对话栏那样把错误信息扔给AI让它自己解决Vibe Coding我们不用自己动手可以看到输出结果有一个RequestId这个ID就是第一步的结果我们第二步要使用这个ID我们把它复制一下放到箭头所指位置注意第二步里也有accessKeyId和accessKeySecret不要忘记了。在完成所有改动后在第二步里我们依旧右键Run Java输出结果如下图所示我们最终想拿到的是一个中文字幕这需要从网上下载这个输出结果稍微懂一点中文也是很好看的subtitlesChineseResultsUrl就是中文字幕对应的subtitlesEnglishResultsUrl就是英文字幕我们把网址复制下来在浏览器上打开就可以把字幕下载下来复制下来如果打开没有下载字幕把最后的\删掉。http://vibktprfx-prod-prod-media-ai-cn-shanghai.oss-cn-shanghai.aliyuncs.com/video-ocr/1782973278_NvGYcQoabH.srt?Expires1782975078OSSAccessKeyIdLTAI4FoLmvQ9urWXgSRpDvh1SignatureRpfiz5HOGIqXiX6zJFIUeZws%2B%2F8%3D这里我把下载的字幕用记事本打开可以看到也是非常可以的这时候是没有前端界面的但是经过了这一系列坎坷的操作起码证明了我们的代码是没有问题的我们接下里就要做一个图形化界面这样才对用户更友好可以说剩下的部分才是真正的vebe coding接下来的内容我会放在下一篇文章去讲因为这一片文章的字数已经很多了~结语