1
zhanghua
2024-09-26 c775c6953d9759e70f08acbfa8f6d7490aaae3d1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
package com.netsdk.demo.customize.courseRecord;
 
import com.netsdk.demo.customize.courseRecord.modules.CourseChannelModule;
import com.netsdk.demo.customize.courseRecord.pojo.RealPreviewChannel;
import com.netsdk.lib.NetSDKLib;
import com.netsdk.lib.enumeration.EM_CAN_START_STREAM;
import com.netsdk.lib.enumeration.EM_IS_RECORD;
import com.netsdk.lib.enumeration.NET_EM_LOGIC_CHANNEL;
import com.netsdk.lib.structure.NET_IN_GET_DEFAULT_REAL_CHANNEL;
import com.netsdk.lib.structure.NET_IN_GET_REAL_PREVIEW_CHANNEL;
import com.netsdk.lib.structure.NET_OUT_GET_DEFAULT_REAL_CHANNEL;
import com.netsdk.lib.structure.NET_OUT_GET_REAL_PREVIEW_CHANNEL;
 
/**
 * 这里存放设备的一些信息
 *
 * @author : 47040
 * @since : Created in 2020/9/18 10:18
 */
public class CourseRecordChannel {
 
    /**
     * 获取指定房间的所有真实通道号
     *
     * @param lLoginID 登录句柄
     * @return 真实通道信息
     */
    public static RealPreviewChannel GetRealPreviewChannels(NetSDKLib.LLong lLoginID) {
        return reloadRealPreviewChannels(lLoginID);
    }
 
    /**
     * 获取默认的资源通道对应的真实通道映射关系
     *
     * @param lLoginID 登录句柄
     * @return 映射关系
     */
    public static RealPreviewChannel GetDefaultRealChannels(NetSDKLib.LLong lLoginID) {
        return getDefaultRealChannels(lLoginID);
    }
 
    /**
     * 获取指定序号的资源通道的真实通道号
     *
     * @param lLoginID 登录句柄
     * @return 合成通道号
     */
    public static int GetResourceChannel(NetSDKLib.LLong lLoginID, int resourceOrder) {
        NET_IN_GET_REAL_PREVIEW_CHANNEL stuIn = new NET_IN_GET_REAL_PREVIEW_CHANNEL();
        stuIn.nChannelCount = 1;
        stuIn.stuChannelInfo[0].emLogicChannel = resourceOrder;   // 视频逻辑通道号
        NET_OUT_GET_REAL_PREVIEW_CHANNEL stuOut = new NET_OUT_GET_REAL_PREVIEW_CHANNEL();
        stuOut.nChannelNum = 1;
 
        boolean ret = CourseChannelModule.GetRealPreviewChannel(lLoginID, stuIn, stuOut, 3000);
        if (!ret) {
            System.err.println("获取房间真实预览通道失败");
            return -1;   // 表示无效
        }
        System.out.println(stuOut.nChannel[0]);
        return stuOut.nChannel[0];
    }
 
