package com.platform.plugs.live.responseEntity;

import com.aliyuncs.live.model.v20161101.DescribeCasterVideoResourcesResponse;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * Description:
 * Author:zj
 * Date:2019/3/4 17:18
 */
@Data
@NoArgsConstructor
public class CasterVideoResource {

    /**导播台ID。*/
    private String casterId;
    /**导播台ID。*/
    private String resourceId;
    /**视频源名称。*/
    private String resourceName;
    /**用于标志视频源位置，定义布局内画面的引用编号，每个位置至多关联一个资源，格式需符合“RV01…RV12”。*/
    private String locationId;
    /**直播流地址，视频源类型为直播流时必输*/
    private String liveStreamUrl;
    /**点播文件地址，当且仅当资源为文件视频，且视频文件未导入素材库时使用，仅限mp4、flv、ts格式。*/
    private String vodUrl;
    /**媒资库素材Id，视频源类型为素材时必输、*/
    private String materialId;
    /**仅对文件视频有效，表示播放完后重复继续播放的次数。
     默认值：0，表示不重复播放。
     -1 表示一直循环重复。*/
    private Integer repeatNum;
    /**仅对文件视频有效，大于0，表示从相对于首帧的偏差时间作为开始读取的位置。
     单位：毫秒(ms)*/
    private Integer beginOffset;
    /**仅对文件视频有效：
     大于0时，表示从相对于首帧的偏差时间为结束读取的位置，
     小于0时，表示相对于最后一帧的偏差时间作为结束读取的位置。
     单位：毫秒(ms)*/
    private Integer endOffset;
    private Long ownerId;
    private Integer ptsCallbackInterval;
    
    /**FLV播流地址*/
    private String liveStreamFlvUrl;

    public static CasterVideoResource parse(DescribeCasterVideoResourcesResponse.VideoResource data) {
        CasterVideoResource resource = new CasterVideoResource();
        resource.setBeginOffset(data.getBeginOffset());
        resource.setEndOffset(data.getEndOffset());
        resource.setLiveStreamUrl(data.getLiveStreamUrl());
        resource.setLocationId(data.getLocationId());
        resource.setMaterialId(data.getMaterialId());
        resource.setRepeatNum(data.getRepeatNum());
        resource.setResourceId(data.getResourceId());
        resource.setResourceName(data.getResourceName());
        resource.setVodUrl(data.getVodUrl());
        resource.setPtsCallbackInterval(data.getPtsCallbackInterval());
        return resource;
    }
}
