18,356
社区成员
发帖
与我相关
我的任务
分享
public class FRealDataCallBack implements HCNetSDK.FRealDataCallBack_V30{
@Override
public void invoke(NativeLong lRealHandle, int dwDataType, ByteByReference pBuffer, int dwBufSize,
Pointer pUser) {
// TODO Auto-generated method stub
HWND hwnd = new HWND(Native.getComponentPointer(top));
switch (dwDataType) {
case HCNetSDK.NET_DVR_SYSHEAD:
System.out.println("系统头数据");
if (!playControl.PlayM4_GetPort(m_lPort)) {
System.out.println("播放端口号"+playControl.PlayM4_GetPort(m_lPort));
break;
}
if (dwBufSize>0) {
if (!playControl.PlayM4_SetStreamOpenMode(m_lPort.getValue(),PlayCtrl.STREAME_REALTIME)) {
System.out.println("设置实时流播放模式");
break;
}
if (!playControl.PlayM4_OpenStream(m_lPort.getValue(), pBuffer, dwBufSize, 1024*1024)) //打开流接口
{
System.out.println("打开流接口");
break;
}
if (!playControl.PlayM4_Play(m_lPort.getValue(), hwnd)) //播放开始
{
System.out.println("开始播放");
break;
}
}
break;
case HCNetSDK.NET_DVR_STREAMDATA:
if ((dwBufSize > 0) && (m_lPort.getValue().intValue() != -1)) {
if (!playControl.PlayM4_InputData(m_lPort.getValue(), pBuffer, dwBufSize)) //输入流数据 {
break;
}
}
private void RealDataCallBack(Int32 lRealHandle, UInt32 dwDataType, IntPtr pBuffer, UInt32 dwBufSize, IntPtr pUser)
{
..........//播放库播放代码略过了,dome中都有
byte[] write = new byte[dwBufSize];
Marshal.Copy(pBuffer, write, 0, write.Length);
ThreadPool.QueueUserWorkItem(new WaitCallback(sendSocket.SendMsg), write); //sendSocket是一个Socket客户端类在发送至之前实例化连接;
}