    /**
     * 获取指定教室号的所有资源通道对应的真实通道
     *
     * @param lLoginID 登录句柄
     */
    private static RealPreviewChannel reloadRealPreviewChannels(NetSDKLib.LLong lLoginID) {
 
        NET_IN_GET_REAL_PREVIEW_CHANNEL stuIn = new NET_IN_GET_REAL_PREVIEW_CHANNEL();
        stuIn.nChannelCount = 15;
        for (int i = 0; i < 15; i++) {
            stuIn.stuChannelInfo[i].nRoomID = 0;
        }
        stuIn.stuChannelInfo[0].emLogicChannel = NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_COMPOSITE.getValue();                             // 视频组合通道号
        stuIn.stuChannelInfo[1].emLogicChannel = NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_PPT.getValue();                                   // PPT显示逻辑通道号
        stuIn.stuChannelInfo[2].emLogicChannel = NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_BLACKBOARD.getValue();                            // 板书特写逻辑通道号
        stuIn.stuChannelInfo[3].emLogicChannel = NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_STUDENTFEATURE.getValue();                        // 学生特写逻辑通道号
        stuIn.stuChannelInfo[4].emLogicChannel = NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_STUDENTFULLVIEW.getValue();                       // 学生全景逻辑通道号
        stuIn.stuChannelInfo[5].emLogicChannel = NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_TEACHERFEATURE.getValue();                        // 教师特写逻辑通道号
        stuIn.stuChannelInfo[6].emLogicChannel = NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_TEACHERFULLVIEW.getValue();                       // 教师全景逻辑通道号
        stuIn.stuChannelInfo[7].emLogicChannel = NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_TEACHERDETECT.getValue();                         // 教师检测逻辑通道号
        stuIn.stuChannelInfo[8].emLogicChannel = NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_BLACKBOARDDETECT.getValue();                      // 板书检测逻辑通道号
        stuIn.stuChannelInfo[9].emLogicChannel = NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_BLACKBOARD1.getValue();                           // 板书特写1逻辑通道号
        stuIn.stuChannelInfo[10].emLogicChannel = NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_BLACKBOARDDETECT1.getValue();                    // 板书检测1逻辑通道号
        stuIn.stuChannelInfo[11].emLogicChannel = NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_VISUALPRESENTER.getValue();                      // 展台显示逻辑通道号
        stuIn.stuChannelInfo[12].emLogicChannel = NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_VIDEOSURVEILLANCE.getValue();                    // 视频监控逻辑通道号
        stuIn.stuChannelInfo[13].emLogicChannel = NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_VIDEOCONFERENCE.getValue();                      // 互动会议逻辑通道号
        stuIn.stuChannelInfo[14].emLogicChannel = NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_VIDEO_PRESENTATION.getValue();                   // 互动演示逻辑通道
 
        NET_OUT_GET_REAL_PREVIEW_CHANNEL stuOut = new NET_OUT_GET_REAL_PREVIEW_CHANNEL();
        stuOut.nChannelNum = 15;
 
        boolean ret = CourseChannelModule.GetRealPreviewChannel(lLoginID, stuIn, stuOut, 3000);
        if (!ret) {
            System.err.println("获取真实预览通道失败");
            return null;
        }
 
        RealPreviewChannel realChannel = new RealPreviewChannel();
        realChannel.roomID = 0;
        realChannel.CHANNEL_COMPOSITE = stuOut.nChannel[0];
        realChannel.CHANNEL_PPT = stuOut.nChannel[1];
        realChannel.CHANNEL_BLACKBOARD = stuOut.nChannel[2];
        realChannel.CHANNEL_STUDENTFEATURE = stuOut.nChannel[3];
        realChannel.CHANNEL_STUDENTFULLVIEW = stuOut.nChannel[4];
        realChannel.CHANNEL_TEACHERFEATURE = stuOut.nChannel[5];
        realChannel.CHANNEL_TEACHERFULLVIEW = stuOut.nChannel[6];
        realChannel.CHANNEL_TEACHERDETECT = stuOut.nChannel[7];
        realChannel.CHANNEL_BLACKBOARDDETECT = stuOut.nChannel[8];
        realChannel.CHANNEL_BLACKBOARD1 = stuOut.nChannel[9];
        realChannel.CHANNEL_BLACKBOARDDETECT1 = stuOut.nChannel[10];
        realChannel.CHANNEL_VISUALPRESENTER = stuOut.nChannel[11];
        realChannel.CHANNEL_VIDEOSURVEILLANCE = stuOut.nChannel[12];
        realChannel.CHANNEL_VIDEOCONFERENCE = stuOut.nChannel[13];
        realChannel.CHANNEL_VIDEO_PRESENTATION = stuOut.nChannel[14];
        realChannel.setRealPreviewChannels();
 
        return realChannel;
    }
 
 
    /**
     * 获取默认的资源通道对应的真实通道映射关系
     *
     * @param lLoginID 登录句柄
     */
    public static RealPreviewChannel getDefaultRealChannels(NetSDKLib.LLong lLoginID) {
 
        NET_IN_GET_DEFAULT_REAL_CHANNEL stuIn = new NET_IN_GET_DEFAULT_REAL_CHANNEL();
        stuIn.nChannelCount = 15;
        for (int i = 0; i < 15; i++) {
            stuIn.stuChannelInfo[i].nRoomID = 0;
        }
        stuIn.stuChannelInfo[0].emLogicChannel = NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_COMPOSITE.getValue();                             // 视频组合通道号
        stuIn.stuChannelInfo[1].emLogicChannel = NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_PPT.getValue();                                   // PPT显示逻辑通道号
        stuIn.stuChannelInfo[2].emLogicChannel = NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_BLACKBOARD.getValue();                            // 板书特写逻辑通道号
        stuIn.stuChannelInfo[3].emLogicChannel = NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_STUDENTFEATURE.getValue();                        // 学生特写逻辑通道号
        stuIn.stuChannelInfo[4].emLogicChannel = NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_STUDENTFULLVIEW.getValue();                       // 学生全景逻辑通道号
        stuIn.stuChannelInfo[5].emLogicChannel = NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_TEACHERFEATURE.getValue();                        // 教师特写逻辑通道号
        stuIn.stuChannelInfo[6].emLogicChannel = NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_TEACHERFULLVIEW.getValue();                       // 教师全景逻辑通道号
        stuIn.stuChannelInfo[7].emLogicChannel = NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_TEACHERDETECT.getValue();                         // 教师检测逻辑通道号
        stuIn.stuChannelInfo[8].emLogicChannel = NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_BLACKBOARDDETECT.getValue();                      // 板书检测逻辑通道号
        stuIn.stuChannelInfo[9].emLogicChannel = NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_BLACKBOARD1.getValue();                           // 板书特写1逻辑通道号
        stuIn.stuChannelInfo[10].emLogicChannel = NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_BLACKBOARDDETECT1.getValue();                    // 板书检测1逻辑通道号
        stuIn.stuChannelInfo[11].emLogicChannel = NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_VISUALPRESENTER.getValue();                      // 展台显示逻辑通道号
        stuIn.stuChannelInfo[12].emLogicChannel = NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_VIDEOSURVEILLANCE.getValue();                    // 视频监控逻辑通道号
        stuIn.stuChannelInfo[13].emLogicChannel = NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_VIDEOCONFERENCE.getValue();                      // 互动会议逻辑通道号
        stuIn.stuChannelInfo[14].emLogicChannel = NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_VIDEO_PRESENTATION.getValue();                   // 互动演示逻辑通道
 
        NET_OUT_GET_DEFAULT_REAL_CHANNEL stuOut = new NET_OUT_GET_DEFAULT_REAL_CHANNEL();
        stuOut.nChannelNum = 15;
 
        boolean ret = CourseChannelModule.GetDefaultRealChannel(lLoginID, stuIn, stuOut, 3000);
        if (!ret) {
            System.err.println("获取默认的资源通道对应的真实通道映射关系");
            return null;
        }
 
        RealPreviewChannel defaultChannel = new RealPreviewChannel();
        defaultChannel.roomID = 0;
        defaultChannel.CHANNEL_COMPOSITE = stuOut.nChannel[0];
        defaultChannel.CHANNEL_PPT = stuOut.nChannel[1];
        defaultChannel.CHANNEL_BLACKBOARD = stuOut.nChannel[2];
        defaultChannel.CHANNEL_STUDENTFEATURE = stuOut.nChannel[3];
        defaultChannel.CHANNEL_STUDENTFULLVIEW = stuOut.nChannel[4];
        defaultChannel.CHANNEL_TEACHERFEATURE = stuOut.nChannel[5];
        defaultChannel.CHANNEL_TEACHERFULLVIEW = stuOut.nChannel[6];
        defaultChannel.CHANNEL_TEACHERDETECT = stuOut.nChannel[7];
        defaultChannel.CHANNEL_BLACKBOARDDETECT = stuOut.nChannel[8];
        defaultChannel.CHANNEL_BLACKBOARD1 = stuOut.nChannel[9];
        defaultChannel.CHANNEL_BLACKBOARDDETECT1 = stuOut.nChannel[10];
        defaultChannel.CHANNEL_VISUALPRESENTER = stuOut.nChannel[11];
        defaultChannel.CHANNEL_VIDEOSURVEILLANCE = stuOut.nChannel[12];
        defaultChannel.CHANNEL_VIDEOCONFERENCE = stuOut.nChannel[13];
        defaultChannel.CHANNEL_VIDEO_PRESENTATION = stuOut.nChannel[14];
        defaultChannel.setRealPreviewChannels();
 
        return defaultChannel;
    }
 
