海康sdk二次开发的一个延时问题

hurryboylqs 2017-10-29 10:38:14
因为自己的场景对视频延时有要求,不能超过200ms,我用hk的例子改造了下,分两种情况,一种是直接传递窗口句柄给sdk然后让他自己显示;另一种是用回调方式,在回调时还是传递窗口句柄给sdk把视频显示出来,两种方式我都没用加入自己的一行代码,全部都用sdk提供的,而方式二就会产生大约400ms左右的延迟,方式一能维持在200ms以内(基本符合要求),这非常纳闷了,百思不得其解,求做过的大佬或者海康技术解答下(验证的时候可以把我的代码拷贝改下ip和密码,然后开启在线计时器,再用摄像头对着计时器,用手机把图拍下来就可以看到效果)。

方式一:

#include "stdafx.h"
#include <cstdio>
#include <cstring>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
#include "plaympeg4.h"
#include <time.h>
#define USECOLOR 1
using namespace std;


//--------------------------------------------
int iPicNum = 0;//Set channel NO.
LONG nPort = -1;
HWND hWnd = NULL;

void CALLBACK g_ExceptionCallBack(DWORD dwType, LONG lUserID, LONG lHandle, void *pUser)
{
char tempbuf[256] = { 0 };
switch (dwType)
{
case EXCEPTION_RECONNECT: //预览时重连
printf("----------reconnect--------%d\n", time(NULL));
break;
default:
break;
}
}

void main() {

//---------------------------------------
// 初始化
NET_DVR_Init();
//设置连接时间与重连时间
NET_DVR_SetConnectTime(2000, 1);
NET_DVR_SetReconnect(10000, true);
// 注册设备
LONG lUserID;
NET_DVR_DEVICEINFO_V30 struDeviceInfo;
lUserID = NET_DVR_Login_V30("192.168.1.212", 8000, "admin", "streamer2017", &struDeviceInfo);
if (lUserID < 0)
{
printf("Login error, %d\n", NET_DVR_GetLastError());
NET_DVR_Cleanup();
return;
}

//---------------------------------------
//设置异常消息回调函数
NET_DVR_SetExceptionCallBack_V30(0, NULL, g_ExceptionCallBack, NULL);

//---------------------------------------
//启动预览并设置回调数据流
NET_DVR_CLIENTINFO ClientInfo;
ClientInfo.lChannel = 1; //Channel number 设备通道号
ClientInfo.hPlayWnd = GetConsoleWindow(); //窗口为空,设备SDK不解码只取流
ClientInfo.lLinkMode = 0; //Main Stream
ClientInfo.sMultiCastIP = NULL;

LONG lRealPlayHandle;
lRealPlayHandle = NET_DVR_RealPlay_V30(lUserID, &ClientInfo, NULL, NULL, TRUE);
if (lRealPlayHandle<0)
{
printf("NET_DVR_RealPlay_V30 failed! Error number: %d\n", NET_DVR_GetLastError());
return;
}

Sleep(-1);

//---------------------------------------
//关闭预览
if (!NET_DVR_StopRealPlay(lRealPlayHandle))
{
printf("NET_DVR_StopRealPlay error! Error number: %d\n", NET_DVR_GetLastError());
return;
}
//注销用户
NET_DVR_Logout(lUserID);
NET_DVR_Cleanup();

return;
}

方式二:

#include "stdafx.h"
#include <cstdio>
#include <cstring>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
#include "plaympeg4.h"
#include <time.h>
#define USECOLOR 1
using namespace std;


//--------------------------------------------
int iPicNum = 0;//Set channel NO.
LONG nPort = -1;
HWND hWnd = NULL;

void CALLBACK DecCBFun(long nPort, char * pBuf, long nSize, FRAME_INFO * pFrameInfo, long nReserved1, long nReserved2)
{

}


///实时流回调
void CALLBACK fRealDataCallBack(LONG lRealHandle, DWORD dwDataType, BYTE *pBuffer, DWORD dwBufSize, void *pUser)
{
DWORD dRet;
switch (dwDataType)
{
case NET_DVR_SYSHEAD: //系统头
if (!PlayM4_GetPort(&nPort)) //获取播放库未使用的通道号
{
break;
}
if (dwBufSize > 0)
{
if (!PlayM4_OpenStream(nPort, pBuffer, dwBufSize, 1024 * 1024))
{
dRet = PlayM4_GetLastError(nPort);
break;
}

//打开视频解码
hWnd = GetConsoleWindow();
if (!PlayM4_Play(nPort, hWnd))
{
dRet = PlayM4_GetLastError(nPort);
break;
}
}
break;

case NET_DVR_STREAMDATA: //码流数据
if (dwBufSize > 0 && nPort != -1)
{
BOOL inData = PlayM4_InputData(nPort, pBuffer, dwBufSize);
while (!inData)
{
Sleep(10);
inData = PlayM4_InputData(nPort, pBuffer, dwBufSize);
OutputDebugString(L"PlayM4_InputData failed \n");
}
}
break;
}
}

