一、demo运行
问题:demo运行报错
解决办法:
1.将项目调成release模式
2.用真机测试
二、sdk运行
集成步骤:
1.将hcnetsdk.h、libAudioEngine_64.a、libcrypto.a、libHCCore.a、libHCNetSDK.a、libPlayCtrl.a、libssl.a、libSystemTransform.a 这八个文件导入项目中
2.在Targets ->Build Phases->Link Binary With Libraries 中导入一下显示的库文件
3.Targets ->Build Settings->Enable Bitcode 选择NO,如下图
4.头文件是C++语法的,所以程序中凡是有包含这个头文件的文件,后缀都要改成.mm
5.Architectures选择Standard(armv7,arm64),Architectures选择Standard(armv7,arm64)
6.Apple LLVMxxx-Language-C++如果选择C++11也可以支持,但是需要引入libstdc++.6.0.9.tbd的库。
7.我们IOS SDK是不用ARC的,如果程序工程启用ARC,所有指针类型的参数需要用(__bridge void*)强制转换一下。
8.使用DeviceInfo.h、DeviceInfo.m、IOSPlayM4.h、MobilePlaySDKInterface.h、Preview.h、Preview.mm文件
9.Preview.mm两个报错
(1)问题:Assigning to 'HWND' (aka 'void *') from incompatible type 'UIView *__strong’
解决办法: struPreviewInfo.hPlayWnd=pView; 改成 struPreviewInfo.hPlayWnd= (__bridgeHWND)pView;
(2)问题No matching function for call to 'PlayM4_Play'
解决办法:
if(!PlayM4_Play(pHandle->iPlayPort,pHandle->pView)) 改为if(!PlayM4_Play(pHandle->iPlayPort,(__bridgePLAYM4_HWND)pHandle->pView))
这样就可以运行了,
使用sdk方法使用顺序
1.初始化
BOOLbRet =NET_DVR_Init();
if(!bRet)
{
NSLog(@"初始化失败!");
}
2.登录(需要参数:ip、端口号、用户名、密码,用户名、密码是激活摄像机时设置的)
NET_DVR_DEVICEINFO_V30logindeviceInfo = {0};//登录返回数据
m_lUserID=NET_DVR_Login_V30((char*)[deviceInfo.chDeviceAddrUTF8String],
deviceInfo.nDevicePort,
(char*)[deviceInfo.chLoginNamecStringUsingEncoding:enc],
(char*)[deviceInfo.chPassWordUTF8String],
&logindeviceInfo);
3.播放(需要参数:userID、&struPreviewInfo,这两个值都是登录成功之后返回的)
g_structHandle[iIndex].iPreviewID=NET_DVR_RealPlay_V40(iUserID, &struPreviewInfo,NULL,NULL);
4.暂停播放(需要参数:预览句柄)
NET_DVR_StopRealPlay(g_structHandle[iIndex].iPreviewID)