    ///////////////////////////////////////////////// 合成通道 拉流/录象 设置 ///////////////////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
    /**
     * 合成通道 拉流/不录象
     */
    public static void CompositeChannelSteamButNoRecord(int[] emCanStartStream, int[] emIsRecord) {
        // 合成通道拉流、不录象
        emCanStartStream[NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_COMPOSITE.getValue()] = EM_CAN_START_STREAM.EM_CAN_START_STREAM_ON.getValue();
        emIsRecord[NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_COMPOSITE.getValue()] = EM_IS_RECORD.EM_IS_RECORD_OFF.getValue();
    }
 
    /**
     * 合成通道 不拉流/录象
     */
    public static void CompositeChannelNoSteamButRecord(int[] emCanStartStream, int[] emIsRecord) {
        // 合成通道拉流、不录象
        emCanStartStream[NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_COMPOSITE.getValue()] = EM_CAN_START_STREAM.EM_CAN_START_STREAM_OFF.getValue();
        emIsRecord[NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_COMPOSITE.getValue()] = EM_IS_RECORD.EM_IS_RECORD_ON.getValue();
    }
 
    /**
     * 合成通道 拉流/录象
     */
    public static void CompositeChannelSteamAndRecord(int[] emCanStartStream, int[] emIsRecord) {
        // 合成通道拉流、不录象
        emCanStartStream[NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_COMPOSITE.getValue()] = EM_CAN_START_STREAM.EM_CAN_START_STREAM_ON.getValue();
        emIsRecord[NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_COMPOSITE.getValue()] = EM_IS_RECORD.EM_IS_RECORD_ON.getValue();
    }
 