void CALLBACK g_ExceptionCallBack(DWORD dwType, LONG lUserID, LONG lHandle, void *pUser)
{
char tempbuf[256] = { 0 };
switch (dwType)
{
case EXCEPTION_RECONNECT: //预览时重连
printf("----------reconnect--------%d\n", time(NULL));
break;
default:
break;
}
}

void main() {

//---------------------------------------
// 初始化
NET_DVR_Init();
//设置连接时间与重连时间
NET_DVR_SetConnectTime(2000, 1);
NET_DVR_SetReconnect(10000, true);
// 注册设备
LONG lUserID;
NET_DVR_DEVICEINFO_V30 struDeviceInfo;
lUserID = NET_DVR_Login_V30("192.168.1.212", 8000, "admin", "streamer2017", &struDeviceInfo);
if (lUserID < 0)
{
printf("Login error, %d\n", NET_DVR_GetLastError());
NET_DVR_Cleanup();
return;
}

//---------------------------------------
//设置异常消息回调函数
NET_DVR_SetExceptionCallBack_V30(0, NULL, g_ExceptionCallBack, NULL);

//---------------------------------------
//启动预览并设置回调数据流
NET_DVR_CLIENTINFO ClientInfo;
ClientInfo.lChannel = 1; //Channel number 设备通道号
ClientInfo.hPlayWnd = NULL; //窗口为空,设备SDK不解码只取流
ClientInfo.lLinkMode = 0; //Main Stream
ClientInfo.sMultiCastIP = NULL;

LONG lRealPlayHandle;
lRealPlayHandle = NET_DVR_RealPlay_V30(lUserID, &ClientInfo, fRealDataCallBack, NULL, TRUE);
if (lRealPlayHandle<0)
{
printf("NET_DVR_RealPlay_V30 failed! Error number: %d\n", NET_DVR_GetLastError());
return;
}

Sleep(-1);

//---------------------------------------
//关闭预览
if (!NET_DVR_StopRealPlay(lRealPlayHandle))
{
printf("NET_DVR_StopRealPlay error! Error number: %d\n", NET_DVR_GetLastError());
return;
}
//注销用户
NET_DVR_Logout(lUserID);
NET_DVR_Cleanup();

return;
}
...全文
4156 31 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
Vegetebird 2020-10-12
  • 打赏
  • 举报
回复
大佬,解码库我也想要一份,万分感谢。邮箱:781256005@qq.com
dutong0321 2019-10-08
  • 打赏
  • 举报
回复
引用 17 楼 一步一光年 的回复:
[quote=引用 16 楼 hurryboylqs 的回复:] [quote=引用 15 楼 u014457656 的回复:] [quote=引用 9 楼 hurryboylqs 的回复:] [quote=引用 8 楼 u014457656 的回复:] [quote=引用 7 楼 hurryboylqs 的回复:] [quote=引用 6 楼 u014457656 的回复:] 海康的解码库内部有时间控制的

PLAYM4_API BOOL __stdcall	PlayM4_SetStreamOpenMode(LONG nPort,DWORD nMode);
使用这个函数设置下, 如果不行就得联系海康的厂家, 我是使用的海康的一个单独的解码库, 只有yuv数据, 需要自己控制显示
PlayM4_SetStreamOpenMode这个函数也调用过,第二个参数传的是REALTIME,也还是一样 你有试过你的延时有多少吗[/quote] 之前项目用的是STREAM_FILE, 但是还是不满足需求, 后来跟厂家要了一个单独解码的库, 其他所有都自己实现, 刚才测试了下, 用厂家给的单独解码库跟你的方式一显示差不多, 肉眼看不出来[/quote] 他们的sdk里没带有这个解码库吗?不就是PlayM4_XXXX这一套函数吗[/quote] 我用的是一个单独的解码库, 不是playm4_xxx这一套, 是HK_STD_xxx, 只负责解码, 速度很快[/quote] 哦,能传我一份库的代码吗?[/quote] 邮箱[/quote]大牛,解码库我也想要一份,万分感谢。邮箱:897312167@qq.com
哎呦饿 2017-12-26
  • 打赏
  • 举报
