package com.netsdk.demo.customize.courseRecord.modules; import com.netsdk.demo.customize.courseRecord.DemoConsoleRecordManage; import com.netsdk.lib.NetSDKLib; import com.netsdk.lib.ToolKits; import com.netsdk.lib.enumeration.EM_COURSECOMPOSITE_OPERATE_TYPE; import com.netsdk.lib.enumeration.EM_COURSERECORD_OPERATE_TYPE; import com.netsdk.lib.structure.*; /** * @author : 47040 * @since : Created in 2020/9/28 15:35 */ public class CourseRecordModule { // The constant net sdk public static final NetSDKLib netsdk = NetSDKLib.NETSDK_INSTANCE; // The constant config sdk. public static final NetSDKLib configsdk = NetSDKLib.CONFIG_INSTANCE; /** * 设置课程录像模式 注意如果重复设置相同的录像模式,部分设备会返回失败 * 手动开启录像时需要用到 * * @param lLoginID 登录句柄 * @param stuIn 入参 * @param stuOut 出参 * @param waitTime 超时时间 * @return 是否成功 */ public static boolean SetCourseRecordMode(NetSDKLib.LLong lLoginID, NET_IN_SET_COURSE_RECORD_MODE stuIn, NET_OUT_SET_COURSE_RECORD_MODE stuOut, int waitTime) { stuIn.write(); stuOut.write(); boolean ret = netsdk.CLIENT_SetCourseRecordMode(lLoginID, stuIn.getPointer(), stuOut.getPointer(), waitTime); if (!ret) { System.err.println("Set Course Record failed!" + ToolKits.getErrorCode()); return false; } stuOut.read(); System.out.println("Set Course Record succeed!"); return true; } /** * 获取当前课程录像模式 * * @param lLoginID 登录句柄 * @param stuIn 入参 * @param stuOut 出参 * @param waitTime 超时时间 * @return 是否成功 */ public static boolean GetCourseRecordMode(NetSDKLib.LLong lLoginID, NET_IN_GET_COURSE_RECORD_MODE stuIn, NET_OUT_GET_COURSE_RECORD_MODE stuOut, int waitTime) { stuIn.write(); stuOut.write(); boolean ret = netsdk.CLIENT_GetCourseRecordMode(lLoginID, stuIn.getPointer(), stuOut.getPointer(), waitTime); if (!ret) { System.err.println("Get Course Record failed!" + ToolKits.getErrorCode()); return false; } stuOut.read(); System.out.println("Get Course Record succeed!"); return true; } /** * 开始查询课程录像信息 * * @param lLoginID 登录句柄 * @param stuIn 入参 * @param stuOut 出参 * @param waitTime 超时时间 * @return 是否成功 */ public static boolean OpenQueryCourseMediaFile(NetSDKLib.LLong lLoginID, NET_IN_QUERY_COURSEMEDIA_FILEOPEN stuIn, NET_OUT_QUERY_COURSEMEDIA_FILEOPEN stuOut, int waitTime) { stuIn.write(); stuOut.write(); boolean ret = netsdk.CLIENT_OpenQueryCourseMediaFile(lLoginID, stuIn.getPointer(), stuOut.getPointer(), waitTime); if (!ret) { System.err.println("Open Query Course Media File failed!" + ToolKits.getErrorCode()); return false; } stuOut.read(); System.out.println("Open Query Course Media File succeed!"); return true; } /** * 查询课程录像视频信息 * 这里的出参结构体非常大,jna处理时速度极慢,不建议使用这个函数 * 请参考{@link DemoConsoleRecordManage#DoQueryCourseMediaFileTest} 的使用 * * @param lLoginID 登录句柄 * @param stuIn 入参 * @param stuOut 出参 * @param waitTime 超时时间 * @return 是否成功 */ public static boolean DoQueryCourseMediaFile(NetSDKLib.LLong lLoginID, NET_IN_QUERY_COURSEMEDIA_FILE stuIn, NET_OUT_QUERY_COURSEMEDIA_FILE stuOut, int waitTime) { stuIn.write(); stuOut.write(); boolean ret = netsdk.CLIENT_DoQueryCourseMediaFile(lLoginID, stuIn.getPointer(), stuOut.getPointer(), waitTime); if (!ret) { System.err.println("Do Query Course Media File failed!" + ToolKits.getErrorCode()); return false; } stuOut.read(); System.out.println("Do Query Course Media File succeed!"); return true; } /** * 关闭查询课程录像视频信息 * * @param lLoginID 登录句柄 * @param stuIn 入参 * @param stuOut 出参 * @param waitTime 超时时间 * @return 是否成功 */ public static boolean CloseQueryCourseMediaFile(NetSDKLib.LLong lLoginID, NET_IN_QUERY_COURSEMEDIA_FILECLOSE stuIn, NET_OUT_QUERY_COURSEMEDIA_FILECLOSE stuOut, int waitTime) { stuIn.write(); stuOut.write(); boolean ret = netsdk.CLIENT_CloseQueryCourseMediaFile(lLoginID, stuIn.getPointer(), stuOut.getPointer(), waitTime); if (!ret) { System.err.println("Close Query Course Media File failed!" + ToolKits.getErrorCode()); return false; } stuOut.read(); System.out.println("Close Query Course Media File succeed!"); return true; } /** * 获取教室视频录像信息 * * @param lLoginID 登录句柄 * @param stuIn 入参 * @param stuOut 出参 * @param waitTime 超时时间 * @return 是否成功 */ public static boolean GetOperateCourseRecord(NetSDKLib.LLong lLoginID, NET_IN_COURSERECORD_GETINFO stuIn, NET_OUT_COURSERECORD_GETINFO stuOut, int waitTime) { int nType = EM_COURSERECORD_OPERATE_TYPE.EM_COURSERECORDE_TYPE_GET_INFO.getValue(); stuIn.write(); stuOut.write(); boolean ret = netsdk.CLIENT_OperateCourseRecordManager(lLoginID, nType, stuIn.getPointer(), stuOut.getPointer(), waitTime); if (!ret) { System.err.println("Get Operate Course Record failed!" + ToolKits.getErrorCode()); return false; } stuOut.read(); System.out.println("Get Operate Course Record succeed!"); return true; } /** * 设置 教室各个资源通道可录像信息 * * @param lLoginID 登录句柄 * @param stuIn 入参 * @param stuOut 出参 * @param waitTime 超时时间 * @return 是否成功 */ public static boolean SetOperateCourseRecord(NetSDKLib.LLong lLoginID, NET_IN_COURSERECORD_SETINFO stuIn, NET_OUT_COURSERECORD_SETINFO stuOut, int waitTime) { int nType = EM_COURSERECORD_OPERATE_TYPE.EM_COURSERECORDE_TYPE_SET_INFO.getValue(); stuIn.write(); stuOut.write(); boolean ret = netsdk.CLIENT_OperateCourseRecordManager(lLoginID, nType, stuIn.getPointer(), stuOut.getPointer(), waitTime); if (!ret) { System.err.println("Set Operate Course Record failed!" + ToolKits.getErrorCode()); return false; } stuOut.read(); System.out.println("Set Operate Course Record succeed!"); return true; } /** * 将录像信息更新到 time 时的状态 * * @param lLoginID 登录句柄 * @param stuIn 入参 * @param stuOut 出参 * @param waitTime 超时时间 * @return 是否成功 */ public static boolean UpdateOperateCourseRecord(NetSDKLib.LLong lLoginID, NET_IN_COURSERECORD_UPDATE_INFO stuIn, NET_OUT_COURSERECORD_UPDATE_INFO stuOut, int waitTime) { int nType = EM_COURSERECORD_OPERATE_TYPE.EM_COURSERECORDE_TYPE_UPDATE_INFO.getValue(); stuIn.write(); stuOut.write(); boolean ret = netsdk.CLIENT_OperateCourseRecordManager(lLoginID, nType, stuIn.getPointer(), stuOut.getPointer(), waitTime); if (!ret) { System.err.println("Update Operate Course Record failed!" + ToolKits.getErrorCode()); return false; } stuOut.read(); System.out.println("Update Operate Course Record succeed!"); return true; } /** * 获取当前课程教室已录制时间 * * @param lLoginID 登录句柄 * @param stuIn 入参 * @param stuOut 出参 * @param waitTime 超时时间 * @return 是否成功 */ public static boolean GetTimeOperateCourseRecord(NetSDKLib.LLong lLoginID, NET_IN_COURSERECORD_GET_TIME stuIn, NET_OUT_COURSERECORD_GET_TIME stuOut, int waitTime) { int nType = EM_COURSERECORD_OPERATE_TYPE.EM_COURSERECORDE_TYPE_GET_TIME.getValue(); stuIn.write(); stuOut.write(); boolean ret = netsdk.CLIENT_OperateCourseRecordManager(lLoginID, nType, stuIn.getPointer(), stuOut.getPointer(), waitTime); if (!ret) { System.err.println("Get Time Operate Course Record failed!" + ToolKits.getErrorCode()); return false; } stuOut.read(); System.out.println("Get Time Operate Course Record succeed!"); return true; } /** * 锁定组合通道与逻辑通道 * * @param lLoginID 登录句柄 * @param stuIn 入参 * @param stuOut 出参 * @param waitTime 超时时间 * @return 是否成功 */ public static boolean LockControlOperateCourseCompositeChannel(NetSDKLib.LLong lLoginID, NET_IN_COURSECOMPOSITE_LOCK_CONTROL stuIn, NET_OUT_COURSECOMPOSITE_LOCK_CONTROL stuOut, int waitTime) { int nType = EM_COURSECOMPOSITE_OPERATE_TYPE.EM_COURSECOMPOSITE_TYPE_LOCK_CONTROL.getValue(); stuIn.write(); stuOut.write(); boolean ret = netsdk.CLIENT_OperateCourseCompositeChannel(lLoginID, nType, stuIn.getPointer(), stuOut.getPointer(), waitTime); if (!ret) { System.err.println("Lock Control Operate Course Composite Channel failed!" + ToolKits.getErrorCode()); return false; } stuOut.read(); System.out.println("Lock Control Operate Course Composite Channel succeed!"); return true; } /** * 获取组合通道与逻辑通道的锁定状态 * * @param lLoginID 登录句柄 * @param stuIn 入参 * @param stuOut 出参 * @param waitTime 超时时间 * @return 是否成功 */ public static boolean GetLockInfoOperateCourseCompositeChannel(NetSDKLib.LLong lLoginID, NET_IN_COURSECOMPOSITE_GET_LOCKINFO stuIn, NET_OUT_COURSECOMPOSITE_GET_LOCKINFO stuOut, int waitTime) { int nType = EM_COURSECOMPOSITE_OPERATE_TYPE.EM_COURSECOMPOSITE_TYPE_GET_LOCKINFO.getValue(); stuIn.write(); stuOut.write(); boolean ret = netsdk.CLIENT_OperateCourseCompositeChannel(lLoginID, nType, stuIn.getPointer(), stuOut.getPointer(), waitTime); if (!ret) { System.err.println("Get Lock Info Operate Course Composite Channel failed!" + ToolKits.getErrorCode()); return false; } stuOut.read(); System.out.println("Get Lock Info Operate Course Composite Channel succeed!"); return true; } /** * 获取合成通道信息 * * @param lLoginID 登录句柄 * @param stuIn 入参 * @param stuOut 出参 * @param waitTime 超时时间 * @return 是否成功 */ public static boolean GetInfoOperateCourseCompositeChannel(NetSDKLib.LLong lLoginID, NET_IN_COURSECOMPOSITE_GET_INFO stuIn, NET_OUT_COURSECOMPOSITE_GET_INFO stuOut, int waitTime) { int nType = EM_COURSECOMPOSITE_OPERATE_TYPE.EM_COURSECOMPOSITE_TYPE_GET_INFO.getValue(); stuIn.write(); stuOut.write(); boolean ret = netsdk.CLIENT_OperateCourseCompositeChannel(lLoginID, nType, stuIn.getPointer(), stuOut.getPointer(), waitTime); if (!ret) { System.err.println("Get info Operate Course Composite Channel failed!" + ToolKits.getErrorCode()); return false; } stuOut.read(); System.out.println("Get info Operate Course Composite Channel succeed!"); return true; } /** * 设置合成通道信息 * * @param lLoginID 登录句柄 * @param stuIn 入参 * @param stuOut 出参 * @param waitTime 超时时间 * @return 是否成功 */ public static boolean SetInfoOperateCourseCompositeChannel(NetSDKLib.LLong lLoginID, NET_IN_COURSECOMPOSITE_SET_INFO stuIn, NET_OUT_COURSECOMPOSITE_SET_INFO stuOut, int waitTime) { int nType = EM_COURSECOMPOSITE_OPERATE_TYPE.EM_COURSECOMPOSITE_TYPE_SET_INFO.getValue(); stuIn.write(); stuOut.write(); boolean ret = netsdk.CLIENT_OperateCourseCompositeChannel(lLoginID, nType, stuIn.getPointer(), stuOut.getPointer(), waitTime); if (!ret) { System.err.println("Set info Operate Course Composite Channel failed!" + ToolKits.getErrorCode()); return false; } stuOut.read(); System.out.println("Set info Operate Course Composite Channel succeed!"); return true; } /** * 将组合通道信息更新到 time 时的状态 * * @param lLoginID 登录句柄 * @param stuIn 入参 * @param stuOut 出参 * @param waitTime 超时时间 * @return 是否成功 */ public static boolean UpdateInfoOperateCourseCompositeChannel(NetSDKLib.LLong lLoginID, NET_IN_COURSECOMPOSITE_UPDATE_INFO stuIn, NET_OUT_COURSECOMPOSITE_UPDATE_INFO stuOut, int waitTime) { int nType = EM_COURSECOMPOSITE_OPERATE_TYPE.EM_COURSECOMPOSITE_TYPE_UPDATE_INFO.getValue(); stuIn.write(); stuOut.write(); boolean ret = netsdk.CLIENT_OperateCourseCompositeChannel(lLoginID, nType, stuIn.getPointer(), stuOut.getPointer(), waitTime); if (!ret) { System.err.println("Update info Operate Course Composite Channel failed!" + ToolKits.getErrorCode()); return false; } stuOut.read(); System.out.println("Update info Operate Course Composite Channel succeed!"); return true; } /** * 开启/关闭录播 * * @param lLoginID 登录句柄 * @param stuIn 入参 * @param stuOut 出参 * @param waitTime 超时时间 * @return 是否成功 */ public static boolean SetCourseRecordState(NetSDKLib.LLong lLoginID, NET_IN_SET_COURSE_RECORD_STATE stuIn, NET_OUT_SET_COURSE_RECORD_STATE stuOut, int waitTime) { stuIn.write(); stuOut.write(); boolean ret = netsdk.CLIENT_SetCourseRecordState(lLoginID, stuIn.getPointer(), stuOut.getPointer(), waitTime); if (!ret) { System.err.println("Set Course Record State failed!" + ToolKits.getErrorCode()); return false; } stuOut.read(); System.out.println("Set Course Record State succeed!"); return true; } /** * 查看录播状态 * * @param lLoginID 登录句柄 * @param stuIn 入参 * @param stuOut 出参 * @param waitTime 超时时间 * @return 是否成功 */ public static boolean GetCourseRecordState(NetSDKLib.LLong lLoginID, NET_IN_GET_RECORD_STATE stuIn, NET_OUT_GET_RECORD_STATE stuOut, int waitTime) { stuIn.write(); stuOut.write(); boolean ret = netsdk.CLIENT_GetRecordState(lLoginID, stuIn.getPointer(), stuOut.getPointer(), waitTime); if (!ret) { System.err.println("Get Record State failed!" + ToolKits.getErrorCode()); return false; } stuOut.read(); System.out.println("Get Record State succeed!"); return true; } }