    ///////////////////////////////////////////////////// 设置资源通道 /////////////////////////////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
    /**
     * 具体哪些资源通道是设备启用的,请参考网页,这里我也以网页上的可选的资源通道作为填写标准:
     * 网页上还可以选择不同的资源通道,Demo里简单起见就统一处理了,现在网页上可操作的资源通道具体包括:
     *
     *  (0, "视频组合通道号"),
     *  (1, "PPT显示逻辑通道号"),
     *  (2,"板书特写逻辑通道号"),
     *  (3,"学生特写逻辑通道号"),
     *  (4,"学生全景逻辑通道号"),
     *  (5,"教师特写逻辑通道号"),
     *  (6,"教师全景逻辑通道号"),
     *  (9,"板书特写1逻辑通道号"),
     *  (11,"展台显示逻辑通道号"),
     *  (12,"视频监控逻辑通道号"),
     *
     *  以后如果设备有了调整,请自行调整下面的代码
     *  另外:不用考虑是否绑定了真实通道
     */
 
    /**
     * 资源通道 拉流/不录象
     */
    public static void ResourceChannelSteamNoRecord(int[] emCanStartStream, int[] emIsRecord) {
        // 有效的的资源通道拉流/不录象,无效的填 0
        int STEAM_STATUS = EM_CAN_START_STREAM.EM_CAN_START_STREAM_ON.getValue();     // 拉流
        int RECORD_STATUS = EM_IS_RECORD.EM_IS_RECORD_OFF.getValue();                 // 不录制
 
        SetResourceChannelMode(emCanStartStream, emIsRecord, STEAM_STATUS, RECORD_STATUS);
    }
 
 
    /**
     * 资源通道 不拉流/不录象
     */
    public static void ResourceChannelNoSteamNoRecord(int[] emCanStartStream, int[] emIsRecord) {
        // 有效的的资源通道 不拉流/不录象,无效的填 0
        int STEAM_STATUS = EM_CAN_START_STREAM.EM_CAN_START_STREAM_OFF.getValue();     // 不拉流
        int RECORD_STATUS = EM_IS_RECORD.EM_IS_RECORD_OFF.getValue();                 // 不录制
 
        SetResourceChannelMode(emCanStartStream, emIsRecord, STEAM_STATUS, RECORD_STATUS);
    }
 
    /**
     * 资源通道 拉流/录象
     */
    public static void ResourceChannelSteamRecord(int[] emCanStartStream, int[] emIsRecord) {
        // 有效的的资源通道 拉流/录象,无效的填 0
        int STEAM_STATUS = EM_CAN_START_STREAM.EM_CAN_START_STREAM_ON.getValue();     // 拉流
        int RECORD_STATUS = EM_IS_RECORD.EM_IS_RECORD_ON.getValue();                 // 录制
 
        SetResourceChannelMode(emCanStartStream, emIsRecord, STEAM_STATUS, RECORD_STATUS);
    }
 