回复
楼主我也遇到了这个问题,您最后怎么解决的?谢谢
ImgLearning 2017-12-25
  • 打赏
  • 举报
回复
单独解码的也发我一份呗 790140114@qq.com 谢谢了
涛游海 2017-12-04
  • 打赏
  • 举报
回复
大牛,解码库我也想要一份,万分感谢。邮箱:281810672@qq.com
henry_bj 2017-11-27
  • 打赏
  • 举报
回复
引用 17 楼 u014457656 的回复:
[quote=引用 16 楼 hurryboylqs 的回复:] [quote=引用 15 楼 u014457656 的回复:] [quote=引用 9 楼 hurryboylqs 的回复:] [quote=引用 8 楼 u014457656 的回复:] [quote=引用 7 楼 hurryboylqs 的回复:] [quote=引用 6 楼 u014457656 的回复:] 海康的解码库内部有时间控制的

PLAYM4_API BOOL __stdcall	PlayM4_SetStreamOpenMode(LONG nPort,DWORD nMode);
使用这个函数设置下, 如果不行就得联系海康的厂家, 我是使用的海康的一个单独的解码库, 只有yuv数据, 需要自己控制显示
PlayM4_SetStreamOpenMode这个函数也调用过,第二个参数传的是REALTIME,也还是一样 你有试过你的延时有多少吗[/quote] 之前项目用的是STREAM_FILE, 但是还是不满足需求, 后来跟厂家要了一个单独解码的库, 其他所有都自己实现, 刚才测试了下, 用厂家给的单独解码库跟你的方式一显示差不多, 肉眼看不出来[/quote] 他们的sdk里没带有这个解码库吗?不就是PlayM4_XXXX这一套函数吗[/quote] 我用的是一个单独的解码库, 不是playm4_xxx这一套, 是HK_STD_xxx, 只负责解码, 速度很快[/quote] 哦,能传我一份库的代码吗?[/quote] 邮箱[/quote] 大牛,能给我一份哪个解码库嘛?不胜感谢啊,正头疼延时的问题呢!63194901@qq.com
赵4老师 2017-11-16
  • 打赏
  • 举报
回复
写足够详细的日志到文件,每条日志前都带上精确到毫秒的时间戳。 辅助查找耗时操作到底在代码中哪一句。
hurryboylqs 2017-11-16
  • 打赏
  • 举报
回复
引用 24 楼 u014457656 的回复:
[quote=引用 22 楼 hurryboylqs 的回复:] [quote=引用 20 楼 u014457656 的回复:] 我不是用opencv显示, 是自己用ddshow或者direct3d显示, 你opencv显示代码也太麻烦了, 转了好几次, 浪费时间的地方太多了
显示的地方我改成用directdraw显示,依然是有很大延迟,数据过来感觉都挺快的,难道每次回调过来都是之前的老数据帧? 我把我的测试代码放资源里了,你那也有海康摄像头可以下载用vs2013编译看看,我总感觉是摄像头或者摄像头的配置问题 ,下载地址:http://download.csdn.net/download/hurryboylqs/10120918 [/quote] qq说吧, 我都测试了, 只不过把显示的代码去掉了[/quote] 谢谢,老兄的知道,ddraw显示确实快一些,下来我还是老实研究下yv12切割合并数据帧的问题,其实我捕获端不需要显示,我只需要切割合并视频帧就行
hurryboylqs 2017-11-16
  • 打赏
  • 举报
回复
引用 20 楼 u014457656 的回复:
我不是用opencv显示, 是自己用ddshow或者direct3d显示, 你opencv显示代码也太麻烦了, 转了好几次, 浪费时间的地方太多了
显示的地方我改成用directdraw显示,依然是有很大延迟,数据过来感觉都挺快的,难道每次回调过来都是之前的老数据帧? 我把我的测试代码放资源里了,你那也有海康摄像头可以下载用vs2013编译看看,我总感觉是摄像头或者摄像头的配置问题 ,下载地址:http://download.csdn.net/download/hurryboylqs/10120918
一步一光年 2017-11-16
  • 打赏
  • 举报
