计算机学习笔记4

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

内部文件

海康网络摄像头视频预览测试程序

(2015.8.3——2015.8.7)

<智慧云联信息技术(北京)有限公司>

版本

编制者王琳珂编制日期2015-08-07 审核者审核日期

批准者批准日期

签字日期

2015年08月07日

目录

1. 预览画面叠加字符和图片 (3)

1.1 接口NET_DVR_RigisterDrawFun定义 (3)

1.2 功能实现程序 (3)

2.软解码显示预览 (4)

2.1 播放库SDK (4)

2.2 测试程序 (5)

2.3 实现结果 (6)

3.下一步工作 (7)

1. 预览画面叠加字符和图片

1.1 接口NET_DVR_RigisterDrawFun定义

该接口主要完成注册回调函数,获得当前表面的device context。用户可以在这个DC上画图或写字,就好像在窗口的客户区DC上绘图,但这个DC不是窗口客户区的DC,而是播放器DirectDraw里的Off-Screen表面的DC。

如果调用接口NET_DVR_RealPlay_V30进行预览,参数bBlocked建议置1(TRUE),这样预览接口返回成功即可该调用该接口。如果参数bBlocked置0,预览接口返回成功但图像还未正常显示,该接口会返回失败,获取错误号为12(调用次序错误)。

BOOL NET_DVR_RigisterDrawFun(

LONG lRealHandle,

fDrawFun cbDrawFun,

DWORD dwUser

);

Parameters:

lRealHandle [in] NET_DVR_RealPlay或NET_DVR_RealPlay_V30的返回值

cbDrawFun [in] 画图回调函数

dwUser [in] 用户数据

Callback Function:

typedef void(CALLBACK *fDrawFun)(

LONG lRealHandle,

HDC hDc,

DWORD dwUser

);

Callback Function Parameters:

lRealHandle [out] 当前的预览句柄

hDc [out] 画图DC

dwUser [out] 用户数据

Return Values:

TRUE表示成功,FALSE表示失败。获取错误码调用NET_DVR_GetLastError.

1.2 功能实现程序

//回调函数声明

void CALLBACK g_cbDrawFun(LONG, HDC, DWORD);

//回调函数定义

void CALLBACK g_cbDrawFun(LONG lRealPlayHandle,HDC hDC,DWORD dwUser) {

TextOut(hDC, 400, 400, _T("人脸识别"),4);

Rectangle(hDC,100,200,300,400);

return ;

}

//预览画面叠加字符和图像,实现语句写在启动预览函数RealPlay()中

if(!NET_DVR_RigisterDrawFun(lRealPlayHandle,g_cbDrawFun,NULL))

{

TextOut(hDC, 200, 200, _T("NET_DVR_RigisterDrawFun error"),29);

int i=NET_DVR_GetLastError();

NET_DVR_Logout(lUserID);

NET_DVR_Cleanup();

return ;

}

之前的工作中已有详细的文字和方框图添加步骤。

2.软解码显示预览

通过设置预览接口NET_DVR_RealPlay_V40中预览参数的播放窗口句柄为空值,并通过调用捕获数据的接口,即设置NET_DVR_RealPlay_V40接口中的回调函数,获取码流数据进行后续解码播放处理。用户可以自行处理回调得到的码流数据,下面是软解码显示预览。

2.1 播放库SDK

播放库 SDK是嵌入式网络硬盘录像机、视频服务器、IP 设备的配套产品的播放相关的二次开发包,适用于数据流的解码与播放。

播放库 SDK 主要功能:

主要用于实时码流预览,录像文件回放,播放控制如:暂停、单帧前进、单帧后退;获取码流基本信息,如文件索引、解码帧信息,分辨率、帧率;支持 JPG 和 BMP 两种形式下的播放截图。

使用播放库SDK需要添加头文件plaympeg4.h和静态链接库PlayCtrl.lib

#include"plaympeg4.h"

#pragma comment(lib,"PlayCtrl.lib")

2.2 测试程序

//全局变量声明

LONG lPort; //全局的播放库port号

//回调函数声明

void CALLBACK g_RealDataCallBack_V30(LONG , DWORD, BYTE*,DWORD,void* ); //回调函数实现

void CALLBACK g_RealDataCallBack_V30(LONG lRealHandle, DWORD dwDataType, BYTE *pBuffer,DWORD dwBufSize,void* dwUser)

{

switch (dwDataType)

{

case NET_DVR_SYSHEAD: //系统头

if (!PlayM4_GetPort(&lPort)) //获取播放库未使用的通道号

{

break;

}

//m_iPort = lPort; //第一次回调的是系统头,将获取的播放库port号赋值给全局port,下次回调数据时即使用此port号播放

if (dwBufSize > 0)

{

if (!PlayM4_SetStreamOpenMode(lPort, STREAME_REALTIME)) //设置实时流播放模式

{

break;

}

if (!PlayM4_OpenStream(lPort, pBuffer, dwBufSize, 1024*1024)) //打开流接口

{

break;

}

if (!PlayM4_Play(lPort, hWnd)) //播放开始

{

break;

}

}

break;

case NET_DVR_STREAMDATA: //码流数据

if (dwBufSize > 0 && lPort != -1)

相关文档
最新文档