package com.netsdk.demo.customize.courseRecord.pojo; import com.netsdk.lib.enumeration.EM_CAN_START_STREAM; import com.netsdk.lib.enumeration.EM_COURSE_STATE; import com.netsdk.lib.enumeration.EM_IS_RECORD; import com.netsdk.lib.structure.NET_TIME; import static com.netsdk.demo.customize.courseRecord.CourseRecordChannel.*; /** * @author : 47040 * @since : Created in 2020/9/21 13:43 */ public class CourseInfo { /** * 序号 查询时用 */ public int idx = 0; /////////////////////////////////// 起始时间 //////////////////////////////// //////////////////////////////////////////////////////////////////////////// /** * 课程开始时间 */ public NET_TIME stuStartTime; /** * 课程结束时间 */ public NET_TIME stuEndTime; /** * 课程日期 (展示用) */ public String courseDate = ""; /** * 课程时间段 (展示用) */ public String coursePeriod = ""; //////////////////////////////// 其他属性 ///////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// /** * 课程名称 */ public String courseName = ""; /** * 教师名称 */ public String teacherName = ""; /** * 课程简介 */ public String introduction; /////////////////////////////////// 控制模式 ///////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////// /** * 能否被拉流逻辑通道数 */ public int nCanStartStreamNum; /** * 是否要录像逻辑通道号数 */ public int nIsRecordNum; /** * 能否被拉流 {@link EM_CAN_START_STREAM} */ public int[] emCanStartStream = new int[64]; /** * 是否要录像 {@link EM_IS_RECORD} */ public int[] emIsRecord = new int[64]; /** * 视频控制模式(展示用) 直播", "录制", "录播 */ public String strVideoCtrlType = ""; ////////////////////////////////////// 录制模式 /////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////// /** * 组合通道模式; 0: 无效, 1: 电影模式, 2: 常态模式, 3: 精品模式, < 0:自定义模式 */ public int nCompositeChannelMode; /** * 合成模式 (展示用) "电影模式", "多画面模式" */ public String strCompositeChannelMode = ""; /** * 是否是资源模式 (展示用) */ public boolean containsResource; ////////////////////////////////////// 课程状态 /////////////////////////////////// /** * 课程录像状态 {@link EM_COURSE_STATE} */ public int emCourseState; /** * 课程状态 (展示用) */ public String strCourseState = ""; /** * 依据课程起始时间给出日期和时间段注释 */ public void SetStrCourseDateTime() { if (stuStartTime == null || stuEndTime == null) { return; } String[] startTimeInfo = stuStartTime.toStringTime().split("\\s+"); String[] endTimeInfo = stuEndTime.toStringTime().split("\\s+"); this.courseDate = startTimeInfo[0]; this.coursePeriod = startTimeInfo[1] + " - " + endTimeInfo[1]; } /** * 依据拉流和录像配置设置视频控制模式注释 */ public void SetStrVideoCtrl() { if (emCanStartStream[0] == EM_CAN_START_STREAM.EM_CAN_START_STREAM_ON.getValue() && emIsRecord[0] == EM_IS_RECORD.EM_IS_RECORD_OFF.getValue()) { strVideoCtrlType = "直播"; } else if (emCanStartStream[0] == EM_CAN_START_STREAM.EM_CAN_START_STREAM_OFF.getValue() && emIsRecord[0] == EM_IS_RECORD.EM_IS_RECORD_ON.getValue()) { strVideoCtrlType = "录制"; } else if (emCanStartStream[0] == EM_CAN_START_STREAM.EM_CAN_START_STREAM_ON.getValue() && emIsRecord[0] == EM_IS_RECORD.EM_IS_RECORD_ON.getValue()) { strVideoCtrlType = "录播"; } // 检查下是不是资源模式 containsResource = false; for (int i = 1; i < 15; i++) { if (emCanStartStream[i] == EM_CAN_START_STREAM.EM_CAN_START_STREAM_ON.getValue() || emCanStartStream[i] == EM_IS_RECORD.EM_IS_RECORD_ON.getValue()) { // 是资源模式 containsResource = true; break; } } } /** * 依据下拉框枚举设置正确的录制参数 */ public void ParseStrVideoCtrl() { // "直播(仅拉流)", "录制(仅录制)", "录播(拉流并录制)" nCanStartStreamNum = 15; nIsRecordNum = 15; if ("直播".equals(strVideoCtrlType)) { // 拉流(全部),不录制(仅合成通道) CompositeChannelSteamButNoRecord(emCanStartStream, emIsRecord); if (containsResource) { // 资源模式下 拉流/不录制 ResourceChannelSteamNoRecord(emCanStartStream, emIsRecord); } else { // 非资源模式下 不拉流/不录制 ResourceChannelNoSteamNoRecord(emCanStartStream, emIsRecord); } } else if ("录制".equals(strVideoCtrlType)) { // 不拉流(全部),录制(仅合成通道) CompositeChannelNoSteamButRecord(emCanStartStream, emIsRecord); if (containsResource) { // 资源模式下 不拉流/录制 ResourceChannelNoSteamRecord(emCanStartStream, emIsRecord); } else { // 非资源模式下 不拉流/不录制 ResourceChannelNoSteamNoRecord(emCanStartStream, emIsRecord); } } else if ("录播".equals(strVideoCtrlType)) { // 拉流(全部),录制(仅合成通道) CompositeChannelSteamAndRecord(emCanStartStream, emIsRecord); if (containsResource) { // 资源模式下 拉流/录制 ResourceChannelSteamRecord(emCanStartStream, emIsRecord); } else { // 非资源模式下 不拉流/不录制 ResourceChannelNoSteamNoRecord(emCanStartStream, emIsRecord); } } } /** * 根据合成通道模式数字给出具体注释 * * @param mode 合成通道模式数字 */ public void SetStrCompositeMode(int mode) { String strMode = "无效"; switch (mode) { // 0: 无效, 1: 电影模式, 2: 常态模式, 3: 精品模式, <0:自定义模式 case 0: strMode = "无效"; break; case 1: strMode = "电影模式"; break; case 2: strMode = "多画面模式"; // 常态模式 break; case 3: strMode = "精品模式"; break; default: if (mode < 0) strMode = "自定义模式"; break; } strCompositeChannelMode = strMode; } /** * 依据下拉框枚举填写正确的参数 */ public void ParseStrCompositeMode() { // "电影模式", "多画面模式" if ("电影模式".equals(strCompositeChannelMode)) { nCompositeChannelMode = 1; // 电影枚举 } else if ("多画面模式".equals(strCompositeChannelMode)) { nCompositeChannelMode = 2; // 多画面枚举 } } }