回复
引用 22 楼 hurryboylqs 的回复:
[quote=引用 20 楼 u014457656 的回复:] 我不是用opencv显示, 是自己用ddshow或者direct3d显示, 你opencv显示代码也太麻烦了, 转了好几次, 浪费时间的地方太多了
显示的地方我改成用directdraw显示,依然是有很大延迟,数据过来感觉都挺快的,难道每次回调过来都是之前的老数据帧? 我把我的测试代码放资源里了,你那也有海康摄像头可以下载用vs2013编译看看,我总感觉是摄像头或者摄像头的配置问题 ,下载地址:http://download.csdn.net/download/hurryboylqs/10120918 [/quote] qq说吧, 我都测试了, 只不过把显示的代码去掉了
一步一光年 2017-11-15
  • 打赏
  • 举报
回复
引用 19 楼 hurryboylqs 的回复:
[quote=引用 15 楼 u014457656 的回复:] [quote=引用 9 楼 hurryboylqs 的回复:] [quote=引用 8 楼 u014457656 的回复:] [quote=引用 7 楼 hurryboylqs 的回复:] [quote=引用 6 楼 u014457656 的回复:] 海康的解码库内部有时间控制的

PLAYM4_API BOOL __stdcall	PlayM4_SetStreamOpenMode(LONG nPort,DWORD nMode);
使用这个函数设置下, 如果不行就得联系海康的厂家, 我是使用的海康的一个单独的解码库, 只有yuv数据, 需要自己控制显示
PlayM4_SetStreamOpenMode这个函数也调用过,第二个参数传的是REALTIME,也还是一样 你有试过你的延时有多少吗[/quote] 之前项目用的是STREAM_FILE, 但是还是不满足需求, 后来跟厂家要了一个单独解码的库, 其他所有都自己实现, 刚才测试了下, 用厂家给的单独解码库跟你的方式一显示差不多, 肉眼看不出来[/quote] 他们的sdk里没带有这个解码库吗?不就是PlayM4_XXXX这一套函数吗[/quote] 我用的是一个单独的解码库, 不是playm4_xxx这一套, 是HK_STD_xxx, 只负责解码, 速度很快[/quote] 用了你给的这个方法,从解码yv12数据回调看,每帧数据间隔100毫秒左右,还是很快的,但实际上我用opencv显示出来的结果却是视频图像有严重的延迟,都不知道是不是什么设置问题?

void __stdcall callback_hik_decdata(STD_FRAME_INFO *pFrameInfo, void *pUser)
{
	if (pFrameInfo->dwFrameType == 1)
	{
		// 回调的yv12数据, 自己显示
		 int start = clock();
		IplImage* pImgYCrCb = cvCreateImage(cvSize(1280,720), 8, 3);
		yv12toYUV(pImgYCrCb->imageData, (char*)pFrameInfo->pFrameBuffer, 1280,720, pImgYCrCb->widthStep);//得到全部RGB图像
		IplImage* pImg = cvCreateImage(cvSize(1280,720), 8, 3);
		cvCvtColor(pImgYCrCb, pImg, CV_YCrCb2RGB);
		int end = clock();
		printf("time:%d\n",  start);
		cvShowImage("IPCamera", pImg);
		cvWaitKey(1);

		cvReleaseImage(&pImgYCrCb);
		cvReleaseImage(&pImg);
	}
}
[/quote] 我不是用opencv显示, 是自己用ddshow或者direct3d显示, 你opencv显示代码也太麻烦了, 转了好几次, 浪费时间的地方太多了
hurryboylqs 2017-11-15
  • 打赏
  • 举报
回复
引用 20 楼 u014457656 的回复:
我不是用opencv显示, 是自己用ddshow或者direct3d显示, 你opencv显示代码也太麻烦了, 转了好几次, 浪费时间的地方太多了
我打印过时间,opencv转换和显示的代码并不怎么耗时,只用了20毫秒左右,原因不在这,我总感觉摄像头推过来的数据是延迟的,晚上我再用directdraw显示看看,到时候贴出代码,你看下。
hurryboylqs 2017-11-14
  • 打赏
  • 举报
回复
引用 15 楼 u014457656 的回复:
[quote=引用 9 楼 hurryboylqs 的回复:]
[quote=引用 8 楼 u014457656 的回复:]
[quote=引用 7 楼 hurryboylqs 的回复:]
[quote=引用 6 楼 u014457656 的回复:]
海康的解码库内部有时间控制的

