package com.netsdk.module;
|
|
import com.netsdk.lib.NetSDKLib;
|
import com.netsdk.lib.enumeration.EM_AUDIO_DATA_TYPE;
|
import com.netsdk.lib.enumeration.EM_REAL_DATA_TYPE;
|
import com.netsdk.lib.enumeration.ENUMERROR;
|
import com.sun.jna.Native;
|
|
import java.awt.Panel;
|
|
/**
|
* @author 47081
|
* @version 1.0
|
* @description 播放模块,播放、预览相关接口封装
|
* @date 2021/3/2
|
*/
|
public class PlayModule extends BaseModule {
|
/**
|
* 实时预览,只可用于swing界面
|
*
|
* @param loginHandler 登录句柄
|
* @param channelID 通道号
|
* @param panel 播放窗口
|
* @param rType 码流类型
|
* @return
|
*/
|
public long realPlay(long loginHandler, int channelID, Panel panel, int rType) {
|
NetSDKLib.LLong realplay =
|
getNetsdkApi()
|
.CLIENT_RealPlayEx(
|
new NetSDKLib.LLong(loginHandler),
|
channelID,
|
Native.getComponentPointer(panel),
|
rType);
|
if (realplay.longValue() == 0) {
|
System.out.println(ENUMERROR.getErrorMessage());
|
}
|
return realplay.longValue();
|
}
|
|
/**
|
* 获取指定类型的码流数据
|
*
|
* @param loginHandler 登录句柄
|
* @param channelID 通道号
|
* @param dataType 码流类型
|
* @param audioType 音频格式
|
* @param callback 码流回调,回调函数请使用单例模式
|
* @param panel 播放窗口,swing应用可用,一般传入null
|
* @param file 转码后的保存的文件
|
* @param waitTIme 超时时间
|
* @return
|
*/
|
public long realPlayByDataType(
|
long loginHandler,
|
int channelID,
|
EM_REAL_DATA_TYPE dataType,
|
EM_AUDIO_DATA_TYPE audioType,
|
NetSDKLib.fRealDataCallBackEx2 callback,
|
Panel panel,
|
String file,
|
int waitTIme) {
|
NetSDKLib.NET_IN_REALPLAY_BY_DATA_TYPE inParam = new NetSDKLib.NET_IN_REALPLAY_BY_DATA_TYPE();
|
inParam.rType = 0;
|
inParam.nChannelID = channelID;
|
inParam.emDataType = dataType.getType();
|
inParam.emAudioType = audioType.ordinal();
|
inParam.cbRealDataEx = callback;
|
if (panel != null) {
|
inParam.hWnd = Native.getComponentPointer(panel);
|
}
|
if (file != null && !file.trim().isEmpty()) {
|
inParam.szSaveFileName = file;
|
}
|
NetSDKLib.NET_OUT_REALPLAY_BY_DATA_TYPE outParam =
|
new NetSDKLib.NET_OUT_REALPLAY_BY_DATA_TYPE();
|
NetSDKLib.LLong realplay =
|
getNetsdkApi()
|
.CLIENT_RealPlayByDataType(
|
new NetSDKLib.LLong(loginHandler), inParam, outParam, waitTIme);
|
if (realplay.longValue() == 0) {
|
System.out.println(ENUMERROR.getErrorMessage());
|
}
|
return realplay.longValue();
|
}
|
|
/**
|
* 停止转码
|
*
|
* @param realPlayHandler
|
* @return
|
*/
|
public boolean stopRealPlayByDataType(long realPlayHandler) {
|
return getNetsdkApi().CLIENT_StopRealPlayEx(new NetSDKLib.LLong(realPlayHandler));
|
}
|
}
|