陈拓 2021/08/28-2020/08/28

1. 概述

在《海康威视SDK控制台程序consoleDemo》

https://zhuanlan.zhihu.com/p/403903892

https://blog.csdn.net/chentuo2000/article/details/119939573

一文中我们已经编译成功了海康威视SDK的控制台程序consoleDemo。

在《海康威视SDK控制台程序consoleDemo获取视频通道参数》

https://zhuanlan.zhihu.com/p/404390272

https://blog.csdn.net/chentuo2000/article/details/119963580

一文中我们获取到了NVR的视频通道号。

本文我们用获取的通道号获取码流。

2. 重写GetStream.cpp

将GetStream.cpp原来的全部代码删除,替换成下面的代码:

#include <unistd.h>
#include "HCNetSDK.h"
#include "public.h"
#include <stdio.h>
#include <time.h>
#include <string.h>
#include <iostream>
using namespace std;void CALLBACK g_RealDataCallBack_V30(LONG lRealHandle, DWORD dwDataType, BYTE *pBuffer,DWORD dwBufSize,void* dwUser) {printf("pyd---(private_v30)Get data,the size is %ld,%d.\n", time(NULL), dwBufSize);switch (dwDataType) {case NET_DVR_SYSHEAD: //系统头printf("NET_DVR_SYSHEAD data,the size is %ld,%d.\n", time(NULL), dwBufSize);break; case NET_DVR_STREAMDATA: //码流数据if (dwBufSize > 0) {printf("NET_DVR_STREAMDATA data,the size is %ld,%d.\n", time(NULL), dwBufSize);}break; default: //其他数据printf("Other data,the size is %ld,%d.\n", time(NULL), dwBufSize);break;      }
}int Demo_GetStream_V30(LONG lUserID) {long lRealPlayHandle;NET_DVR_PREVIEWINFO struPlayInfo = {0};struPlayInfo.hPlayWnd     = 0;  // 仅取流不解码。这是Linux写法,Windows写法是struPlayInfo.hPlayWnd = NULL;struPlayInfo.lChannel     = 33; // 通道号struPlayInfo.dwStreamType = 0;  // 0- 主码流,1-子码流,2-码流3,3-码流4,以此类推struPlayInfo.dwLinkMode   = 0;  // 0- TCP方式,1- UDP方式,2- 多播方式,3- RTP方式,4-RTP/RTSP,5-RSTP/HTTPstruPlayInfo.bBlocked     = 1;  // 0- 非阻塞取流,1- 阻塞取流//struPlayInfo.dwDisplayBufNum = 1;lRealPlayHandle = NET_DVR_RealPlay_V40(lUserID, &struPlayInfo, g_RealDataCallBack_V30, NULL); // NET_DVR_RealPlay_V40 实时预览(支持多码流)。//lRealPlayHandle = NET_DVR_RealPlay_V30(lUserID, &ClientInfo, NULL, NULL, 0); // NET_DVR_RealPlay_V30 实时预览。if (lRealPlayHandle < 0) {printf("NET_DVR_RealPlay_V40 error, %d\n", NET_DVR_GetLastError());return HPR_ERROR;}cout << "取流成功!" << endl;sleep(5); // 取流时间长度 秒NET_DVR_StopRealPlay(lRealPlayHandle); // 停止取流return HPR_OK;
}

说明:

  • 例子使用33号通道
  • Linux系统不支持软解码功能(仅Windows版本支持),因此需要将窗口句柄传NULL,设置回调函数,只取流不解码。
  • 设备网络SDK开发使用手册 - 预览录像抓图模块流程

##方式二##:预览接口NET_DVR_RealPlay_V40中预览参数的播放窗口句柄(hPlayWnd)可以设置为空值,直接设置回调函数,或者调用预览接口之后,通过NET_DVR_SetRealDataCallBack、NET_DVR_SetStandardDataCallBack设置回调函数,回调获取实时流数据(前两个接口设置的回调获取的是PS封装的码流,后者获取的是标准RTP封装的码流)之后用户后续自己处理,比如二进制流方式写入文件保存成录像或者调用播放库解码显示等操作。

3. 编译、运行

编译运行操作见概述中提到的《海康威视SDK控制台程序consoleDemo》一文。

在菜单中选择1,运行结果:

在这里我们获取到了码流,后续我们将码流保存为视频文件。

海康威视SDK控制台程序consoleDemo获取码流相关推荐

  1. 海康威视SDK控制台程序consoleDemo将实时码流保存为视频文件mp4

    陈拓 2021/08/28-2020/08/29 1. 概述 在<海康威视SDK控制台程序consoleDemo> https://zhuanlan.zhihu.com/p/4039038 ...

  2. 海康威视SDK控制台程序consoleDemo获取视频通道参数

    陈拓 2021/08/27-2020/08/27 1. 概述 在<海康威视SDK控制台程序consoleDemo> https://zhuanlan.zhihu.com/p/4039038 ...

  3. 海康威视SDK控制台程序consoleDemo

    陈拓 2021/08/10-2020/08/10 1. 下载海康威视SDK 见<海康威视SDK实例QtDemo显示NVR视频窗口(Linux+Qt)> https://zhuanlan.z ...

  4. python调用海康威视sdk库_HikVision SDK: C++ 至 Python

    海康威视(HikVision)在视频解决方案的地位毋庸置疑,起码属于国内业界顶尖水平.选择他家设备主要有两个原因:首要是因为他家产品贵,这确实是选择的首要原因(毕竟经费是--咳,打住):另一个重要原因 ...

  5. input层级高 小程序_获客、引流成本越来越高?开发小程序:低成本获客、引流...

    在最近几年时间中,各行各业都有不少企业.商家反应:获客成本越来越高.对此,小编的建议是:去开发一个微信小程序.这是为什么?下面将让带着丰富小程序开发以及运营经验的,来自上海数字商圈的产品经理,给大家做 ...

  6. java对接海康威视SDk实现红外DL/T抓图

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.要获取的图片样式 二.实现步骤 1.导入海康威视的SDK 2.文件导入 3.代码实现 (1) main方法 (2) ...

  7. delphi 类的写法 和 控制台程序的制作---深入Delphi编程

    刚刚接触的Delphi的朋友,可能最感兴趣的就是它丰富.强大的VCL(可视化构件库).仅仅向窗体上扔几个构件,甚至不用动手写代码,就能很容易地做出一个有实用价值的程序,真是令人激动.但是,VCL只是D ...

  8. QT开发小计:五、引入海康威视SDK开发视频监控系统环境搭建步骤及代码示例

    1.新建项目: 标题 2.修改项目配置文件 .pro 增加内容: 3.导入头文件(*.h) 项目目录,新建文件夹 [include],从海康SDK把头文件拷出来 4.导入静态链接库文件(*.lib) ...

  9. 使用VSCode调试C#控制台程序

    转载自: http://www.cnblogs.com/lxhbky/p/6673230.html http://www.cnblogs.com/lxhbky/p/6692065.html 一.环境安 ...

最新文章

  1. 细讲 | Attention Is All You Need
  2. 微信公众平台操作获取token类
  3. Application Virtualization 4.5 部署之(三)(
  4. 易创课堂成都站给你寄来一包干货,请注意查收
  5. KMP算法----java实现
  6. PAT甲级1002 多项式相加
  7. 设置google浏览器为黑色底色
  8. outlook设置京东邮箱
  9. c 语言除法运算,C 语言简单加减乘除运算
  10. Highcharts 操作series 的data里的数据
  11. 2021年秋招面经:上海禾赛提前批(FPGA设计)
  12. 【浏览器】浏览器安全
  13. qt线程如何接收linux信号,Linux-Qt使用QThread多线程isRunning标志量问题
  14. windows日志查看与清理
  15. 二十年架构师整理出的Java学习路线,学完年薪百万
  16. python OpenCV:绘制一个圆形图片
  17. 失业三星期:我寻找第二份编程工作之路
  18. centos查看端口占用情况
  19. 如何准备毕业论文写作——计算机毕业设计
  20. 黄聪:【转】C# 对称加密解密算法

热门文章

  1. 国产61850(CMS)协议与国际61850(MMS)协议有什么区别?
  2. ArcGIS提取面状道路中心线
  3. 整合基于MQL的EA交易和数据库 (SQL SERVER, .NET 和 C#)
  4. 使用tinify批量压缩图片
  5. java中如何统计字符出现的次数
  6. 004测试用例(4)
  7. 【附源码】Java计算机毕业设计网上宠物店预约系统(程序+LW+部署)
  8. Android对接科大讯飞AIUI语音转文字装置(魔飞)串口开发
  9. Elasticsearch的原理详解和使用
  10. 移动信号最好的服务器,三大运营商哪家的“信号”最好?真实体验分析