PLAYM4_API BOOL __stdcall PlayM4_SetStreamOpenMode(LONG nPort,DWORD nMode);

使用这个函数设置下, 如果不行就得联系海康的厂家, 我是使用的海康的一个单独的解码库, 只有yuv数据, 需要自己控制显示

PlayM4_SetStreamOpenMode这个函数也调用过,第二个参数传的是REALTIME,也还是一样
你有试过你的延时有多少吗[/quote]
之前项目用的是STREAM_FILE, 但是还是不满足需求, 后来跟厂家要了一个单独解码的库, 其他所有都自己实现, 刚才测试了下, 用厂家给的单独解码库跟你的方式一显示差不多, 肉眼看不出来[/quote]
他们的sdk里没带有这个解码库吗?不就是PlayM4_XXXX这一套函数吗[/quote]
我用的是一个单独的解码库, 不是playm4_xxx这一套, 是HK_STD_xxx, 只负责解码, 速度很快[/quote]
用了你给的这个方法,从解码yv12数据回调看,每帧数据间隔100毫秒左右,还是很快的,但实际上我用opencv显示出来的结果却是视频图像有严重的延迟,都不知道是不是什么设置问题?

void __stdcall callback_hik_decdata(STD_FRAME_INFO *pFrameInfo, void *pUser)
{
if (pFrameInfo->dwFrameType == 1)
{
// 回调的yv12数据, 自己显示
int start = clock();
IplImage* pImgYCrCb = cvCreateImage(cvSize(1280,720), 8, 3);
yv12toYUV(pImgYCrCb->imageData, (char*)pFrameInfo->pFrameBuffer, 1280,720, pImgYCrCb->widthStep);//得到全部RGB图像
IplImage* pImg = cvCreateImage(cvSize(1280,720), 8, 3);
cvCvtColor(pImgYCrCb, pImg, CV_YCrCb2RGB);
int end = clock();
printf("time:%d\n", start);
cvShowImage("IPCamera", pImg);
cvWaitKey(1);

cvReleaseImage(&pImgYCrCb);
cvReleaseImage(&pImg);
}
}


hurryboylqs 2017-11-10
  • 打赏
  • 举报
回复
引用 17 楼 u014457656 的回复:
[quote=引用 16 楼 hurryboylqs 的回复:] [quote=引用 15 楼 u014457656 的回复:] [quote=引用 9 楼 hurryboylqs 的回复:] [quote=引用 8 楼 u014457656 的回复:] [quote=引用 7 楼 hurryboylqs 的回复:] [quote=引用 6 楼 u014457656 的回复:] 海康的解码库内部有时间控制的

PLAYM4_API BOOL __stdcall	PlayM4_SetStreamOpenMode(LONG nPort,DWORD nMode);
使用这个函数设置下, 如果不行就得联系海康的厂家, 我是使用的海康的一个单独的解码库, 只有yuv数据, 需要自己控制显示
PlayM4_SetStreamOpenMode这个函数也调用过,第二个参数传的是REALTIME,也还是一样 你有试过你的延时有多少吗[/quote] 之前项目用的是STREAM_FILE, 但是还是不满足需求, 后来跟厂家要了一个单独解码的库, 其他所有都自己实现, 刚才测试了下, 用厂家给的单独解码库跟你的方式一显示差不多, 肉眼看不出来[/quote] 他们的sdk里没带有这个解码库吗?不就是PlayM4_XXXX这一套函数吗[/quote] 我用的是一个单独的解码库, 不是playm4_xxx这一套, 是HK_STD_xxx, 只负责解码, 速度很快[/quote] 哦,能传我一份库的代码吗?[/quote] 邮箱[/quote] 279641432@qq.com 最好调用的demo例子也发一下,谢谢
一步一光年 2017-11-09
  • 打赏
  • 举报
回复
引用 16 楼 hurryboylqs 的回复:
[quote=引用 15 楼 u014457656 的回复:] [quote=引用 9 楼 hurryboylqs 的回复:] [quote=引用 8 楼 u014457656 的回复:] [quote=引用 7 楼 hurryboylqs 的回复:] [quote=引用 6 楼 u014457656 的回复:] 海康的解码库内部有时间控制的

