关于通过socket实现获取海康设备摄像数据流发送给客户端如何获取数据发送的问题

MyWayToIT 2016-12-23 05:11:38
大家好,我通过socket远程通讯利用mina框架编写了一个远程获取海康视频流实现实时查看,目前网络通信已经通过,但是在服务端如何获取摄像流数据发送给客户端这里遇到了困难,不知如何将海康设备数据流提取出来发送给客户端,客户端实现预览
海康SDK提供的回调源码:目前我把它加入我的源码内我要怎么做才能获取到求各位高手帮助
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;
}
}
...全文
4625 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
暗夜流岚 2019-06-06
  • 打赏
  • 举报
回复
海康预览回调函数中有码流信息;但是是以指针类型存在的 IntPtr pBuffer,你需要将这个指针转出byte[],然后可以通过Tcp Socket进行发送,直接看代码:

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客户端类在发送至之前实例化连接;
}
qq_36042482 2018-02-28
  • 打赏
  • 举报
回复
海康播放库有一个设置解码回调函数PlayM4_SetDecCallBackEx(int nPort, DECCBFUN DecCBFun, IntPtr pDest, int nDestSize); 第二个参数就是回调函数,解码后的YUV数据会传到回调函数中的buff参数中 拿着这个YUV数据经过处理就可以了,不知道我理解的对不对
Difficult_Name 2018-01-03
  • 打赏
  • 举报
回复
楼主能把相关方面的代码给发一下么,最近在弄这个,真的是一点头绪都没有呢
smwhotjay 2018-01-03
  • 打赏
  • 举报
回复
其实网络摄像头都是提供rtsp这种的吧,任意支持这个协议的都能播放。
羽毛乱发 2017-05-15
  • 打赏
  • 举报
回复
自己做服务中转?海康有DEMO的;其实你用海康的,肯定都有DEMO的。
  • 打赏
  • 举报
回复
楼主你搞定了么??求分享下
赵4老师 2016-12-26
  • 打赏
  • 举报
回复
百度搜相关关键字。
MyWayToIT 2016-12-26
  • 打赏
  • 举报
回复
引用 1 楼 shiyanzi 的回复:
海康不是提供有demo吗
有但是不知如何怎么取出这个流数据
oyljerry 2016-12-26
  • 打赏
  • 举报
回复
流数据是不是都在pBuffer这个里面。可以尝试保存读取等
  • 打赏
  • 举报
回复
海康不是提供有demo吗

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