直播录制到点播完成后回调接口调用GetPlayInfo - 获取音视频播放地址 接口获取不到视频信息

直播录制到视频点播中回调我们这边服务接口,然后接口中调用GetPlayInfo - 获取音视频播放地址接口,获取不到信息,返回的错误信息是: 视频状态无效,当前状态为%s。只有Normal状态的视频才能播放。 image.png

展开
收起
游客qekrga7vklukq 2023-06-21 17:31:21 202 分享 版权
阿里云 AI 助理回答

根据您提供的错误信息“视频状态无效,当前状态为%s。只有Normal状态的视频才能播放”,可以判断问题的核心在于视频的状态未达到可播放的条件。以下是详细的分析和解决方案:


1. 问题原因分析

  • 根据知识库中的描述,调用GetPlayInfo接口时,只有状态为Normal的视频才能正常获取播放地址。
  • 如果视频状态为其他值(如CheckingBlocked),则无法通过该接口获取播放地址。
  • 错误信息中提到的“当前状态为%s”表明视频可能处于非Normal状态,例如:
    • Checking:视频正在审核中。
    • Blocked:视频被屏蔽。
    • Transcoding:视频正在转码中,尚未完成。

2. 解决步骤

步骤1:确认视频状态

  • 调用SearchMedia或其他相关接口,查询视频的当前状态(Status字段)。
  • 确保视频状态为Normal。如果状态不是Normal,需要进一步排查原因。

步骤2:检查直播录制流程

  • 直播录制到点播后,视频会经历以下流程:
    1. 录制完成:点播系统生成唯一的VideoId,并通过回调通知您的服务(如AddLiveRecordVideoComplete事件)。
    2. 转码处理:如果配置了自动转码,点播系统会对录制文件进行转码。
    3. 状态更新:转码完成后,视频状态会变为Normal
  • 如果视频状态未达到Normal,可能是以下原因导致:
    • 转码未完成:检查是否配置了转码任务,并等待转码完成。
    • 审核未通过:如果启用了内容审核功能,视频可能因审核未通过而被屏蔽。

步骤3:确保回调逻辑正确

  • 在接收到AddLiveRecordVideoComplete回调后,记录VideoId并持续监听后续的事件通知(如转码完成事件)。
  • 只有在接收到转码完成事件后,才调用GetPlayInfo接口获取播放地址。

步骤4:设置默认播放域名

  • 如果GetPlayInfo接口返回的播放地址不符合预期,可能是因为未设置默认播放域名。
  • 建议登录视频点播控制台,设置默认播放域名:
    1. 进入配置管理 > 媒资管理配置 > 存储管理 > 管理 > 回源到此存储地址的域名
    2. 设置默认播放域名以避免返回不期望的域名。

3. 重要提醒

  • 视频状态为Normal是调用GetPlayInfo接口的前提条件,请确保视频已完成所有必要的处理流程(如转码、审核等)。
  • 如果视频状态为CheckingBlocked,可以通过点播控制台或API调整其状态。
  • 播放凭证具有时效性,如果使用播放凭证方式,请确保凭证未过期。

4. 示例代码

以下是一个调用GetPlayInfo接口的示例代码(Java),供参考:

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.vod.model.v20170321.GetPlayInfoRequest;
import com.aliyuncs.vod.model.v20170321.GetPlayInfoResponse;

public class GetPlayInfoExample {
    public static void main(String[] args) {
        // 初始化客户端
        DefaultProfile profile = DefaultProfile.getProfile(
            "<your-region-id>",          // 地域ID
            "<your-access-key-id>",      // AccessKey ID
            "<your-access-key-secret>"); // AccessKey Secret
        DefaultAcsClient client = new DefaultAcsClient(profile);

        // 创建请求
        GetPlayInfoRequest request = new GetPlayInfoRequest();
        request.setVideoId("<your-video-id>"); // 替换为实际的VideoId

        try {
            // 发起请求并处理响应
            GetPlayInfoResponse response = client.getAcsResponse(request);
            System.out.println("播放地址: " + response.getPlayInfoList().get(0).getPlayURL());
        } catch (Exception e) {
            System.out.println("错误信息: " + e.getMessage());
        }
    }
}

5. 总结

通过上述步骤,您可以确认视频状态是否符合要求,并确保调用GetPlayInfo接口时能够成功获取播放地址。如果问题仍未解决,请检查视频点播控制台中的日志信息,或联系阿里云技术支持获取进一步帮助。

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

云服务器(Elastic Compute Service,简称 ECS)是一种简单高效、处理能力可弹性伸缩的计算服务,可快速构建更稳定、安全的应用,提升运维效率,降低 IT 成本。

收录在圈子:
+ 订阅
还有其他疑问?
咨询AI助理