    /**
     * 资源通道 不拉流/录象
     */
    public static void ResourceChannelNoSteamRecord(int[] emCanStartStream, int[] emIsRecord) {
        // 有效的的资源通道 不拉流/录象,无效的填 0
        int STEAM_STATUS = EM_CAN_START_STREAM.EM_CAN_START_STREAM_OFF.getValue();     // 不拉流
        int RECORD_STATUS = EM_IS_RECORD.EM_IS_RECORD_ON.getValue();                 // 不录制
 
        SetResourceChannelMode(emCanStartStream, emIsRecord, STEAM_STATUS, RECORD_STATUS);
    }
 
    private static void SetResourceChannelMode(int[] emCanStartStream, int[] emIsRecord, int STEAM_STATUS, int RECORD_STATUS) {
 
        emCanStartStream[NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_PPT.getValue()] = STEAM_STATUS;                      // PPT显示逻辑通道号
        emIsRecord[NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_PPT.getValue()] = RECORD_STATUS;
 
        emCanStartStream[NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_BLACKBOARD.getValue()] = STEAM_STATUS;               // 板书特写逻辑通道号
        emIsRecord[NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_BLACKBOARD.getValue()] = RECORD_STATUS;
 
        emCanStartStream[NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_STUDENTFEATURE.getValue()] = STEAM_STATUS;           // 学生特写逻辑通道号
        emIsRecord[NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_STUDENTFEATURE.getValue()] = RECORD_STATUS;
 
        emCanStartStream[NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_STUDENTFULLVIEW.getValue()] = STEAM_STATUS;          // 学生全景逻辑通道号
        emIsRecord[NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_STUDENTFULLVIEW.getValue()] = RECORD_STATUS;
 
        emCanStartStream[NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_TEACHERFEATURE.getValue()] = STEAM_STATUS;           // 教师特写逻辑通道号
        emIsRecord[NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_TEACHERFEATURE.getValue()] = RECORD_STATUS;
 
        emCanStartStream[NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_TEACHERFULLVIEW.getValue()] = STEAM_STATUS;          // 教师全景逻辑通道号
        emIsRecord[NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_TEACHERFULLVIEW.getValue()] = RECORD_STATUS;
 
        emCanStartStream[NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_TEACHERDETECT.getValue()] = 0;                       // 教师检测逻辑通道号
        emIsRecord[NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_TEACHERDETECT.getValue()] = 0;
 
        emCanStartStream[NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_BLACKBOARDDETECT.getValue()] = 0;                    // 板书检测逻辑通道号
        emIsRecord[NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_BLACKBOARDDETECT.getValue()] = 0;
 
        emCanStartStream[NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_BLACKBOARD1.getValue()] = STEAM_STATUS;              // 板书特写1逻辑通道号
        emIsRecord[NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_BLACKBOARD1.getValue()] = RECORD_STATUS;
 
        emCanStartStream[NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_BLACKBOARDDETECT1.getValue()] = 0;                   // 板书检测1逻辑通道号
        emIsRecord[NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_BLACKBOARDDETECT1.getValue()] = 0;
 
        emCanStartStream[NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_VISUALPRESENTER.getValue()] = STEAM_STATUS;          // 展台显示逻辑通道号
        emIsRecord[NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_VISUALPRESENTER.getValue()] = RECORD_STATUS;
 
        emCanStartStream[NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_VIDEOSURVEILLANCE.getValue()] = STEAM_STATUS;        // 视频监控逻辑通道号
        emIsRecord[NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_VIDEOSURVEILLANCE.getValue()] = RECORD_STATUS;
 
        emCanStartStream[NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_VIDEOCONFERENCE.getValue()] = 0;                     // 互动会议逻辑通道号
        emIsRecord[NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_VIDEOCONFERENCE.getValue()] = 0;
 
        emCanStartStream[NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_VIDEO_PRESENTATION.getValue()] = 0;                  // 互动演示逻辑通道
        emIsRecord[NET_EM_LOGIC_CHANNEL.NET_EM_LOGIC_CHANNEL_VIDEO_PRESENTATION.getValue()] = 0;
    }
}