PLAYM4_API BOOL __stdcall	PlayM4_SetStreamOpenMode(LONG nPort,DWORD nMode);
使用这个函数设置下, 如果不行就得联系海康的厂家, 我是使用的海康的一个单独的解码库, 只有yuv数据, 需要自己控制显示
PlayM4_SetStreamOpenMode这个函数也调用过,第二个参数传的是REALTIME,也还是一样 你有试过你的延时有多少吗[/quote] 之前项目用的是STREAM_FILE, 但是还是不满足需求, 后来跟厂家要了一个单独解码的库, 其他所有都自己实现, 刚才测试了下, 用厂家给的单独解码库跟你的方式一显示差不多, 肉眼看不出来[/quote] 他们的sdk里没带有这个解码库吗?不就是PlayM4_XXXX这一套函数吗[/quote] 我用的是一个单独的解码库, 不是playm4_xxx这一套, 是HK_STD_xxx, 只负责解码, 速度很快[/quote] 哦,能传我一份库的代码吗?[/quote] 邮箱
hurryboylqs 2017-11-09
  • 打赏
  • 举报
回复
引用 15 楼 u014457656 的回复:
[quote=引用 9 楼 hurryboylqs 的回复:] [quote=引用 8 楼 u014457656 的回复:] [quote=引用 7 楼 hurryboylqs 的回复:] [quote=引用 6 楼 u014457656 的回复:] 海康的解码库内部有时间控制的

PLAYM4_API BOOL __stdcall	PlayM4_SetStreamOpenMode(LONG nPort,DWORD nMode);
使用这个函数设置下, 如果不行就得联系海康的厂家, 我是使用的海康的一个单独的解码库, 只有yuv数据, 需要自己控制显示
PlayM4_SetStreamOpenMode这个函数也调用过,第二个参数传的是REALTIME,也还是一样 你有试过你的延时有多少吗[/quote] 之前项目用的是STREAM_FILE, 但是还是不满足需求, 后来跟厂家要了一个单独解码的库, 其他所有都自己实现, 刚才测试了下, 用厂家给的单独解码库跟你的方式一显示差不多, 肉眼看不出来[/quote] 他们的sdk里没带有这个解码库吗?不就是PlayM4_XXXX这一套函数吗[/quote] 我用的是一个单独的解码库, 不是playm4_xxx这一套, 是HK_STD_xxx, 只负责解码, 速度很快[/quote] 哦,能传我一份库的代码吗?
一步一光年 2017-11-08
  • 打赏
  • 举报
回复
引用 9 楼 hurryboylqs 的回复:
[quote=引用 8 楼 u014457656 的回复:] [quote=引用 7 楼 hurryboylqs 的回复:] [quote=引用 6 楼 u014457656 的回复:] 海康的解码库内部有时间控制的

PLAYM4_API BOOL __stdcall	PlayM4_SetStreamOpenMode(LONG nPort,DWORD nMode);
使用这个函数设置下, 如果不行就得联系海康的厂家, 我是使用的海康的一个单独的解码库, 只有yuv数据, 需要自己控制显示
PlayM4_SetStreamOpenMode这个函数也调用过,第二个参数传的是REALTIME,也还是一样 你有试过你的延时有多少吗[/quote] 之前项目用的是STREAM_FILE, 但是还是不满足需求, 后来跟厂家要了一个单独解码的库, 其他所有都自己实现, 刚才测试了下, 用厂家给的单独解码库跟你的方式一显示差不多, 肉眼看不出来[/quote] 他们的sdk里没带有这个解码库吗?不就是PlayM4_XXXX这一套函数吗[/quote] 我用的是一个单独的解码库, 不是playm4_xxx这一套, 是HK_STD_xxx, 只负责解码, 速度很快
hurryboylqs 2017-11-03
  • 打赏
  • 举报
回复
引用 10 楼 oyljerry 的回复:
估计要看SDK内部的实现了,是不是回调的方式,SDK做了一些额外的处理等
估计是,因为不用回调函数的方式来播放是可以符合实时性要求的
hurryboylqs 2017-11-03
  • 打赏
  • 举报
回复
引用 13 楼 brk1985 的回复:
PlayM4_GetPort(&nPort)) PlayM4_OpenStream 这2个函数应该只需要调用一次,不需要每次调用
本来就是只调用一次的呀 switch (dwDataType) { case NET_DVR_SYSHEAD: //系统头 看到这个switch case语句了么,系统头只会进来一次
brk1985 2017-11-03
  • 打赏
  • 举报
回复
PlayM4_GetPort(&nPort)) PlayM4_OpenStream 这2个函数应该只需要调用一次,不需要每次调用
加载更多回复(11)

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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