开发者社区 问答 正文

在媒体处理里面建立了转码的工作流,现在通过代码上传文件后,如果通过媒体id拿到转码后的文件信息呢?

我创建了工作流,并且让它自动对A bucket里面的文件进行转码,输出到B bucket里面 现在我用代码上传了一个媒体到A bucket里面,并且得到了这个媒体的id,现在我该怎么通过接口找到这个媒体id转码后输出的文件媒体信息呢? 我尝试通过这个id获取媒体的信息,里面唯一有用的是RunIdList(媒体工作流列表)这个字段,有四个数组,似乎对应的是工作流里面的四个操作,但是这个字段是数组,我并不知道里面那个值才是转码任务的id。

展开
收起
xuanxin 2021-04-07 09:58:47 664 分享 版权
阿里云 AI 助理回答

在阿里云的媒体处理服务(Media Processing Service,MPS)中,当你通过工作流自动对OSS中的文件进行转码,并希望根据原始媒体ID追踪到转码后的输出文件信息时,可以通过以下步骤操作:

  1. 获取RunId: 你已经提到了RunIdList字段,这确实是关键。每个数组元素代表了工作流中一个任务的运行ID(RunId)。通常,工作流中包含多个步骤,如转码、水印添加等,因此RunIdList会列出所有这些步骤的运行记录。你需要确定哪个是转码任务的RunId

    • 如果你创建的工作流中只有一个转码任务,那么RunIdList的第一个元素可能就是转码任务的RunId
    • 如果有多个任务且不确定哪个对应转码,可以通过查看工作流定义或者利用阿里云MPS API查询每个RunId对应的作业详情来确认。使用GetJobInfo接口可以获取单个作业的详细信息,包括作业类型(是否为转码作业)。
  2. 使用RunId查询转码作业详情: 确定了转码任务的RunId后,你可以调用阿里云MPS的GetJobInfo接口,传入该RunId来获取转码作业的详细信息,包括输出文件的位置、状态等。

    GET /jobs/{JobId}
    

    其中,{JobId}即是你从RunIdList中确定的转码任务的RunId

  3. 获取输出文件信息: 在GetJobInfo返回的结果中,你会找到转码后文件的存储位置,通常是OSS bucket的URL或路径。这样,你就可以知道转码后的媒体文件具体存放在B bucket的哪个位置。

  4. 代码示例(假设你已知转码任务的RunId):

    使用阿里云SDK(以Python为例),你可以这样获取作业详情:

    from aliyunsdkcore.client import AcsClient
    from aliyunsdkvod.request.v20170321 import GetJobInfoRequest
    
    # 初始化客户端
    client = AcsClient('<your-access-key-id>', '<your-access-key-secret>', '<your-region-id>')
    
    # 创建请求对象并设置参数
    request = GetJobInfoRequest.GetJobInfoRequest()
    request.set_JobId('<your-run-id>')  # 这里填入从RunIdList得到的转码任务ID
    
    # 发起请求并处理响应
    response = client.do_action_with_exception(request)
    job_info = response.decode('utf-8')
    print(job_info)
    

请确保替换上述代码中的<your-access-key-id><your-access-key-secret><your-region-id>以及<your-run-id>为你自己的实际值。

通过以上步骤,你应该能够定位到转码后文件的具体信息,并进一步处理或访问这些文件。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答